1 Laboratorio de Computación Grafica Universidad Central de VenezuelaTrazado de Rayos Ernesto Coto
2 Contenido Introducción Reflexión y refracción El algoritmo básicoIluminación Consideraciones de eficiencia Ernesto Coto - Trazado de Rayos
3 Conocimientos PreviosObjetos 3D Iluminación y Sombreado Modelos de iluminación local Geometría básica Subdivisión espacial Ernesto Coto - Trazado de Rayos
4 Introducción
5 Introducción Los métodos de sombreado de Flat, Gouraud y Phong utilizan modelos de iluminación local Rayo reflejado Rayo incidente Ojo Luz Superficie Ernesto Coto - Trazado de Rayos
6 Introducción Un modelo de iluminación global considera la luz que es reflejada desde otras superficies hacia la superficie con la que se trabaja Luz Ojo Rayo incidente Rayo reflejado Superficie Ernesto Coto - Trazado de Rayos
7 Introducción El Trazado de Rayos (Ray Tracing) es un método de despliegue de escenas que esta basado en Iluminación global Original de Turner Whitted (1980) Ernesto Coto - Trazado de Rayos
8 Introducción El Trazado de Rayos maneja de manera apropiada:Reflecciones y Refracciones Transparencia Sombras Ernesto Coto - Trazado de Rayos
9 Introducción Ampliamente usado en:Entretenimiento (Cine, Comerciales, etc.) Preproducción de juegos Simulación Ernesto Coto - Trazado de Rayos
10 Reflexión y Refracción
11 Reflexión y RefracciónLa luz incidente a una superficie en general es parcialmente reflejada y parcialmente transmitida como un rayo refractado Rayo incidente Rayo reflejado Superficie Rayo refractado Ernesto Coto - Trazado de Rayos
12 Reflexión De acuerdo a la “Ley de reflexión” el ángulo del rayo de incidencia es igual al ángulo del rayo reflejado N Rayo incidente Rayo reflejado i = r Superficie Ernesto Coto - Trazado de Rayos
13 Refracción Refracción es el desvío del rayo de luz cuando entra a un medio donde la velocidad del rayo es diferente N Rayo incidente i Superficie t Rayo refractado Ernesto Coto - Trazado de Rayos
14 Refracción La cantidad de desvío depende del índice de refracción de los dos materiales y es descrita por la ley de Snell N Medio1 1 i Medio2 2 t Ley de Snell Ernesto Coto - Trazado de Rayos
15 Reflexión y RefracciónRreflex = 2N(N · Rin) - Rin Rin i r t = ((N · Rin) – 2(1- (N · Rin)2))N - Rin Rrefrac Donde =1 /2 Ernesto Coto - Trazado de Rayos
16 El algoritmo básico
17 El algoritmo básico Simular rayos de luz desde la fuente de luz hacia el ojo Plano Imagen Objeto Luz Ojo Rayos de Luz Ernesto Coto - Trazado de Rayos
18 Trazado hacia adelanteTrazar los rayos desde la luz Luz Plano Imagen Rayos de Luz Ojo Objeto Ernesto Coto - Trazado de Rayos
19 Trazado hacia atrás Trazar los rayos desde el ojo hasta la escena LuzPlano Imagen Ojo Objeto Ernesto Coto - Trazado de Rayos
20 El algoritmo básico Trazar un rayo por cada píxel en el plano imagencalcularImagen() { para cada píxel i, j en la imagen rayo.inicializar(); imagen[i][j] = trazarRayo(rayo); } Ernesto Coto - Trazado de Rayos
21 El algoritmo básico Trazar un rayo por cada píxel en el plano imagenOjo Plano Imagen Ernesto Coto - Trazado de Rayos
22 El algoritmo básico Trazar el rayo trazarRayo(rayo) {golpearObjeto(rayo, triángulos, p, n); si(objeto es luz) retornar(color de la luz); sino retornar(iluminación(p, n)); } Ernesto Coto - Trazado de Rayos
23 Iluminación
24 Iluminación Color de la superficie iluminación(punto) { para cada luzcolor += phong(punto) + c1_obj*trazarRayo(reflejado) + c2_obj*trazarRayo(refractado) retornar(color); } Ernesto Coto - Trazado de Rayos
25 Iluminación Prueba de SombraTrazar un rayo desde el objeto hacia la luz en busca de objetos oclusores Ojo Objeto oclusor Ernesto Coto - Trazado de Rayos
26 Iluminación Color de la superficie iluminación(punto) { para cada luzcolor += phong(punto) si(golpearObjeto(rayo de sombra)) color *= atenuación color += c1_obj*trazarRayo(reflejado) + c2_obj*trazarRayo(refractado) retornar(color); } Ernesto Coto - Trazado de Rayos
27 Iluminación Terminación MUY COSTOSO PODRIA NUNCA TERMINAR !!!!!Un rayo se termina si no hubo intersección De lo contrario se termina solo al alcanzar la luz, pero: MUY COSTOSO PODRIA NUNCA TERMINAR !!!!! Ernesto Coto - Trazado de Rayos
28 Consideraciones de Eficiencia
29 Consideraciones de EficienciaCriterios posibles de terminación La contribución del rayo reflejado y/o refractado es muy pequeña Se alcanza un nivel de profundidad máximo Ernesto Coto - Trazado de Rayos
30 Consideraciones de EficienciaTrazado de rayos optimizado Reducir el número de rayos trazados Reducir el número de cálculos de intersecciones entre los rayos y los objetos Cajas Delimitadoras Jerarquías de Objetos Ernesto Coto - Trazado de Rayos
31 Resumen Concepto de Modelo de Iluminación GlobalReflexión y Refracción Trazado de Rayos Esbozo de la implementación de un Trazador de Rayos Consideraciones de Eficiencia en el Trazado de Rayos Ernesto Coto - Trazado de Rayos
32 Bibliografía Kay, D.S. Transparency, Refraction and Ray Tracing for Computer Synthesized Images. M.S. Thesis, Program of Computer Graphics, Cornell University, Ithaca, NY. Enero, 1979. Levoy, M.. Efficient ray tracing of volume data. ACM Transactions on Graphics, vol. 9, num. 3, pp Julio,1990. Watt, Alan ; Watt, Mark. Advanced Animation and Rendering Techniques: Theory and Practice. ACM Press. Addison-Wesley Publishing Company. New York, 1992. Watt, Alan. 3D Computer Graphics. 3era edición. Addison-Wesley, 2000. Ernesto Coto - Trazado de Rayos
33 Preguntas Ernesto Coto - Trazado de Rayos
34 Iluminación Se utiliza el modelo de iluminación Phong Ojo N R Luz I VSuperficie Para cada luz local = IambientalKambiental IdifusaKdifusa(L.N)+ IespecularKespecular(R.V)n Ernesto Coto - Trazado de Rayos
35 El algoritmo básico Cálculo de interseccionesgolpearObjeto() { para cada triángulo en la escena ¿el rayo interseca el triángulo? si (intersecado y más cercano) salvar la intersección si (intersecado) retornar punto de intersección y normal } Ernesto Coto - Trazado de Rayos
36 El algoritmo básico El rayo se expresa de forma paramétrica
37 Intersección rd ro p = -(n. ro + D) / (n. rd ) Normal al plano( Ax + By + Cz + D = 0 ) Normal al plano n = p rd ro p = -(n. ro + D) / (n. rd ) Ernesto Coto - Trazado de Rayos
38 El algoritmo básico El algoritmo principal principal() {triángulos = leerTriángulos(); iniciaOjo(); iniciaLuces(); imagen = calcularImagen(triángulos); escribirImagen(imagen); } Ernesto Coto - Trazado de Rayos
39 Reflexión N NCosi - I R I i NCosi R-I=2NCosi – 2I R=2NCosi – IR=2N(N·I) – I Ernesto Coto - Trazado de Rayos
40 Refracción n Ley de Snell i sin i = t sin tSea =i /t = sin t / sin i Sea m = (cos i n - i) / sin i Entonces… t = sin t m - cos t n = (sin t / sin i) (cos i n - i) - cos t n = ( cos i - cos t )n - i i cos i n - i i cos i n i m t t = ? -n como i Ernesto Coto - Trazado de Rayos
41 Cajas Delimitadoras Ojo Ernesto Coto - Trazado de Rayos
42 Jerarquías de Objetos Raíz Ernesto Coto - Trazado de Rayos
43 Octrees Ernesto Coto - Trazado de Rayos