Illuminazione ambientale (Direct3D 9)
L'illuminazione ambientale fornisce un'illuminazione costante per una scena. Illumina tutti i vertici dell'oggetto allo stesso modo perché non dipende da altri fattori di illuminazione, ad esempio le normali dei vertici, la direzione della luce, la posizione della luce, l'intervallo o l'attenuazione. È il tipo di illuminazione più veloce, ma produce i risultati meno realistici. Direct3D contiene una singola proprietà globale della luce ambientale che è possibile usare senza creare alcuna luce. In alternativa, è possibile impostare qualsiasi oggetto luce per fornire l'illuminazione ambientale. L'illuminazione ambientale per una scena è descritta dall'equazione seguente.
Illuminazione ambientale = Cₐ*[Gₐ + sum(Atteni*Spoti*Lai)]
Dove:
Parametro | Valore predefinito | Digitare | Descrizione |
---|---|---|---|
Cₐ | (0,0,0,0) | D3DCOLORVALUE | Colore ambiente del materiale |
Gₐ | (0,0,0,0) | D3DCOLORVALUE | Colore ambientale universale |
Atteni | (0,0,0,0) | D3DCOLORVALUE | Attenuazione della luce dell'ith light. Consultare Attenuazione e Fattore di illuminazione (Direct3D 9). |
Spoti | (0,0,0,0) | D3DVECTOR | Fattore spotlight della luce ith. Vedere Attenuazione e Fattore di illuminazione (Direct3D 9). |
somma | N/D | N/D | Somma della luce ambientale |
Lai | (0,0,0,0) | D3DVECTOR | Colore ambientale chiaro dell'ith light |
Il valore di Cₐ è uno dei seguenti:
- vertex color1, se AMBIENTMATERIALSOURCE = D3DMCS_COLOR1 e il primo colore del vertice viene fornito nella dichiarazione del vertice.
- vertex color2, se AMBIENTMATERIALSOURCE = D3DMCS_COLOR2 e il secondo colore del vertice viene fornito nella dichiarazione del vertice.
- colore ambientale del materiale
Nota
Se viene utilizzata una delle opzioni AMBIENTMATERIALSOURCE e il colore del vertice non viene fornito, viene usato il colore ambientale del materiale.
Per usare il colore ambientale del materiale, usare SetMaterial come illustrato nel codice di esempio seguente.
Gₐ è il colore ambientale globale. Viene impostato usando SetRenderState(D3DRS_AMBIENT). Esiste un colore ambientale globale in una scena Direct3D. Questo parametro non è associato a un oggetto light Direct3D.
Lai è il colore ambientale della luce ith nella scena. Ogni luce Direct3D ha un set di proprietà, una delle quali è il colore ambientale. Il termine sum(Lai) è una somma di tutti i colori ambientali nella scena.
Esempio
In questo esempio l'oggetto viene colorato usando la luce ambientale della scena e un colore ambientale del materiale.
#define GRAY_COLOR 0x00bfbfbf
// create material
D3DMATERIAL9 mtrl;
ZeroMemory(&mtrl, sizeof(mtrl));
mtrl.Ambient.r = 0.75f;
mtrl.Ambient.g = 0.0f;
mtrl.Ambient.b = 0.0f;
mtrl.Ambient.a = 0.0f;
m_pd3dDevice->SetMaterial(&mtrl);
m_pd3dDevice->SetRenderState(D3DRS_AMBIENT, GRAY_COLOR);
In base all'equazione, il colore risultante per i vertici dell'oggetto è una combinazione del colore del materiale e del colore della luce.
Le due illustrazioni seguenti mostrano il colore del materiale, che è grigio, e il colore chiaro, che è rosso brillante.
La scena risultante è illustrata nella figura seguente. L'unico oggetto nella scena è una sfera. La luce ambientale illumina tutti i vertici dell'oggetto con lo stesso colore. Non dipende dalla normale del vertice o dalla direzione della luce. Di conseguenza, la sfera è simile a un cerchio 2D perché non esiste alcuna differenza nell'ombreggiatura intorno alla superficie dell'oggetto.
Per dare agli oggetti un aspetto più realistico, applicare l'illuminazione diffusa o speculare oltre all'illuminazione ambientale.
Argomenti correlati