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.
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.
Para dar un aspecto más realista a los objetos, aplique iluminación difusa o especular además de la iluminación ambiental.
Temas relacionados
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente GitHub Issues como mecanismo de comentarios sobre el contenido y lo sustituiremos por un nuevo sistema de comentarios. Para más información, vea:Enviar y ver comentarios de