Académique Documents
Professionnel Documents
Culture Documents
Iluminacin
Comprender cmo las condiciones de iluminacin del mundo real se aproximan mediante
OpenGL
Renderizar objetos iluminados mediante la definicin de las fuentes de luz deseados y el
modelo de iluminacin
definir las propiedades del material de los objetos que se ilumina
manipular la matriz pila para controlar la posicin de las fuentes de luz
Como se vio en el captulo 4, OpenGL calcula el color de cada pxel en una escena final que se
muestra que se mantiene en el frame buffer. Parte de este clculo depende de lo que la
iluminacin se utiliza en la escena y sobre cmo objetos de la escena reflejan o absorben la luz.
Como ejemplo de esto, recordar que el ocano tiene un diferente color en un da brillante y
soleado de lo que hace en un da nublado gris. La presencia de la luz del sol o las nubes determina
si se ve el ocano como turquesa brillante o turbia de color gris-verde. De hecho, la mayora de los
objetos no lo hacen incluso mirar en tres dimensiones hasta que estn encendidos Figura 5-1
muestra dos versiones de la misma escena exacta (un esfera individual), una con iluminacin y otro
sin l.
Como puede ver, una esfera sin luz no es diferente de un disco de dos dimensiones. Esto
demuestra cmo fundamental la interaccin entre los objetos y la luz es en la creacin de una
escena tridimensional.
Con OpenGL, puede manipular la iluminacin y objetos en una escena para crear diferentes
tipos de efectos. Este captulo comienza con una introduccin a la eliminacin de la superficie
oculta. Luego se explica cmo controlar la iluminacin en una escena, discute el modelo
conceptual de OpenGL de la iluminacin, y describe en detalle cmo establecer los numerosos
parmetros de iluminacin para lograr ciertos efectos. Hacia el final del captulo, la se
presentan los clculos matemticos que determinan cmo la iluminacin afecta a color.
"Un Remocin Ocultos-Surface Survival Kit" describe los conceptos bsicos de la eliminacin
de superficies ocultas de punto de vista.
L "Mundo Real y OpenGL iluminacin", explica en trminos generales cmo se comporta la luz
del mundo y modelos de cmo OpenGL este comportamiento.
"Propiedades del material Definicin" explica cmo describir las propiedades de los objetos
para que interactuar con la luz de una manera deseada.
L "La Matemtica de la Iluminacin" presenta los clculos matemticos utilizados por OpenGL
determinar el efecto de las luces en una escena.
L "Iluminacin en color-ndice Mode" se analizan las diferencias entre usar el modo RGBA y
modo de color-index para la iluminacin.
Al dibujar una escena compuesta por objetos tridimensionales, algunos de ellos podran
oscurecer la totalidad o parte de otros. Cambiar su punto de vista puede cambiar la relacin de
oscurecimiento. Por ejemplo, si ve la escena desde la direccin opuesta, cualquier objeto que
antes estaba en frente de otro ya est detrs de l.
Dibujar una escena realista, estas relaciones oscureciendo deben mantenerse. Suponga que su
cdigo funciona as:
while (1) {
get_viewing_point_from_mouse_position();
glClear(GL_COLOR_BUFFER_BIT);
draw_3d_object_A();
draw_3d_object_B();
Para algunas posiciones ratn, objeto Una fuerza oscura objeto B. Para otros, lo contrario
puede llevar a cabo. Si nada especial que se hace, el cdigo anterior dibuja siempre objeto B
segunda (y por tanto en la parte superior del objeto A) no importa cul es la posicin de
visualizacin se selecciona. En el peor de los casos, si los objetos A y B se cruzan entre s de
manera esa parte del objeto A oscurecido objeto B y parte de B oscurecida A, cambiando el
orden de dibujo no proporcionar una solucin.
Clculos grficos en hardware o software convertir cada superficie que se dibuja a un conjunto
de pxeles en la ventana donde aparecer la superficie si no est oscurecida por otra cosa.
Adems, la distancia desde el plano de la vista se calcula. Con profundidad bfer habilitado,
antes de cada pxel se dibuja una comparacin se realiza con el valor de profundidad ya
almacenada en el pxel. Si el nuevo pxel est ms cerca que (frente) lo que es all, los valores
de color y profundidad de la nueva pxeles sustituyen a las que estn inscritos actualmente en
el pxel. Si el profundidad nueva de pxeles es mayor de lo que es en la actualidad hay, el nuevo
pxel se oscureci, y el color y informacin de profundidad para el pxel de entrada se descarta.
Para utilizar el almacenamiento en bfer de profundidad, necesita habilitar el almacenamiento
en bfer de profundidad. Esto tiene que ser hecho slo una vez. antes de dibujo, cada vez que
se dibuja el escenario, es necesario borrar el buffer de profundidad y luego dibujar los objetos
en la escena en cualquier orden.
Para convertir el ejemplo de cdigo anterior para que realice la remocin de la superficie
oculta, modificarlo a la siguiendo:
glutInitDisplayMode(GLUT_DEPTH|....);
glEnable(GL_DEPTH_TEST);
...
while(1){
glClear(GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT);
get_viewing_point_from_mouse_position();
draw_3d_object_A();
draw_3d_object_B();
}
En el modelo de iluminacin de OpenGL, la luz en una escena proviene de varias fuentes de luz
que se puede activar de forma individual y se apaga. Parte de la luz proviene de una direccin
o posicin particular, y un poco de luz en general se dispersa sobre la escena. Por ejemplo,
cuando se enciende una bombilla en una habitacin, la mayor parte de la luz que proviene de
la bombilla, pero un poco de luz viene despus de rebotar en uno, dos, tres, o ms paredes.
Esta rebotado luz (llamado ambiente) se supone que es tan dispersos que no hay forma de
saber su direccin original, pero desaparece si una fuente de luz particular, se apaga.
Por ltimo, puede haber una luz ambiente general en la escena que viene de ninguna fuente
en particular, como si se hubiera dispersado tantas veces que su fuente original es imposible
de determinar.
En el modelo de OpenGL, las fuentes de luz tienen un efecto slo cuando hay superficies que
absorben y reflejan la luz. Cada superficie se supone que est compuesta de un material con
diversas propiedades. Un material puede emitir su propia luz (como los faros de un automvil),
podra esparcir un poco de luz entrante en todas las direcciones, y podra reflejar una parte de
la luz entrante en una direccin preferencial como un espejo u otra superficie brillante.
En el modelo de iluminacin de OpenGL, la luz en una escena proviene de varias fuentes de luz
que se puede activar de forma individual y se apaga. Parte de la luz proviene de una direccin
o posicin particular, y un poco de luz en general se dispersa sobre la escena. Por ejemplo,
cuando se enciende una bombilla en una habitacin, la mayor parte de la luz que proviene de
la bombilla, pero un poco de luz viene despus de rebotar en uno, dos, tres, o ms paredes.
Esta rebot luz (llamado ambiente) se supone que es tan dispersos que no hay forma de saber
su direccin original, pero desaparece si una fuente de luz particular, se apaga.
Por ltimo, puede haber una luz ambiente general en la escena que viene de ninguna fuente
en particular, como si se hubiera dispersado tantas veces que su fuente original es imposible
de determinar.
En el modelo de OpenGL, las fuentes de luz tienen un efecto slo cuando hay superficies que
absorben y reflejan la luz. Cada superficie se supone que est compuesta de un material con
diversas propiedades. Un material puede emitir su propia luz (como los faros de un automvil),
podra esparcir un poco de luz entrante en todas las direcciones, y podra reflejar una parte de
la luz entrante en una direccin preferencial como un espejo u otra superficie brillante.
El modelo de iluminacin de OpenGL considera la iluminacin que se divide en cuatro
componentes independientes: emisiva, ambiente, difusa y especular. Los cuatro componentes
se calculan de forma independiente y suman.
Iluminacin ambiente es luz que se ha esparcido tanto por el ambiente que su direccin es
imposible determinar - que parece venir de todas direcciones. Luz de fondo en una habitacin
tiene una gran componente ambiental, ya que la mayor parte de la luz que llega a su ojo ha
rebotado antes que nada muchas superficies. El proyector tiene un componente ambiental al
aire libre pequea; la mayor parte de la luz viaja en la misma direccin, y ya que ests al aire
libre, muy poco de la luz alcanza el ojo despus de rebotar en otros objetos. Cuando luz
ambiental golpea una superficie, que est dispersa por igual en todas las direcciones.
La componente difusa es la luz que proviene de una direccin, por lo que es ms brillante si se
trata de lleno abajo sobre una superficie que si apenas rebota en la superficie. Una vez que
golpea una superficie, sin embargo, est dispersa igualmente en todas las direcciones, por lo
que parece igual de brillante, no importa donde se encuentra el ojo. Cualquier luz proveniente
de una posicin o direccin en particular probablemente tiene un componente difuso.
Por ltimo, la luz especular proviene de una direccin particular, y tiende a rebotar en la
superficie en una direccin preferida. Un rayo lser bien colimado-rebotando en un espejo de
alta calidad produce casi 100 por ciento reflexin especular. Brillante del metal o de plstico
tiene un componente especular alto y tiza o alfombra tiene casi ninguno. Usted puede pensar
en especularidad como brillo.
Aunque una fuente de luz proporciona una nica distribucin de frecuencias, el ambiente,
difusa y especular componentes pueden ser diferentes. Por ejemplo, si usted tiene una luz
blanca en una habitacin con paredes de color rojo, la luz difusa tiende a ser de color rojo,
aunque la luz que incide directamente en los objetos es de color blanco. OpenGL que permite
establecer los valores de rojo, verde y azul para cada componente de la luz de forma
independiente.
Colores materiales
reflejada).
Al igual que las luces, los materiales tienen diferentes colores ambiente, difusos y especulares,
que determinan el ambiente, difusa, y la reflectancia especular del material. Reflectancia
ambiente de un material se combina con la componente ambiental de cada fuente de luz
entrante, la reflectancia difusa con difusa de la luz componente, y de manera similar para la
reflectancia especular y componente. Ambientales y difusos reflectancias definir el color del
material y son tpicamente similares, si no idnticos. Reflectancia especular es generalmente
blanco o gris, de modo que los reflejos especulares terminan siendo el color de la intensidad
especular de la fuente de luz. Si se piensa en una luz blanca brillante en una brillante esfera de
plstico rojo, la mayor parte de la esfera aparece rojo, pero el culminante brillante es blanca.
Adems de ambiente, difusa y colores especulares, materiales tienen un color de emisin, que
simula originario luz de un objeto. En el modelo de iluminacin de OpenGL, el color de emisin
de una superficie agrega intensidad para el objeto, pero no se ve afectado por cualquier fuente
de luz. Adems, el color de emisin no introduce ninguna luz adicional en la escena global.
Para los materiales, los nmeros corresponden a las proporciones reflejadas de esos colores.
As que si R = 1, G = 0.5, y B = 0 para un material, que el material refleja toda la luz entrante
rojo, la mitad de la verde entrante, y ninguno de la luz azul entrante. En otras palabras, si una
luz OpenGL tiene componentes (LR, LG, LB), y un material tiene componentes
correspondientes (MR, MG, MB) y, a continuacin, haciendo caso omiso de todos los dems
efectos de reflectividad, la luz que llega al ojo est dada por (LR * MR, LG * MG, LB * MB).
Del mismo modo, si usted tiene dos luces que envan (R1, G1, B1) y (R2, G2, B2) a la vista,
OpenGL aade los componentes, dando (R1 + R2, G1 + G2, B1 + B2). Si alguna de las sumas es
mayor que 1 (correspondiente a un color ms brillante que el equipo puede mostrar), el
componente se sujeta a 1.