Pregunta

Una respuesta a mi pregunta DOT 3 sugiere que la iluminación puede ayudar con OpenGL eS prestación, pero estoy teniendo problemas para encontrar una definición decente de lo DOT 3 es la iluminación.

Editar 1

información relacionada

iPhone es muy apreciada.

¿Fue útil?

Solución

DOT3-iluminación se refiere a menudo como la iluminación por píxel. Con la iluminación de vértice la iluminación se calcula en cada vértice y la iluminación resultante se interpola sobre el triángulo. En la iluminación por píxel, como su nombre lo indica, el objetivo es calcular la iluminación en cada píxel.

La forma en que esto se hace en función hardware fijo como el iPhone es con los llamados combinadores de registro. El nombre proviene de DOT 3 este estado render:

glTexEnvi(GL_TEXTURE_ENV, GL_COMBINE_RGB, GL_DOT3_RGB);

este entrada de blog sobre Wolfgang Engels el blog para obtener más información sobre exactamente cómo configurar esto.

Al hacer iluminación por píxel es popular para utilizar también un llamado mapa normal . Esto significa que la normal de cada punto de un objeto se almacena en un mapa de textura especial, un mapa normal. Este fue popularizado en el juego DOOM 3 por software de identificación donde los modelos bastante bajos polígonos donde usan pero con mapas normales de alta resolución. La razón para el uso de esta técnica es que el ojo es más sensible a la variación en la iluminación de variación en la forma.

vi en su otra pregunta que la razón de que esto ocurrió fue que se quiere reducir el consumo de memoria de los datos de vértices. Esto es cierto, en lugar de almacenar tres componentes para una normalidad en cada vértice, sólo es necesario para almacenar dos componentes de las coordenadas de textura con el mapa normal. Activación de iluminación por píxel vendrá con un costo de rendimiento, aunque por lo que no estoy seguro si esto será una ganancia neta, como de costumbre, el consejo es tratar de ver.

Finalmente la intensidad de iluminación difusa en un punto es proporcional al coseno del ángulo entre la superficie normal y la dirección de la luz. Para dos vector los href="http://en.wikipedia.org/wiki/Dot_product" producto punto es definido como:

a dot b = |a||b| cos(theta)

donde |a| y |b| es la longitud de la a vectores y b respectivamente y theta es el ángulo entre ellos. Si la longitud es igual a uno, |a| y |b| se denominan vectores unitarios y la fórmula se simplifica a:

a dot b = cos(theta)

esto significa que la intensidad de la iluminación difusa está dada por el producto escalar entre la superficie normal y la dirección de la luz. Esto significa que todos iluminación difusa es una forma de DOT 3-iluminación, incluso si el nombre ha llegado a referirse a la especie por píxel.

Otros consejos

aquí :

  

bumpmapping está poniendo una textura en un modelo en el brillo de cada Texel define la altura de ese Texel.

     

La altura de cada texel se utiliza entonces para perturbar la iluminación de toda la superficie.

     

Normal Mapping está poniendo una textura en un modelo en el que el color de cada Texel es realmente tres valores que definen la dirección en que la ubicación de los puntos de la superficie.

     

Un color de (255, 0, 0), por ejemplo, podría significar que la superficie en ese lugar apunta hacia abajo el eje X positivo.

     

En otras palabras, cada texel es un normal.

     

El nombre Dot3 proviene de lo que realmente haces con estas normales.

     

Supongamos que tiene un vector que apunta en la dirección de sus puntos de origen de la luz. Y digamos que tiene el vector que es la normal en un Texel específica sobre su modelo que le dice qué dirección que los puntos Texel.

     

Si lo hace una ecuación matemática simple llamado un "producto escalar" en estos dos vectores normales, así:

     

Dot = N1x N2X + N1Y n2y + N1z * N2z

     

A continuación, el valor resultante es un número que indica la cantidad de esos dos vectores apuntan en la misma dirección.

     

Si el valor es -1, entonces ellos apuntan en direcciones opuestas, que en realidad significa que el Texel está apuntando a la fuente de luz, y la fuente de luz está apuntando a la Texel, por lo que el texel debe estar encendida.

     

Si el valor es 1, entonces ellos apuntan en la misma dirección, lo que significa la Texel está apuntando lejos de la fuente de luz.

     

Y si el valor es 0, entonces uno de los puntos de vectores a 90 grados con respecto a la otra. Es decir: Si está de pie en el suelo mirando hacia adelante, a continuación, su vector visión es de 90 grados con respecto a la normal de la planta, que apunta hacia arriba.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top