Ray tracing
-
Upload
aannewball -
Category
Documents
-
view
15 -
download
1
description
Transcript of Ray tracing
Problema
Macroalgoritmo
Desventajas
Ray casting
Ray tracing
Objetos que se pueden usar
Bibliografía
Dibujar una escena compleja
El color de un cuadrado es el color de la
luz que llega al ojo a través del hueco
Papel
Tarjeta con
hueco
Escena
Generar los rayos emitidos
Para cada rayo, seguir su camino hasta que : El rayo no golpea nada y golpea el ojo.
Un objeto es golpeado y el rayo se refleja hacia el ojo.
El rayo golpea un objeto transparente, se refracta y llega al ojo.
El rayo es reflejado/ refractado por varios objetos y golpea el ojo.
El rayo no llega al ojo.
Para cada cuadrado adicionar todos los valores de los rayos que pasan a través de él.
Este valor es almacenado en el pixel correspondiente de la pantalla.
Requiere muchos rayos
La mayoría de los rayos no llegarán al
ojo
En puntos de reflexión y refracción se
necesitará generar muchos rayos
adicionales
Tarea
El rayo no golpea ningún objeto Color del fondo.
El rayo golpea la fuente de luz Color de la luz.
El rayo golpea un objeto Se aplica un modelo de iluminación en el punto de
intersección
Se aplica color del objeto
Ojo
(cámara)
Pixel
Luz
Interse
cción
void TraceRay (vector start, vector direction, color color)
{
Interceptar rayo con objetos, encontrar la intersección más cercana
If (no intersección)
color = color de fondo ;
else
color = color de objeto (o modelo de iluminación) ;
}
void main (void)
{
for (row =0 ; end_row ; row++)
for (column =0 ; end_column ; column++)
{
calcular la dirección del vector (posición pixel - ojo) ;
TraceRay (eye_pos, direction, color) ;
screen (row)(column) = color ;
}
}
Forma simple de iluminación
No incluye reflexión ni refracción.
Rápido.
Puede ser paralelizada.
Puede extenderse a Ray tracing
Puede ser especializada
Un rayo pasa por el centro de cada pixel › Píxel central: [0, 0, D]
› Píxel superior izquierdo [-S/2, S/2, D]
› S = longitud del plano
› D = distancia del observador al plano
› Recorrido del plano Adicionar TamañoPixel/2 en X y Y
› UMM.
Extensión del Ray casting
Se introducen los fenómenos de reflexión
y refracción
Aproximación a la iluminación global.
Rayos reflejados
› R=2(-I.N).N+I
› I, rayo incidente
I1 = Ia 1 + Id 1 + Is 1 + kr I2
I2 = Ia 2 + Id 2 + Is 2 + kr I3
I3 =Ia 3 + Id 3 + Is 3 + kr I4
I4 = color de fondo
Ia = intensidad ambiente
Id = intensidad difusa
Is = intensidad especular
kr = coeficiente de reflexión de la superficie
Ii = intensidad en el i-esimo punto de incidencia
N
N
N
Observador 1
2
3
4
Para refracción
I1 = Ia 1 + Id 1 + Is 1 + kr I2 + kxI3
kx = coeficiente de refracción
Recursión doble
Para cada píxel Forme rayo primario
Encuentre intersección más cercana
Si (existe intersección) Color (profundidad + 1,
final) PutPixel
Color (profundidad, colour) Forme nuevo rayo
Encuentre intersección Si (reflexión) Forme rayo reflejado Encuentre intersección más
cercana Color (profundidad + 1,
colour) Si (refracción) Forme rayo refractado Encuentre intersección más
cercana Color (Profundidad +
1,colour) Return colour
Intersección rayo – objeto
Cálculo de la normal en el punto de incidencia
Rayo paramétrico › punto.x = pos.x + t*dir.x
› punto.y = pos.y + t*dir.y
› punto.z = pos.z + t*dir.z
Rayo {[Xo, Yo, Zo], [X1, Y1, Z1]} › x = Xo + t . x
› y = Yo + t . y
› z = Zo + t . z
Esfera › (x-a)2 + (y-b)2 + (z-c)2 = r2
› x = Xo + t . x, y = Yo + t . y, z = Zo + t . z
› (x2 + y2 + z2 ) t2 + (x . (Xo-a) + y . (Yo-b) + z . (Zo -
c)).2t + (Xo-a)2 + (Yo-b)2 + (Zo-c)2 - r2 = 0
› Si t tiene raíz
Menor no negativo
› N = ( p - centro)/||p - centro||
Plano infinito › P[A, B, C]
› A x + B y + C z + D = 0
› D= - P.N
› t = (Axo + Byo + Czo + D) / (A x + B y + C z)
› Normal viene en el plano
Triangulo
› Serie de vértices
› Encontrar la normal al triangulo con el
producto cruz de dos de sus lados.
› Encontrar la intersección del rayo con el
plano definido por el triangulo.
› Revisar si los puntos están dentro del
triangulo
Triangulo
› Obtener V1, V2, V3
› N1=V1xV2
› N2=V2xV3
› N3=V3xV1
› N1.N2>0
› N2.N3>0
› N3.N1>0
P
V1 V2
V3
Cubo › Ecuación del plano de cada cara
› Plano cuyo punto de intersección sea más cercano
› Verificar si el punto está dentro de la cara
Maya › Interceptar con el cubo que encierra la maya
› Si el rayo intercepta este cubo
Interceptar con cada triangulo dentro de la maya.
Introductuion to ray tracing. Elassner
University of Hull. Notas de clase
http://www.siggraph.org/education/mat
erials/HyperGraph/raytrace/rtrace1.htm.
Overview of ray tracing