#include <raytrace.h>
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 |
|
Definición en la línea 31 del archivo raytrace.C. |
|
Definición en la línea 36 del archivo raytrace.C. |
|
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:
|
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:
|
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:
OJO: La última posición de los arreglos `objetos` y `LUces` deben ser terminados en NULL. Precondición:
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:
|
Definición en la línea 43 del archivo raytrace.h. Referenciado por ejecutar(), modelo_de_iluminacion(), y seguimiento_rayo(). |