PDA

View Full Version : [C++] Opengl & Illuminazione


Gio Games
25-03-2008, 09:40
Salve a tutti. Dopo un lungo stop nella programmazione con OpenGl (facendo sempre cose semplici) mi è tornata voglia di cimentarmi e ora ho un problema.

Ho una sfera che dovrebbe essere il sole, quindi deve proiettar luce alle sfere che gli girano intorno. Per la luce nessun problema, le sfere che girano sono perfettamente illuminate.
Il problema sta nel fatto che il Sole rimane scurissimo in quanto la luce viene proiettata praticamente dal suo nucleo quindi la superficie rimane in ombra.
Non so se sono riuscito a spiegarmi.

Non esiste un modo per far sì che una fonte di luce sia luminosissima (o meglio: il modo esiste di sicuro :D, qual'è questo modo?) ?

Grazie a tutti fin da ora.

banryu79
25-03-2008, 11:50
Rendere trasparente la superficie della sfera?

Tommo
25-03-2008, 11:53
Mettere un materiale sempre bianco alla suddetta sfera?

banryu79
25-03-2008, 11:55
Mettere un materiale sempre bianco alla suddetta sfera?

Non vorrei dire una cavolata ma se è "attiva" l'illuminazione del materiale, il materiale stesso non deve essere illuminato?

fek
25-03-2008, 12:05
Salve a tutti. Dopo un lungo stop nella programmazione con OpenGl (facendo sempre cose semplici) mi è tornata voglia di cimentarmi e ora ho un problema.

Ho una sfera che dovrebbe essere il sole, quindi deve proiettar luce alle sfere che gli girano intorno. Per la luce nessun problema, le sfere che girano sono perfettamente illuminate.
Il problema sta nel fatto che il Sole rimane scurissimo in quanto la luce viene proiettata praticamente dal suo nucleo quindi la superficie rimane in ombra.
Non so se sono riuscito a spiegarmi.

Non esiste un modo per far sì che una fonte di luce sia luminosissima (o meglio: il modo esiste di sicuro :D, qual'è questo modo?) ?

Grazie a tutti fin da ora.

Rendi il materiale Emissivo, ma non lo fai "illuminare" dalla luce. Gli assegni tu il colore che vuoi visto che la sua posizione e' fissa rispetto alla sorgente luminosa. Logicamente e' corretto visto che idealmente quell'oggetto e' la sorgente di luce che per motivi pratici puoi rappresentare solo con una sorgente puntiforme "al suo interno".

Ricorda: if it looks good it's good enough.

Gio Games
25-03-2008, 12:57
Ok grazie a tutti delle risposte.

Non vorrei sbagliarmi ma rendendo trasparente la superficie della sfera credo sorga un problema: ovvero gli oggetti posti dietro di essa diventeranno poi visibili. Sbaglio vero?

Come faccio a rendere il materiale emissivo e non farlo illuminare?

Grazie ancora

fek
25-03-2008, 14:48
Ok grazie a tutti delle risposte.

Non vorrei sbagliarmi ma rendendo trasparente la superficie della sfera credo sorga un problema: ovvero gli oggetti posti dietro di essa diventeranno poi visibili. Sbaglio vero?

Come faccio a rendere il materiale emissivo e non farlo illuminare?

Grazie ancora

Dipende da come stai renderizzando l'oggetto. Se la pipeline fissa di OpenGL, se ricordo bene, si tratta di smanettare sulle proprieta' del materiale. Ad esempio metti il diffuse e specular colour a nero.

Vado a memoria su cose che ho fatto dieci anni fa quindi occhio a eventuali errori: non uso fixed pipe da anni, ormai si fa tutto via vertex e pixel shader (vertex e fragment program in OGL).

Gio Games
25-03-2008, 19:04
Grazie dei suggerimenti. Nei prossimi giorni cercherò di applicare tutti i tuoi consigli.
Lo so sono lento :D: è che non voglio rimanere indietro nello studio di altre discipline.

Grazie ancora