Ray tracing

22

description

realism

Transcript of Ray tracing

Page 1: Ray tracing
Page 2: Ray tracing

Problema

Macroalgoritmo

Desventajas

Ray casting

Ray tracing

Objetos que se pueden usar

Bibliografía

Page 3: Ray tracing

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

Page 4: Ray tracing

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.

Page 5: Ray tracing

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

Page 6: Ray tracing

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

Page 7: Ray tracing

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) ;

}

Page 8: Ray tracing

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 ;

}

}

Page 9: Ray tracing

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

Page 10: Ray tracing

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.

Page 11: Ray tracing

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

Page 12: Ray tracing

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

Page 13: Ray tracing

Para refracción

I1 = Ia 1 + Id 1 + Is 1 + kr I2 + kxI3

kx = coeficiente de refracción

Recursión doble

Page 14: Ray tracing

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

Page 15: Ray tracing
Page 16: Ray tracing

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

Page 17: Ray tracing

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||

Page 18: Ray tracing

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

Page 19: Ray tracing

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

Page 20: Ray tracing

Triangulo

› Obtener V1, V2, V3

› N1=V1xV2

› N2=V2xV3

› N3=V3xV1

› N1.N2>0

› N2.N3>0

› N3.N1>0

P

V1 V2

V3

Page 21: Ray tracing

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.

Page 22: Ray tracing

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