510 likes | 718 Views
ILUMINACION GLOBAL. Los algoritmos para Iluminación y sombra podrían dividirse en 2 categorías: Iluminación Directa e Iluminación Global Para esta exposición se hablará de la segunda categoría. Repasando conceptos Emitida:
E N D
Los algoritmos para Iluminación y sombra podrían dividirse en 2 categorías: Iluminación Directa e Iluminación Global Para esta exposición se hablará de la segunda categoría.
Repasando conceptos Emitida: Es la más sencilla, se origina del objeto y no es afectada por ninguna fuente de luz. Ambiental: Es una componente de luz que se ha dispersado de tal manera en el ambiente que su dirección no puede ser determinada, pareciera que viene de todas las direcciones. Cuando luz ambiental llega a una superficie, se dispersa en todas direcciones. Difusa: Proviene de una dirección, es más brillante si viene en ángulo recto hacia abajo en una superficie. Una vez que toca la superficie se dispersa equitativamente en todas las direcciones asi que parece ser igualmete brillante sin importar dónde esté el ojo ubicado. Especular: Proviene de una dirección en particular y tiende a rebotar de la superficie en una dirección preferida. Se podría pensar como “brillo”, los metales o plásticos tiene una componente alta especular mientras que la tiza o una alfombra casi ninguna.
Luz Ambiental. Tomado de: http://mentalraytips.blogspot.com/2008/11/joy-of-little-ambience.html
Especular. Tomado de:http://habibs.wordpress.com/water-mathematics/ Recordando: Vector L apunta hacia la fuente de luz, V hacia el observador, N es el vector normal de la superficie, R es la dirección de la reflexión y H halves el ángulo entre L y V.
Difusa. Tomado de: http://www.directxtutorial.com/Tutorial9/B-Direct3DBasics/dx9B3.aspx
Iluminación Global • Trata de emular el comportamiento natural de la luz, usando un conjunto de algoritmos. • Cuando los rayos de luz chocan con algún objeto físico pueden pasar dos cosas: • El rayo da un rebote. • El rayo es absorbido. • Cada objeto al recibir luz, emite un poco de ésta hacia su alrededor lo cual produce: • Sombras • Reflexión de un objeto en los otros • Transparencias • Utiliza como parámetros de entrada: • las características físicas de los materiales de los objetos. • las luces presentes en la escena. • los mecanismos de interacción entre objetos.
Iluminación Global • Los métodos de iluminación global tratan de superar los problemas asociados con Ray Tracing. • Ray Tracer trata de simular la reflexión de la luz una sola vez para cada superficie difusa. • Un 0bjeto en una escena puede ser iluminado por sus alrededores con iluminación global. • Las imágenes resultantes son muy reales PERO es muy lento. • Con ray tracing las imágenes no parecen muy reales, son demasiado “perfectas”. (especular)
Método Radiosity El término radiosity se refiere a una medida de energía radiante, en particular, la energía que deja una superficie por unidad de tiempo. Con el tiempo, radiosity ha venido también a significar un conjunto de técnicas computacionales para calcular por medio de las computadoras la iluminación global de un ambiente. El método radiosity emerge recientemente en el desarrollo de la sintetización de imágenes. Este método representa el desarrollo de varias tendencias: el desarrollo de modelos basados en propiedades físicas, el uso de métodos computacionales más rigurosos la continua tensión entre la interactividad y el realismo computacional. Toda la energía emitida o reflejada por cada superficie es tomada en cuenta por la reflexión o absorción en las otras superficies.
Los primeros modelos de radiosidad que fueron implementados son los de Goral, Torrance, Greenberg, Battaile, Nishita y Nakamae. En ellos se asume la conservación de la energía en un entorno cerrado. La luz que abandona una superficie (su radiosidad) se descompone, por una parte, en la luz emitida por ella misma y por otra en la reflejada o transmitida proveniente de otras superficies (la luz incidente).
Método Monte Carlo (MC) • Es el método de radiosidad más sencillo de entender y el que es más acertado pero es el método más lento para calcular radiosity. Dispara rayos ejemplo por cada pixel en la escena. • Físicamente es el más acertado, maneja apropiadamente la transparencia al mantener el ángulo y el color de los rayos. • Es usado por muchos paquetes de ingeniería para calcular luz, así como fluidos, termodinámica etc. • Puede ser considerado como un método de fuerza bruta por algunos. • Siempre será correcto pero depende de las configuraciones definidas pues en ciertos casos puede ser muy granulado el resultado. • Usa poca memoria para operar y no depende o interactúa con otros, así que puede ser mucho más rápido que otros métodos si los requerimientos de memoria para esos métodos es alta.
Método Final Gather (FG) Se considera más rápido que Monte Carlo al costo de tener menos exactitud física y aumenta el uso de memoria. Es más rápido que MC por un factor de 2 o más ya que “almacena” los secundary bounces en memoria, permitiendo al sistema verificar puntos de evaluación previos y eliminar nuevos de ser necesario. Método Backdrop Only (BDO) Se basa en el algoritmo de MC, se diferencia en que sólo dispara rayos desde el fondo y geometría auto-iluminada. Es un método, escencialmente, non-bounced, por lo que es realmente rápido y muy útil para escenas outdoor que necesitan una iluminación de ambiente rápida. No requiere mucho uso de memoria.
En la siguiente imagen pueden verse las diferencias al usar Iluminación directa y radiosity Tomado de: http://freespace.virgin.net/hugo.elias/radiosity/radiosity.htm Parece iluminación real, el cuarto entero está iluminado, incluso las superficies que están lejos de la luz del sol, hay sombras suaves
Con Radiosity • La premisa básica es CUALQUIER luz que toca una superficie es reflejada hacia la escena. • Cualquier luz, no sólo aquellas que vienen de fuentes de luz directa sino cualquier luz. • Ahora es necesario distinguir entre objetos y fuentes de luz. Entonces, cualquier cosa puede considerarse una fuente de luz potencial. Básicamente, cualquier cosa que es visible puede emitir o reflejar luz. • Conclusión • No hay diferencias entre fuentes de luz y objetos • Una superficie en la escena es iluminada por todas las partes de la escena que son visibles para ella.
Ejemplo Una escena simple, un cuarto con 3 ventanas, algunas columnas. La iluminación vendrá desde fuera de las ventanas, se asume que la luz es del sol. Ahora, se procede a escoger una de las superficies en la escena y se considerará la luz en ella. Tomado de: http://freespace.virgin.net/hugo.elias/radiosity/radiosity.htm
Se procede a dividir la superficie en “patches” y se tratará de ver el mundo desde el punto de vista del mismo. Se toma uno de esos patches, imaginando que se es uno de esos patches: ¿cómo se ve el mundo desde su perspectiva? Tomado de: http://freespace.virgin.net/hugo.elias/radiosity/radiosity.htm
Desde el patch se puede observar lo que “ve”, el cuarto se encuentra oscuro ya que no hay luz entrante todavía (se dibujan los bordes para nuestro beneficio) Al agregar todas las luces que “ve” se puede calcular el monto total de luz de la escena que llega al mismo, esto será de ahora en adelante la luz total incidente Este patch sólo puede ver el cuarto y la oscuridad de afuera. Al agregar la luz incidente se podrá notar que ninguna luz llega allí. El patch está darkly lit. Tomado de: http://freespace.virgin.net/hugo.elias/radiosity/radiosity.htm
Si se tiene una vista desde un patch que se encuentra más abajo y se puede ver al sol desde fuera de la ventana. Al agregarse la luz incidental se verá que mucha luz llega aquí a pesar que el sol parece pequeño. Este patch está brightly lit. Tomado de: http://freespace.virgin.net/hugo.elias/radiosity/radiosity.htm
Luz en la columna: Una vez que el procedimiento se repite para todos los patches d ela columna y se agrega la luz incidental en cada uno de ellos se puede ver al pilar y ver cómo esas luces se ven. Aquellos patches que están más arriba y no pueden ver el sol están en sombra, aquellos que si pueden están iluminados. Para los patches que sólo ven parcialmente la luz del sol debido al borde de la ventana están iluminados dimly. Conclusión: Radiosity procede de una manera similar. Las sombras aparecen en aquellas partes de la escena que no pueden “ver” la fuente de luz. Tomado de: http://freespace.virgin.net/hugo.elias/radiosity/radiosity.htm
Tercera pasada Segunda pasada Primera pasada Cuarta pasada 16 va pasada Tomado de: http://freespace.virgin.net/hugo.elias/radiosity/radiosity.htm
Ahora los conceptos Para empezar con la parte teórica es necesario repasar algunos conceptos Emisión: Se ha dicho que se consideran las fuentes de luz y los objetos como lo mismo. En el mundo real, algunos objetos emiten luz y otros no. Los objetos absorben luz hasta cierto punto. Es necesario entonces distinguir las partes de la escena que emiten luz de aquellas que no. Radiosity maneja esto diciendo que todos los patches emiten luz pero para la mayoría de ellos la emisión es cero. Esta propiedad de los patches se denomina Emision. Reflectancia: Cuando una luz toca una superficie, parte de la luz es absorbida y se convierte en calor, el resto es reflejada. La proporción que es reflejada se conoce como reflectancia.
Luz incidente y excedente: Durante cada pasada será necesario recordas 2 cosas: cuánta luz llega a cada patch y cuánta luz sale del mismo, estas luces se denominan luz incidente y luz excedente respectivamente. La luz excedente es la propiedad visible del patch, cuando lo vemos es esta luz la que apreciamos. incident_light = suma de todas las luces que el patch puede ver excident_light = (incident_light*reflectance) + emisión Estructura del Patch: Ahora que se conocen las propiedades necesarias para un patch, es hora definir uno structure PATCH emmision reflectance incident excident end structure
Explicación del código Inicializar los parches: Para comenzar todos los patches deben estar oscuros, excepto aquellos que emiten luz. Para estos últimos se les inicializa con un valor de emisión que puede ser especificado por la escena, para los demás este valor es cero (negro). Loop de las pasadas: El código repite el loop tantas veces como sea necesario para producir una iluminación aceptable de la escena. Cada vez que se entra al loop, el código simula una reflexión de luz más en la escena. Cada patch toma luz de la escena: Cada uno de los patches es iluminado por aquello que puede ver a su alrededor. Esto se logra al renderizar la escena desde el punto de vista del patch y agregar la luz que ve. Calculo de luz excedente para cada patch: Al haber calculado cuánta luz llega a cada patch, se puede ver cuánta luz sale de los mismos. Este proceso debe repetirse muchas veces antes de poder obtener un buen efecto.
load scene divide each surface into roughly equal sized patches initialise_patches: for each Patch in the scene if this patch is a light then patch.emmision = some amount of light else patch.emmision = black end if patch.excident = patch.emmision end Patch loop Passes_Loop: each patch collects light from the scene for each Patch in the scene render the scene from the point of view of this patch patch.incident = sum of incident light in rendering end Patch loop calculate excident light from each patch: for each Patch in the scene I = patch.incident R = patch.reflectance E = patch.emmisionpatch.excident = (I*R) + E end Patch loop ¿Se han realizado suficientes pasadas? No, entonces ir a Passes_Loop Seudocódigo
Método de Radiosity: Los cómputos realizados con este método son diferentes a cualquier otro cómputo de iluminación ya que es independiente del observador. La intensidad de las superficies en el modelo son computadas antes de que se haga cualquier cálculo. Esta diferencia se puede ver como la diferencia entre: cómputos de iluminación demand-driven y data-driven
Demand-driven: Típicamente usado con z-buffer. El renderer calcula la ubicación de un polígono o cuál polígono está presente en un pixel en particular y luego necesita saber la intensidad o color para dibujar el polígono/pixel. Los cálculos de iluminación se realizan en el último paso por la demanda de saber cuál color/intensidad debe mostrarse en la pantalla. Data-driven: Radiosity usa esta aproximación para calcular la iluminación. En vez de calcular la luz como el último paso en el proceso de rendering, lo hace de antemano. Ciertas superficies en la escena tienen una intensidad inicial y el efecto que tienen sobre otras superficies en la escena se calcula de manera iterativa. Esto se realiza independientemente del observador. La presencia de estas superficies iluminadas en el modelos son las que llevan el computo del sistema
Modelo Radiosity: Este método está pasado en el modelo simple de transferencia de energía. Para cada superficie en un modelo: la cantidad de energía que es emitida se comprende de la energía que la superficie emite internamente más la cantidad de energía que es reflejada de la superficie. La cantidad de energía que es reflejada de la superficie puede ser caracterizada como el producto de la cantidad de energía incidente de la superficie y una constante de reflectividad de la superficie.
El radiosity de una superficie es la energía emitida. Esto es lo que se usa para determinar la intensidad de una superficie. La cantidad de luz emitida desde una superficie debe ser especificada como un parámetro en el modelo, así como para los métodos tradicionales de iluminación donde la ubicación e intensidad de las fuentes de luz deben ser especificadas. La reflectividad de la superficie debe ser especificada en el modelo. Lo único desconocido en la ecuación es la cantidad de luz incidental que toca la superficie. Esto puede ser calculado al sumar para todas las superficies la cantidad de energía que ellas contribuyen a esa superficie.
El “form factor” en la ecuación anterior está definido para ser la fracción de energía que deja la superficie i y llega a la superficie j, es por lo tanto un número en el rango (0..1). Este factor puede ser calculado por medios analíticos o a través de análisis geométricos.
Calcular el Factor de Forma Una simple relación geométrica ayuda a derivar la ecuación del cálculo de los factores de forma Fij com osigue: el área de la proyección normal de una superficie A en una superficie es reducida de acuerdo al coseno del ángulo entre ambas superficies A.cosθ Se define el Fij como el radio de la energía que va desde el patch Pi hasta el patch Pj, es decir: el porcentaje de ergía que sale del patch Pi y que llega al patch Pj.
Iluminación Global mejorada: Radiosity con Raytracing • Ni Radiosity ni Raytracing logran lidear completamente con el problema de la iluminación global. • Radiosity no puede mostrar las luces especulares. • Raytracing no puede mostrar bien las luces difusas. • Fue sugerido por Wallace, John R. como una solución definitiva, ya que toma las ventajas de ambos métodos y las une para lograr una iluminación mucho mas real. Ambiental Difusa Ambiental+Difusa Ambiental+Difusa+Especular
Iluminación Global mejorada: • Radiosity con Raytracing (Two path method) • Se utiliza para manejar de manera independiente las reflexiones de luz difusa-difusa y especular-difusa. • El componente especular se calcula sólo en la medida necesaria para el cálculo correcto del componente difuso. • Las reflexiones especular-especular y difusa-especular son calculadas a través de raytracing. • En la parte de radiosidad, extienden el factor de forma para incluir la transparencia.
Iluminación Global mejorada: • Radiosity con Raytracing (Two pass method) • Se sugirió un método extendido factor de forma de cálculo. Elfactor de forma incluye la parte de la energía después de cualquier número de reflexión especular y refracción. • Se utiliza el método estándar de radiosity para el calculo de las reflexiones difusas-difusas, y como un segundo paso usan raytracing para los otros calculos.
Radiosity en la actualidad • Real Time Radiosity • En gráficos en tiempo real por lo general sólo se utiliza la iluminación directa, que es la simulación de la luz que se emite desde una fuente de luz rebota en una superficie, y luego golpea el ojo / cámara. • En el pasado, Radiosity no podía ser usado para gráficos en tiempo real como lo serían los video juegos debido a la gran cantidad de cálculos que requería. • El impedimento para usar Radiosity para gráficos en tiempo real se debía a la incapacidad del hardware para procesar estos cálculos de manera instantánea. • Real Time radiosity se usa desde el año 2008. • Existen varias técnicas de radiosidad en tiempo real sobre el hardware de gráficos.
Radiosity en la actualidad • Real Time Radiosity • Técnica gathering : • La iluminación incidente en un punto es evaluada renderizando la escena desde ese punto. • Usualmente se renderiza cada superficie del hemicubo en un pbuffer. • Se ponderan los colores de los pixels para calcular la incidencia de la luz en ese momento.
Radiosity en la actualidad • Real Time Radiosity • Técnica Instant Radiosity: • Se trazan rayos desde la fuente de luz hacia la escena. • En el momento en que el rayo choca con una superficie se coloca una luz puntual en ese lugar para aproximar la luz reflejada desde ese punto. • El rayo sigue rebotando a lo largo de la escena y es atenuado por la reflectancia difusa de la superficie donde rebota. • Se utilizan direcciones aleatorias para los rayos que rebotan sobre las superficies • La cantidad de rayos lanzados desde la fuente de luz es N, cuyo valor debe ser igual o mayor a 100 para obtener una buena imagen. • Finalmente la escena es renderizada utilizando iluminación directa desde la fuente de luz y desde cada una de las luces puntuales que se crearon cuando los rayos rebotaron en las superficies. • Es necesario tener un hardware que tenga un buffer de acumulación amplio.
RadCAD RadCAD es una aplicación que permite el análisis de radiación térmica. RadCAD utiliza el método tracing de Monte Carlo para el cálculo de factores, conductores de radiación y costes de calor para representaciones reales de superficies o volúmenes cónicos. Características de RadCAD Técnicas de ray tracing proporcionadas por el método de Monte Carlo para el cálculo de factores, conductores de radiación y calor medioambiental. Métodos de radiosidad avanzados.
Cinema 4D Es un paquete desarrollado por MAXON Computer GmbH de modelado, animación y rendering. Es una aplicación popular entre los matte painters en producción de films, principlamente debido a la funcionalidad de BodyPaint 3D. Es igualmente popular entre artistas. Se ha utilizado en películas como Beowulf, The Golden Compass, Surf´s up, Spiderman 3, Polar Express, Monster House.
Blender Es un suite 3D, open source, disponible para la mayoría de los sistemas operativos bajo la licencia GNU GeneralPublic License.
Autodesk 3ds Max Software que permite modelar, animar y rendering a ser usado en juegos, películas y contenido para TV.
Vue Es un software que permite la creación, animación y rendering de ambientes naturales 3D. Sirvió como apoyo para películas como Terminator Salvation, Australia, Indiana Jones 4 y variadas campañas publicitarias
MyVirtualHome Software para diseño 3D de hogares.
Rhino Es una herramienta de modelado para diseñadores. Se puede crear, editar, analizar, documentar, renderizar, animar y trasladar curvas NURBS, superficies y sólidos. Modeling tools for designers
Videos • Cinema 4d v ray Vray GI GR Global Radiosity render • LightWave 9.2 Community Demo • Blender • Counter Strike Source V 1.6 (realtime radiosity) • Myvirtualhome