Graficos trazado de rayos

Solo disponible en BuenasTareas
  • Páginas : 8 (1885 palabras )
  • Descarga(s) : 0
  • Publicado : 8 de marzo de 2011
Leer documento completo
Vista previa del texto
Algoritmo simple
- Para cada píxel
- Crear un rayo desde la cámara
- Para cada objeto en la escena
- Intersecar con el rayo
- Guardar los datos si es el mas cercano

Algoritmo con iluminación
- Para cada píxel
- Crear un rayo desde la cámara
- Para cada objeto en la escena
- Intersecar con el rayo
- Guardar los datos si es el mas cercanoo calcular la interacción local de la luz y el material:
color = ambiente + difuso
ambiente = cAmb * cObj
difuso = cObj * cLuz * d
float d = dirLuz . normalObj

Algoritmo completo: sombra, reflexión, refracción
- recorrer todos los pixeles de la imagen
- generar el rayo para el pixel formado por los valores x e y del píxel
-obtener el color del píxel llamando al método de trazado de rayos:
o intersecar con todos los objetos de la escena: si no hay intersección con la escena, devolver el color de fondo; si hubo intersección, guardar los datos y:
▪ obtener aporte de sombra:
- para cada fuente de luz
- crear un nuevo rayo para la sombra, con origen en el punto de intersección ydirección de la luz
- intersecar el nuevo rayo con todos los objetos de la escena: si hubo intersección retornar color del material del objeto en cuestión, si no:
o acumular el color obtenido del calculo de la interacción local de la luz y el material: luz difusa y especular
▪ obtener aporte de reflexión si el material es reflexivo:
- hallar ladirección del espejo
- crear un nuevo rayo con origen en el punto de intersección actual y la dirección del espejo
- trazar el rayo secundario con una llamada recursiva a traceRay y acumular los colores obtenidos en cada llamada
▪ obtener aporte de refracción si el material es refractivo:
- hallar la dirección transmitida
- crear unnuevo rayo con origen en el punto de intersección actual y la dirección transmitida
- trazar el rayo secundario con una llamada recursiva a traceRay y acumular los colores obtenidos en cada llamada

Teoría

Trazado de rayos: determina la visibilidad de las superficies trazando rayos luminosos imaginarios desde el ojo del observador a los objetos de la escena.

Transformaciones:primero se transforma el rayo, luego se delega a la rutina intersect() del objeto hijo, y finalmente transforma la normal: el origen es transformado con la transformación inversa y la dirección solamente es transformada con la parte lineal de la transformación inversa (es decir la dirección no se traslada). No se debe normalizar la dirección del rayo para no cambiar el código de intersección.Algoritmo intersect para transformaciones

- transformar el origen con la transformación inversa
matrix.Transform(O);

- transformar la direccion con la parte lineal de la transformacion inversa, la direccion no se translada
matrix.TransformDirection(D);

- crear un rayo transformado
RayrayoTransformado(D,O);

- verificar interseccion delegando a la rutina intersect del objeto hijo
if(obj->intersect(rayoTransformado, h, tmin)){
Vec3f hNormal(h.getNormal());

• transformar la normal de la transfomacion para que se dibuje correctamente el objeto
normal.Transform(hNormal);

• normalizar lanormal del hit
hNormal.Normalize();

• actualizar valores
h.set( h.getT(), h.getMaterial(), hNormal, r);
return true;
}
return false;

Trazador de sombras: enviar rayos desde el punto visible a cada fuente de luz. Si alguna intersección es reportada el punto visible está en la...
tracking img