Compartir a través de


Iluminación ambiental (Direct3D 9)

La iluminación ambiental proporciona iluminación constante para una escena. Ilumina todos los vértices de objeto igual porque no depende de ningún otro factor de iluminación, como los normales de vértice, la dirección de la luz, la posición de la luz, el rango o la atenuación. Es el tipo de iluminación más rápido, pero produce los resultados menos realistas. Direct3D contiene una única propiedad de luz ambiente global que puedes usar sin crear ninguna luz. Como alternativa, puede establecer cualquier objeto de luz para proporcionar iluminación ambiental. La iluminación ambiental de una escena se describe mediante la siguiente ecuación.

Iluminación ambiental = Cₐ*[Gₐ + sum(Atteni*Spoti*Lai)]

Donde:

Parámetro Valor predeterminado Tipo Descripción
Cₐ (0,0,0,0) D3DCOLORVALUE Color ambiente del material
Gₐ (0,0,0,0) D3DCOLORVALUE Color ambiente global
Atteni (0,0,0,0) D3DCOLORVALUE Atenuación de luz de la luz. Consulta Atenuación y Factor de foco (Direct3D 9).
Spoti (0,0,0,0) D3DVECTOR Factor destacado de la luz ith. Consulta Atenuación y Factor de foco (Direct3D 9).
Sum N/D N/D Suma de la luz ambiental
Lai (0,0,0,0) D3DVECTOR Color ambiente claro de la luz

 

El valor de Cₐ es:

  • color de vértice1, si AMBIENTMATERIALSOURCE = D3DMCS_COLOR1 y el primer color de vértice se proporciona en la declaración de vértice.
  • color de vértice2, si AMBIENTMATERIALSOURCE = D3DMCS_COLOR2 y el segundo color de vértice se proporciona en la declaración de vértice.
  • color ambiente del material.

Nota

Si se usa la opción AMBIENTMATERIALSOURCE y no se proporciona el color del vértice, se usa el color ambiente del material.

 

Para usar el color ambiente del material, use SetMaterial como se muestra en el código de ejemplo siguiente.

Gₐ es el color ambiente global. Se establece mediante SetRenderState(D3DRS_AMBIENT). Hay un color ambiente global en una escena de Direct3D. Este parámetro no está asociado a un objeto claro de Direct3D.

Lai es el color ambiente de la luz ith en la escena. Cada luz direct3D tiene un conjunto de propiedades, una de las cuales es el color ambiente. El término sum(Lai) es una suma de todos los colores ambientales de la escena.

Ejemplo

En este ejemplo, el objeto se colorea utilizando la luz ambiental de la escena y un color ambiente de material.

#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);

Según la ecuación, el color resultante para los vértices del objeto es una combinación del color del material y el color claro.

Las dos ilustraciones siguientes muestran el color del material, que es gris, y el color claro, que es rojo brillante.

ilustración de una ilustración de esfera gris de una esfera roja

La escena resultante se muestra en la ilustración siguiente. El único objeto de la escena es una esfera. La luz ambiental ilumina todos los vértices de objeto con el mismo color. No depende del vértice normal o de la dirección de la luz. Como resultado, la esfera es similar a un círculo 2D porque no hay ninguna diferencia en sombreado alrededor de la superficie del objeto.

ilustración de una esfera con iluminación ambiental

Para dar a los objetos un aspecto más realista, aplique iluminación difusa o especular además de iluminación ambiental.

Matemáticas de iluminación