Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros ›...
Transcript of Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros ›...
![Page 1: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/1.jpg)
Técnicas avanzadas basadas en trazado de rayos
![Page 2: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/2.jpg)
Trazado de rayos: Generación
l La cámara
Rayo = f(x,y)
![Page 3: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/3.jpg)
Trazado de rayos: intersecciones
l Rayo-triángulo: l Intersección con
plano. l Comprobación de
rangos
O D
O O
t
P
N
u
v
![Page 4: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/4.jpg)
Trazado de rayos: color
l Ecuación de reflexión
BRDF
![Page 5: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/5.jpg)
Trazado de rayos
l Resumen
![Page 6: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/6.jpg)
Trazado de rayos
l Tiempo de cálculo:
tinterseccion*npixels* (nobjetos*nsecundarios*nluces)^nrebotes
![Page 7: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/7.jpg)
Trazado de rayos: ¿qué falta?
l Depth of field
Purpy Purple
![Page 8: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/8.jpg)
Trazado de rayos: ¿qué falta?
l Depth of field
![Page 9: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/9.jpg)
Trazado de rayos: ¿qué falta?
l Depth of field l Efectos chulos y realistas. l Se aumenta mucho el tiempo de cálculo (muchos
rayos por píxel para simular el fenómeno). l Como siempre: es mejor idea elegir los ”más
importantes”.
![Page 10: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/10.jpg)
Trazado de rayos: ¿qué falta?
l Motion blur
E01
![Page 11: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/11.jpg)
Trazado de rayos: ¿qué falta?
l Motion blur: l Integral de la radiancia a lo largo del tiempo de
exposición. l Coger varias muestras en ese tiempo: aumentar el
tiempo de cálculo.
![Page 12: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/12.jpg)
Trazado de rayos: ¿qué falta?
l Cáusticas l Caminos difíciles de encontrar, requieren muchas
muestras difusas
![Page 13: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/13.jpg)
Trazado de rayos
l Tiempo de cálculo:
tinterseccion*npixels*ndof*nmotionblur* (nobjetos*nsecundarios*nluces)^nrebotes
Además, nsecundarios necesita ser muy grande (tirando a infinito) para encontrar cáusticas y fenómenos similares
![Page 14: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/14.jpg)
Nuevos algoritmos
l Trazado de rayos necesita mucho tiempo, hay varios fenómenos que no son prácticos de simular.
l Cada nuevo fenómeno añadido, introduce mucha complejidad computacional en el algoritmo.
![Page 15: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/15.jpg)
Nuevos algoritmos
l Nuestra ”unidad de medida” es el rayo. l Idea: que nuestra ”unidad de medida” sea un
camino entero de la cámara a la luz: path-tracing
![Page 16: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/16.jpg)
Path tracing
l Se pierde el concepto de ”rayo secundario”.
![Page 17: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/17.jpg)
Path tracing
l Los propios rayos de un camino hacen las veces de rayos de sombra.
![Page 18: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/18.jpg)
Path tracing
l ¿Qué pasa con el tiempo de cálculo?
tinterseccion*npixels*ndof*nmotionblur* (nobjetos*nsecundarios*nluces)^nrebotes
![Page 19: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/19.jpg)
Path tracing
Path tracing
Ray
tracing
¿QUÉ OPINAS?
![Page 20: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/20.jpg)
Path tracing
l La implementación clásica de path tracing tiene problemas localizando fuentes de luz puntuales o direccionales...
![Page 21: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/21.jpg)
Path tracing, next event estimation
l Idea: calcular el ”siguiente evento” (trazar rayos de sombra)
![Page 22: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/22.jpg)
Path tracing, next event estimation
l … pero sigue teniendo problemas con las cáusticas.
![Page 23: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/23.jpg)
Light tracing
l Idea: Comenzar caminos desde la luz. l Con siguiente evento: buscar la cámara.
![Page 24: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/24.jpg)
Path tracing bidireccional
l Idea: comenzar caminos tanto desde la cámara como desde las luces: path tracing bidireccional.
![Page 25: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/25.jpg)
Path tracing bidireccional.
l Luego se trazan rayos de sombra.
![Page 26: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/26.jpg)
Path tracing bidireccional
l ¿Qué pasa con el tiempo de cálculo?
tinterseccion*npixels*ndof*nmotionblur* (nobjetos*nsecundarios*nluces)^nrebotes
![Page 27: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/27.jpg)
Path tracing bidireccional
Path tracing
Ray
tracing
¿QUÉ OPINAS?
Path tracing bidireccional
![Page 28: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/28.jpg)
Path tracing bidireccional
l Hacen falta muchos rayos por píxel. l Convergencia lenta, tiempo de cálculo elevado. l Muy dependiente de Montecarlo en cada
rebote.
![Page 29: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/29.jpg)
Metropolis Light Transport
l Idea: al localizar un camino importante, lo reaprovechamos (mutándolo) para el siguiente camino.
![Page 30: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/30.jpg)
Metropolis Light Transport
l Mutación
![Page 31: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/31.jpg)
Metropolis Light Transport
l ¿Cómo elegimos los caminos más importantes?
![Page 32: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/32.jpg)
Metropolis Light Transport
l Convergencia ligeramente superior al path tracing bidireccional clásico en muchos casos.
![Page 33: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/33.jpg)
Mapeado de fotones
![Page 34: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/34.jpg)
¿Para qué?
• Existen fenómenos visuales complicados que son costosos de simular con algoritmos de iluminación global convencionales.
![Page 35: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/35.jpg)
¿Para qué? • En escenas complicadas es prácticamente
imposible: – Path tracing requiere ”mucha suerte” para la cáustica. – Path tracing bidireccional y Metropolis requieren ”mucha
suerte” para la reflexión de la cáustica
![Page 36: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/36.jpg)
¿Para qué? • Idea: desacoplar los dos ”caminos”
![Page 37: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/37.jpg)
¿Para qué? • Otras ventajas:
– Tiempo de cálculo menor – Ruido de baja frecuencia
• Desventajas – Sesgo
![Page 38: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/38.jpg)
Índice
• Algoritmo • Estructura de datos • Mejoras • Resultados
![Page 39: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/39.jpg)
Índice
• Algoritmo • Estructura de datos • Mejoras • Resultados
![Page 40: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/40.jpg)
Algoritmo
1. Se lanzan fotones desde las fuentes de luz ñ Se almacenan en una estructura de datos.
2. Se trazan rayos desde la cámara ñ Se estima la radiancia a partir de los fotones
almacenados.
![Page 41: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/41.jpg)
Algoritmo
• Fase 1: Trazado de fotones – Emisión – Interacción – Almacén
![Page 42: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/42.jpg)
Algoritmo
• Fase 1: Trazado de fotones – Emisión – Interacción – Almacén
– Flujo total de la fuente de luz se reparte entre fotones
![Page 43: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/43.jpg)
Algoritmo
• Fase 1: Trazado de fotones – Emisión – Interacción – Almacén
![Page 44: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/44.jpg)
Algoritmo
• Fase 1: Trazado de fotones – Emisión – Interacción – Almacén
• Que permita búsquedas de vecinos más cercanos
![Page 45: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/45.jpg)
Algoritmo
ñ Un fotón – Flujo: ΔΦp (W - color) – Posición: xp
– Dirección: ωp
ωp
ΔΦp
xp
![Page 46: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/46.jpg)
Algoritmo
• Fase 2: Trazado de rayos – Trazado desde la cámara – Interacción – Estimación de radiancia
![Page 47: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/47.jpg)
Algoritmo
• Fase 2: Trazado de rayos – Trazado desde la cámara – Interacción – Estimación de radiancia
– ¡¡Igual que trazado de rayos estándar!!
![Page 48: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/48.jpg)
Algoritmo
• Fase 2: Trazado de rayos – Trazado desde la cámara – Interacción – Estimación de radiancia
• N fotones más cercanos
![Page 49: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/49.jpg)
Estimación de radiancia
• Ecuación de radiancia reflejada • Radiancia por flujo • Sustituimos • Numéricamente
∫Ω
⋅= iiiirirrr dNLfL ωωωωωω ))(,(),(),( xx
iii
iiii dAdN
dLωωω
ω)(
),(),(2
⋅
Φ=
xx
∫Ω
Φ=
i
iirirrr dAdfL ),(),(),(2 ω
ωωωxx
∑=
ΔΦΔ
≈n
ppprprrr f
AL
1),(),(1),( ωωωω xx
ΔA = πr2
![Page 50: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/50.jpg)
Índice
• Algoritmo • Estructura de datos • Mejoras • Resultados
![Page 51: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/51.jpg)
Estructura de datos
ñ Un fotón – Flujo: ΔΦp (W - color) – Posición: xp
– Dirección: ωp
ωp
ΔΦp
xp
![Page 52: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/52.jpg)
Estructura de datos
• Características: – Capaz de almacenar muchos datos – Capaz de búsquedas eficientes de los vecinos más
cercanos (en 3D)
¿CUÁL ELEGIMOS?
![Page 53: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/53.jpg)
Estructura de datos
• Posibilidades – Diagrama de Voronoi – Voxels – Octree – Kd-tree
![Page 54: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/54.jpg)
Kd-tree • http://donar.umiacs.umd.edu/quadtree/points/kdtree.html • http://homes.ieu.edu.tr/~hakcan/projects/kdtree/kdTree.html
![Page 55: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/55.jpg)
Kd-tree
• En 3D...
![Page 56: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/56.jpg)
a b
c
d
e
f
g
c
e b
d g a f
Nearest = ? dist-sqd = ∞ NN(c, x)
Nearer = e Further = b NN (e, x)
nearer further
![Page 57: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/57.jpg)
a b
c
d
e
f
g
c
e b
d g a f
Nearest = ? dist-sqd = ∞ NN(e, x)
Nearer = g Further = d NN (g, x)
nearer further
![Page 58: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/58.jpg)
a b
c
d
e
f
g
c
e b
d g a f
Nearest = ? dist-sqd = ∞ NN(g, x)
Nearest = g dist-sqd = r
r
![Page 59: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/59.jpg)
a b
c
d
e
f
g
c
e b
d g a f
Nearest = g dist-sqd = r NN(e, x)
Check d2(e,x) > r No need to update
r
![Page 60: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/60.jpg)
a b
c
d
e
f
g
c
e b
d g a f
Nearest = g dist-sqd = r NN(e, x)
Check further of e: find p d (p,x) > r No need to update
r
p
![Page 61: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/61.jpg)
a b
c
d
e
f
g
c
e b
d g a f
Nearest = g dist-sqd = r NN(c, x)
Check d2(c,x) > r No need to update
r
![Page 62: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/62.jpg)
a b
c
d
e
f
g
c
e b
d g a f
Nearest = g dist-sqd = r NN(c, x)
Check further of c: find p d(p,x) < r !! NN (b,x)
r
p
![Page 63: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/63.jpg)
a b
c
d
e
f
g
c
e b
d g a f
Nearest = g dist-sqd = r NN(b, x)
Nearer = f Further = g NN (f,x)
r
![Page 64: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/64.jpg)
a b
c
d
e
f
g
c
e b
d g a f
Nearest = g dist-sqd = r NN(f, x)
r’ = d2 (f,x) < r dist-sqd ← r’ nearest ←f
r’
![Page 65: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/65.jpg)
a b
c
d
e
f
g
c
e b
d g a f
Nearest = f dist-sqd = r’ NN(b, x)
Check d(b,x) < r’ No need to update
r’
![Page 66: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/66.jpg)
a b
c
d
e
f
g
c
e b
d g a f
Nearest = f dist-sqd = r’ NN(b, x)
Check further of b; find p d(p,x) > r’ No need to update
r’ p
![Page 67: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/67.jpg)
a b
c
d
e
f
g
c
e b
d g a f
Nearest = f dist-sqd = r’ NN(c, x)
r’
![Page 68: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/68.jpg)
Índice
• Algoritmo • Estructura de datos • Mejoras • Resultados
![Page 69: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/69.jpg)
Mejoras
• A más fotones almacenados, más tiempo de cálculo. – Eliminar fotones que ”no se van a ver” (reflexión
especular perfecta, cortar rebotes cuando la energía es cero).
– Intentar que todos los fotones tengan aproximadamente la misma energía.
![Page 70: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/70.jpg)
Mejoras
• El algoritmo funciona mejor cuando todos los fotones almacenados tienen la misma energía: – Muestreo por importancia (luces / BRDFs) – Ruleta Rusa
![Page 71: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/71.jpg)
Mejoras
• El algoritmo funciona mejor cuando todos los fotones almacenados tienen la misma energía: – Muestreo por importancia (luces / BRDFs) – Ruleta Rusa • ζ aleatorio [0..1] • ζ < ρd → difuso • ζ < ρd + ρs → especular
ρd = 50% ρs = 30%
![Page 72: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/72.jpg)
Mejoras
• El camino ”directo” se calcula perfectamente con trazado de rayos de sombra estándar. – Primer rebote de fotones no se guarda. – Camino directo mediante trazado de rayos.
– Algunos trabajos hacen incluso un rebote indirecto mediante rayos.
![Page 73: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/73.jpg)
Mejoras
• Diferentes fenómenos se ven mejor con diferentes parámetros del mapa – Utilizar más de un mapa de fotones – Ejemplo: uno para luz indirecta y otro para
cáusticas. – Ejemplo retorcido: un mapa de fotones por cada
objeto.
![Page 74: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/74.jpg)
Mejoras
• El cuello de botella del algoritmo es la búsqueda de elementos más cercanos.
• Puedes ahorrar un rebote haciendo que cada fotón sea se comporte como una luz puntual: Instant Radiosity
• ¿Cómo hacerlo eficiente? → Lightcuts
![Page 75: Técnicas avanzadas basadas en trazado de rayosgiga.cps.unizar.es › ~diegog › ficheros › teaching › 09_raytracing-base… · Metropolis Light Transport ! ¿Cómo elegimos](https://reader035.fdocuments.mx/reader035/viewer/2022081402/5f0d2ea47e708231d4391363/html5/thumbnails/75.jpg)
Índice
• Algoritmo • Estructura de datos • Mejoras • Resultados