domingo, 13 de abril de 2008

precomputed radiance transfer!!!!!!!......sniff, sniff

Ouuuuuuuuu!!!!!!! yeah baby!!!!!!. Se acaba de implementar el prtEngine de DX en el framework para la carga de datos precomputados para toques de diffuse lighting como subsurface scatering (cuando la luz traspasa objetos muy delgados), occlusion term( cuando un objeto es bloqueado por otro, consecuentemente generando una sombra), self-shadowing(cuando se generan sombras en un objeto con zonas ocluidas en sí) y por supuesto, radiance transfer(transferencia o influencia de luz sobre otros objetos!!!

Ejemplos de subsurface scatering en el framework:

Como puedes observar la luz es absorbida por el modelo. Este es el modelo original:


Posiblemente se pueda llegar de muchas maneras a este ejemplo, pero no con lo que sigue:


Lo que ahora se observa es la parte desde atras del modelo y como se puede apreciar, la luz que se absorbe en las "orejas" se puede apreciar aun y cuando el modelo es un oclusor de la luz!!!



Una observacion cuidadosa tambien revela la capacidad del engine para computar zonas ocluyentes de luz(zonas en donde no debería haber luz simplemente porque la "tapan"). En la imagen de arriba se puede apreciar que aun y cuando la luz esta de frente al modelo, esta no llega a la zona interior de la boca y aun poco de los ojos.


La imagen de arriba claramente muestra la capacidad de generar softshadows cuando un modelo ocluye a otro. Podemos ver que las rocas flotantes generan una sombra en el piso del modelo(al igual que los pilares, aunque no se aprecia mucho debido a la direccion de la luz).
La imagen siguiente muestra la misma escena pero con 2 luces:
Ahora se puede apreciar mejor la generacion de sombras suaves o softshadows.

En la imagen de arriba se puede apreciar un ejemplo característoc de zonas ocluidas por modelo.
Aunque la fuente de luz proviene de la esquina inferior izquierda, solo el primer pilar recibe la intensidad entera, pero no sucede lo mismo con los pilares colocados de su lado.

Actualmente el framework carga los archivos de datos precomputados. Esto porque actualmente hay una herramienta en el sdk de dx que permite computar datos de transferencia.
Claro, solo es cuestion de tiempo para que se incluya en el framework y no haya necesidad de usar la herramienta, pero se hizo así porque los datos se interpretan más fácil cargandolos y visualizándolos que calculándose y guardados :S.

1 comentario:

Tony Peña dijo...

pues me gustaria saber a donde quieres llegar con este proyecto, cuales son tus ideas...

si me llama la atencion y me parece uinteresante...

cual es a idea general de esto?