Página principal | Jerarquía de la clase | Lista alfabética | Lista de componentes | Lista de archivos | Miembros de las clases | Archivos de los miembros | Páginas relacionadas

Referencia de la Clase RAYTRACER_CRIOLLO

#include <raytrace.h>

Lista de todos los miembros.

Métodos públicos

 RAYTRACER_CRIOLLO ()
 ~RAYTRACER_CRIOLLO ()
void ejecutar (IMAGEN_RGB *Resultado, ARREGLO< OBJETO_RAYABLE * > &arr_objetos, LUZ **LUces, CAMARA *Camara)
 Genera una imagen fotorrealista a partir de los `arr_objetos` y las `LUces`, y la retorna en `Resultado`.


Métodos privados

COLOR modelo_de_iluminacion (const OBJETO_RAYABLE *Objeto, ARREGLO< OBJETO_RAYABLE * > &objetos, RAYO *Rayo, const VECTOR &punto, VECTOR &normal, LUZ **LUces)
 Este método calcula la contribución de luz (en color rgb) que en el punto `punto` ejercen los `objetos` y las `**LUces` sobre el `Objeto` actual.

COLOR seguimiento_rayo (RAYO *Rayo, ARREGLO< OBJETO_RAYABLE * > &objetos, LUZ **LUces)
 Realiza el seguimiento del Rayo (que proviene de un observador) a travez de la escena determinada por los objetos con el fin de calcular la contribución de color (intensidad de luz) reflejada por la escena en la dirección opuesta al rayo.


Atributos privados

unsigned int nivel_de_recursion


Documentación del constructor y destructor

RAYTRACER_CRIOLLO::RAYTRACER_CRIOLLO  ) 
 

Definición en la línea 31 del archivo raytrace.C.

RAYTRACER_CRIOLLO::~RAYTRACER_CRIOLLO  ) 
 

Definición en la línea 36 del archivo raytrace.C.


Documentación de las funciones miembro

void RAYTRACER_CRIOLLO::ejecutar IMAGEN_RGB Resultado,
ARREGLO< OBJETO_RAYABLE * > &  arr_objetos,
LUZ **  LUces,
CAMARA Camara
 

Genera una imagen fotorrealista a partir de los `arr_objetos` y las `LUces`, y la retorna en `Resultado`.

Utiliza el metodo de raytracing (i.e. raycasting recursivo) aplicando un modelo de iluminacion simple, el cual podria ser extendido.

Este es el conocido "raytracing criollo", ya que ha sido desarrollado en su totalidad en Colombia por el grupo DFAC (esta basado en el trabajo pionero de Hernando Barragan - hbarraga@uniandes.edu.co).

Este raytracer esta disponible para ser extendido, y para implementar rutinas y estrategias especiales que sean requeridas por un futuro investigador.

Definición en la línea 42 del archivo raytrace.C.

References COLOR::b, BOOLEAN, BYTE, COLOR::g, CAMARA::generar_rayo(), nivel_de_recursion, CAMARA::preprocesar_vista(), IMAGEN_RGB::putpixel(), COLOR::r, seguimiento_rayo(), ARREGLO< T >::tam(), IMAGEN::xtam(), y IMAGEN::ytam().

Here is the call graph for this function:

COLOR RAYTRACER_CRIOLLO::modelo_de_iluminacion const OBJETO_RAYABLE Objeto,
ARREGLO< OBJETO_RAYABLE * > &  objetos,
RAYO Rayo,
const VECTOR punto,
VECTOR normal,
LUZ **  LUces
[private]
 

Este método calcula la contribución de luz (en color rgb) que en el punto `punto` ejercen los `objetos` y las `**LUces` sobre el `Objeto` actual.

Lo hace evaluando un modelo de iluminación que suma las contribuciones individuales resultantes de los siguientes fenómenos: 1. Luz ambiente (aproximación de la técnica de raytracing para simular la iluminación global) OJO: Por ahora es una constante que debe cambiarse si se combina el algoritmo de raytracing con un resultado proveniente de un cálculo de iluminación global o radiosidad. 2. Contribuciones de las fuentes de luz (nótese que en la técnica de raytracing las luces son puntuales, resultando en sombras sin penumbra), y a partir de cada fuente de luz se tiene una contribución de luz difusa y una de luz especular. 3. Reflexión 4. Refracción (no implementado aún)

Bibliografía: [FOLE92] Foley, vanDam, Feiner, Hughes. "Computer Graphics, principles and practice" - second edition, Addison Wesley, 1992.

Definición en la línea 108 del archivo raytrace.C.

References OBJETO_RAYABLE::ambiente, COLOR::b, OBJETO_RAYABLE::coeficiente_de_reflexion, OBJETO_RAYABLE::difusa, RAYO::direccion, OBJETO_RAYABLE::especular, COLOR::g, nivel_de_recursion, VECTOR::normalizar(), RAYO::origen, OBJETO_RAYABLE::phong_coef, OBJETO_RAYABLE::phong_exp, LUZ::posicion(), VECTOR::producto_punto(), COLOR::r, y seguimiento_rayo().

Referenciado por seguimiento_rayo().

Here is the call graph for this function:

COLOR RAYTRACER_CRIOLLO::seguimiento_rayo RAYO Rayo,
ARREGLO< OBJETO_RAYABLE * > &  objetos,
LUZ **  LUces
[private]
 

Realiza el seguimiento del Rayo (que proviene de un observador) a travez de la escena determinada por los objetos con el fin de calcular la contribución de color (intensidad de luz) reflejada por la escena en la dirección opuesta al rayo.

Notese que en este seguimiento pueden presentarse 3 situaciones:

  • Se ha alcanzado el máximo nivel recursivo de seguimiento del rayo. En este caso se retorna negro, significando "sin contribucion de luz".
  • No se encontro ningun objeto en el camino del rayo. En este caso se retorna el color del fondo de la escena en la dirección del rayo.
  • Se ha encontrado un objeto en el camino del rayo. En este caso se calcula el punto de intersección con el objeto, y la normal en ese punto, con el fin de evaluar el modelo de iluminación y calcular el color del objeto intersectado en ese punto.

OJO: La última posición de los arreglos `objetos` y `LUces` deben ser terminados en NULL.

Precondición:

\[ \mathbf{Q} := Rayo->direccion.norma() = 1 \]

NOTA DE EFICIENCIA: En una aplicación tipica de raytracing este método toma cerca del 30% del tiempo total de ejecución, según pruebas realizadas con profilers (i.e. g++ -g -pg y gprof --flat-profile). Cualquier optimización que pueda realizarse en este método va a ser importante.

Definición en la línea 269 del archivo raytrace.C.

References COLOR::b, RAYO::direccion, COLOR::g, modelo_de_iluminacion(), nivel_de_recursion, RAYO::origen, VECTOR::producto_punto(), COLOR::r, y ARREGLO< T >::tam().

Referenciado por ejecutar(), y modelo_de_iluminacion().

Here is the call graph for this function:


Documentación de los datos miembro

unsigned int RAYTRACER_CRIOLLO::nivel_de_recursion [private]
 

Definición en la línea 43 del archivo raytrace.h.

Referenciado por ejecutar(), modelo_de_iluminacion(), y seguimiento_rayo().


La documentación para esta clase fué generada a partir de los siguientes archivos:
Este archivo HTML ha sido generado automáticamente a partir del código fuente AQUYNZA. NO LO EDITE. Para mayor información contacte al autor.