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 Tipo Descrizione
Cₐ (0,0,0,0) D3DCOLORVALUE Colore ambientale materiale
Gₐ (0,0,0,0) D3DCOLORVALUE Colore ambientale globale
Atteni (0,0,0,0) D3DCOLORVALUE Attenuazione della luce dell'ith light. Vedere Attenuazione e fattore spotlight (Direct3D 9).
Spoti (0,0,0,0) D3DVECTOR Fattore spotlight della luce ith. Vedere Attenuazione e fattore spotlight (Direct3D 9).
Sum N/D N/D Somma della luce ambientale
Lai (0,0,0,0) D3DVECTOR Colore ambientale chiaro della luce

 

Il valore per Cₐ è:

  • 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 dei vertici.
  • colore ambientale materiale.

Nota

Se viene utilizzata una delle opzioni AMBIENTMATERIALSOURCE e non viene specificato il colore del vertice, 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). C'è 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à, uno dei 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.

illustrazione di una sfera grigia di una sfera rossa

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 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.

illustrazione di una sfera con illuminazione ambientale

Per dare agli oggetti un aspetto più realistico, applicare l'illuminazione diffusa o speculare oltre all'illuminazione ambientale.

Matematica dell'illuminazione