A. Ray-Tracing recursivo.

Anuncio
1
Ray Tracing: Fundamentos y tendencias
actuales
Andres Mariño 04-37225, Rubén Torres 04-37653

Resumen (Abstract)—Se explican los fundamentos básicos del
método de RayTracing, antecedentes, características y efectos
logrados con esta técnica asi como desventajas. Optimizaciones al
algoritmo y nuevos efectos logrados con estas optimizaciones.
Reseña de los fabricantes que han logrado ejecutar raytracing en
tiempo real.
Palabras clave— Algoritmo ray
MonteCarlo, Ray tracing en tiempo real
tracing,
Método
de
I. INTRODUCCIÓN
L
A técnica del Ray-tracing es muy importante en la
Computación Gráfica ya que permite generar imágenes
muy reales especialmente en cuanto a efectos de reflexión,
refracción, objetos semitransparentes y sombras. Esta técnica
fue ideada conceptualmente hace mucho tiempo y sigue siendo
utilizada, aunque con varias optimizaciones. El gran costo
computacional había imposibilitado su utilización en tiempo
real, por lo cual la técnica quedó limitada a la producción de
videos y animaciones. Sin embargo, a partir del año 2005
surgió la posibilidad de realizar renders con R.T en tiempo
real, dando inicio a una nueva era de desarrollo de este
método.
II. FUNDAMENTOS DEL RAY-TRACING
A. Antecedentes
Los orígenes de Ray-Tracing datan de 1637. Originalmente
fue utilizado como marco de trabajo teórico en un
experimento
realizado por Rene Descartes. Este
experimento consistía en un esfera de vidrio llena de agua,
esta se observaba y de acuerdo con los conocimientos de
reflexión y refracción se logro demostrar que si el sol se
encuentra a 42 grados respecto al observador se forma el
arcoíris.
Las nociones del Ray-Tracing a nivel computacional
empezaron en 1969, en 1980 aparece el paradigma del RayTracing el cual engloba en un solo proceso, la refracción,
reflexión, sombras y la remoción de superficies ocultas.
Este proceso crea imágenes “Súper Reales”, a un coste
computacional muy alto. En la década de los 80 se investigo
en acerca de cómo reducir el coste de este algoritmo así
como mejorar su eficiencia.
B. Funcionamiento del algoritmo
La técnica del Ray-Tracing es la manera mas sencilla de
seguir el camino de un rayo de luz en la escena, esta técnica
consiste en punto de vista o cámara (el observador) lanzar un
rayo de luz infinitamente delgado a través de cada pixel
hacia la escena siguiendo el camino del rayo, si este rayo
intercepta un objeto en la escena se calcula si hay reflexión o
refracción del rayo de luz en el objeto, si la hay se realiza
recursivamente con cada rayo de luz que sale del objeto.
hasta que el rayo llega a una fuente de luz, en el proceso de
intercepción del rayo de luz con los objeto también se hace
el computo para el sombreado y si la superficie es visible o
no. Como cada rayo de luz se considera infinitamente
delgado se considera que estos no esparcen la reflexión ni la
refracción.
Pseudo-codigo del Ray-Tracing:
Para cada pixel de la imagen{
Crear un rayo desde el punto de visión a través del
pixelActual
Inicializar NearestT al INFINITO y NearestObject a
NULL
Para cada objeto de la escena {
Si el rayo intercepta el objetoActual{
Si t de la intersección es menor que NearestT {
Poner NearestT = t de la intersección
Poner NearestObject a objetoActual
}
}
}
Si NearestObject = NULL{
Rellenamos pixelActual con el color de fondo
}
Sino{
Lanzar un rayo a cada foco de luz para comprobar las
sombras
Si la superficie es reflectiva, generar un rayo reflectivo
(recursivo)
2
Si la superficie es transparente, generar un rayo
refractante (recursivo)
Usar NearestObject y NearestT para computar la
función de sombreado
Rellenar este pixel con el color resultante de la función
de sombreado
}
}
C. Interseccion de objetos
La parte mas costosa de este algoritmo es el cálculo de las
intersecciones de rayos con los objetos, si se hace una
implementación ingenua como comparar cada rayo contra
cada objeto en la escena se estima que el 95% del coste de
ejecución se realiza en el calculo de las intersecciones. Por
lo tanto se han desarrollado técnicas y estrategias para
mejorar el cálculo de dichas intersecciones entre el rayo y los
objetos estas son:
-Rayo /esfera
1. Se busca si el origen del rayo se encuentra afuera de
la esfera.
2. Se busca el punto mas cercano del rayo con respecto
al centro de la esfera.
3. Si el punto se encuentra afuera de la esfera y apunta
lejos de la esfera el rayo no pasa por ella.
4. Si no se busca la raíz cuadrada de la distancia mas
cercana del rayo hacia la superficie de la esfera.
5. Si el valor es negativo el rayo no le pega a la esfera.
6. Si no se encuentra desde arriba la distancia entre la
superficie y el rayo
7. Calcular las coordenadas de la intersección.
Calcula la normal en el punto de intersección.
El calculo rayo/esfera se realiza de manera muy eficiente
-Rayo /Poligono
1. Se obtiene la ecuación del plano que contiene al
polígono.
2. Se chequea si hay una intersección entre el plano y el
rayo.
3. Se chequea si el polígono se encuentra en la
intersección.
Es fácil de implementar pero el coste de su ejecución es alto.
- Rayo / cuadrante
Es un proceso similar al de la esfera.
- Rayo / caja
Se subdivide la caja en varios planos y se calculan las
intersecciones
El cálculo de otras figuras en general se realiza diviendo la
figura en figuras mas simples como esferas, cajas, etc.
.
.
D. Manejo de sombras
El manejo de las sombras en este algoritmo es correcto las
sombras se manejan de manera adecuada y tienen la intensidad
y la forma del objeto y también se maneja sombras difusas. El
manejo de las sombras en este algoritmo también eleva su
costo computacional y este se eleva de manera muy rápida a
medida que hayan mas fuentes de luz en la escena.
Una manera de hacer mas eficiente el manejo de las
sombras es llevar buffer de luz que este a medida que se sigue
el camino del rayo de luz se van guardando los objetos que
intercepta y a la profundidad con que se encuentra respecto a
la fuente de luz.
E. Deficiencias
El algoritmo debido a los cálculos que tiene que hacer para
saber si los rayos de luz interceptan objetos o no en la escena
suele tener un costo computacional muy elevado lo cual hasta
la época actual casi hacia imposible hacer este algoritmo en
tiempo real.
Otro defecto que posee este algoritmo es que crea imágenes
“Super-Reales”, estas imágenes suelen ser muy pulidas y muy
perfectas y en la realidad encontrar una escena que se parezca
a una imagen producida por el este algoritmo se convierte en
algo muy poco factible.
III. MÉTODOS INVOLUCRADOS EN EL RAY-TRACING
A. Ray-Tracing recursivo.
Este algoritmo modela correctamente el transporte especular y
transparente. El coste es de O(Nrays x Nobj). Donde Nrays =
Número de rayos y Nobj es el número de objetos. El “cuello
de botella” sería la operación de intersección que consume la
mayor cantidad de recursos de procesamiento.
Para optimizar este algoritmo las opciones que podemos
considerar son: Limitar el número de rayos, con lo cual se
pierde algo de definición o sino Acelerar el test de
intersección, con otras técnicas que agilizan el proceso, como
trazar rayos de ordenes superiores, beam tracing, etc.
B. Utilización de coherencia. Esta optimización permite
agilizar el proceso de intersecciones mediante volúmenes
englobantes, jerarquía de volúmenes englobantes y
subdivisión espacial (regular y adaptativa).
Los volúmenes englobantes aceleran el test de intersección
ya que si el rayo no intersecta al volumen englobante, se
descarta el objeto, sino, se procede a subdividir el volumen
para tener más exactitud.
C. Métodos de MonteCarlo.
Se basa en tratar el problema como un proceso estocástico
en lugar de determinístico y formula una solución como
3
parámetro de una variable aleatoria. El método es muy útil
en el área de la iluminación global. Entre sus aplicaciones
están el Ray-Tracing distribuído y el Path-Tracing. También
se utiliza en otras áreas como simulaciones nucleares,
tansferencia de calor, etc.
Ray Tracing distribuído. En lugar de un rayo, lanza varios
rayos por píxel de manera estocástica e integra la
iluminación de cada uno de ellos. Este algoritmo permite
mejorar notablemente el antialiasing y produce efectos que
proporcionan más realismo como lo son: penumbra (en lugar
de sombras perfectas), profundidad de campo (los objetos
lejanos se ven mas borrosos), glossy (distribuye muestras
segun reflectacia especular noideal) y motion blur (distribuye
muestras en el tiempo).
Path Tracing. Trata la simulación de los rayos como un
proceso random walk.
3Delight
Autodesk 3ds
max
Autodesk Maya
Autodesk
Softimage
Anim8or
Aqsis
ASAP
Blender
Brazil r/s
BRL-CAD
Bryce
Cinema 4D
form•Z
RenderZone
Plus
Gelato
PhotoRealistic
Imagine 3D
RenderMan
Indigo Renderer POV-Ray
Kerkythea
Radiance
LightWave 3D Real3D (3D modeling
ghtWorks
software)
LuxRender
Realsoft3D
Manta
Sunflow
Interactive Ray TurboSilver
Tracer
V-Ray
Maxwell Render YafRay
Mental ray
Holomatix Rendition
Modo
OptiX
Picogen
Pixie
V. RAY-TRACING EN TIEMPO REAL
Figura 1.1 Proceso Random Walk
Es ineficiente como algoritmo pero resuelve la ecuación de
la luz de forma más precisa que ray tracing convencional
IV. SOFTWARE QUE IMPLEMENTA RAY-TRACING
Hay una gran cantidad de paquetes de software que ofrecen
ray-tracing como técnica de render.
Cada día películas como “Lord of the rings” nos sorprenden
con sus gráficos foto-realistas. Ahora imaginemos esos
gráficos pero siendo producidos en tiempo real, para
aplicaciones como video-juegos. Esto representa un reto en
cuanto a recursos computacionales. Es por esta razón que esta
técnica estaba limitada a la producción cinematogáfica, ya que
cada frame podía tardar unas cuantas horas en ‘renderizar’.
Por primera vez en el año 2005 surge un ejemplo de R.T. en
tiempo real, este render fue logrado con 3 FPGa’s y la
velocidad de render era de alrededor de 25 frames por
segundo.
Más adelante surge openRT, que es una nueva interfaz que se
espera forme parte de openGL para generar R.T. interactivo.
Con esta interfaz se produjo una versión de Quake 4, con R.T.
en tiempo real, produciendo unos efectos increíbles un cuanto
a sombras y reflejos.
Otros fabricantes no se quedan atrás y hace un tiempo aparece
el modelo de IBM para generar R.T.R.T. esta vez utilizando
tres playStation 3 trabajando en paralelo para producir la
imagen interactiva.
La Intel también publicó noticias sobre como logran el
R.T.R.T. con un procesador de 8 núcleos mediante su propio
algoritmo código cerrado.
Asimismo la marca de tarjetas de video NVidia no se queda
atrás y nos presenta su sistema optiX engine en SIGGRAPH
del 2009 que realiza real time R.T. con gráficos
excepcionalmente buenos y capacidad de generar mapas de
Voxels.
VI. RAY TRACING EN TIEMPO REAL
REFERENCES
[1]
[2]
http://medialab.di.unipi.it/web/IUM/Waterloo/node92.html
http://en.wikipedia.org/wiki/Ray_tracing_%28graphics%29
4
[3]
[4]
[5]
[6]
[7]
http://eliax.com/index.php?/archives/5254-NVIDIA-muestraRaytracing-en-tiempo-real-y-alta-definicion.html
http://eliax.com/index.php?/archives/5254-NVIDIA-muestraRaytracing-en-tiempo-real-y-alta-definicion.html
http://teleobjetivo.org/blog/ray-tracing-en-tiempo-real-en-la-ps3.html
http://teleobjetivo.org/blog/quake-4-usando-ray-tracing-en-tiemporeal.html
. http://ima.udg.edu/~gonzalo/teaching/tranpas/Ray-tracing.pdf
Descargar