Compartir a través de


Luz ambiente

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. La iluminación ambiente es constante en todas las direcciones y colorea todos los píxeles de un objeto igual. Es rápido calcular pero deja objetos con aspecto plano y poco realista.

La iluminación ambiente es el tipo de iluminación más rápido, pero genera los resultados menos realistas. Direct3D contiene una única propiedad de luz ambiente global que puede 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 ambiente = 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 la luz de la ith. Consulte Atenuación y factor de contenido destacado.
Spoti (0,0,0,0) D3DVECTOR Factor de foco de la luz ith. Consulte Atenuación y factor de contenido destacado.
Sum N/D N/D Suma de la luz ambiente
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 utiliza 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 de luz 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 ambiente de la escena y un color ambiente de material.

#define GRAY_COLOR  0x00bfbfbf

Ambient.r = 0.75f;
Ambient.g = 0.0f;
Ambient.b = 0.0f;
Ambient.a = 0.0f;

Según la ecuación, el color resultante para los vértices de 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 grisde una esfera roja

La escena resultante se muestra en la ilustración siguiente. El único objeto de la escena es una esfera. La luz ambiente 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 ambiente

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

Cálculos de iluminación