Tuesday, April 28, 2009

car paint

Hace unos dias empece con un proyecto donde necesito metales. Los mas comunes son el cromo y acero (con y sin cepillar - anisotropico). También plastico (con mucho brillo y casi mate). Tal vez uno o dos componentes con pintura (como el mia_car_paint ).

En 3delight no hay un nodo que traduzca este nodo de mental ray (como el architectural.sl) y aunque esta planeado junto con otro nodos (http://www.jupiter-jazz.com/wiki/doku.php?id=wiki:software), esperar la proxima version no es una opcion ;)

Asi que buscando en google encontre esto: http://sfdm.ca.scad.edu/faculty/mkesson/vsfx319/wip/best_fall2008/martin_sawtell/car_paint/car_paint.html, pero no me convencio la forma de resolver los componentes, asi que empece con un rendermanCode node y un mia_car_paint_phen. La documentacion (http://download.autodesk.com/us/maya/2009help/mr/shaders/paint/paint.html) me hizo recordar un shader que maneja difuso con un falloff. El shader lo escribio Matt Pharr pueden ver el código en la página 65 y 6 de este documento http://www.scribd.com/doc/886637/sig02-course16.

El componente difuso cambia en base al angulo de la superficie con la cámara. También el inverso del "facing ratio" actua como difuso, pero en la pintura de autos nuevos es negro. Y finalmente, el angulo de la superficie con los puntos de luz tambien tienen una variación. Por lo que cada componente de difuso (base, edge y lit) tiene tambien un color correspondiente. El código en los tres casos es muy similar (en lit, el lugar de calcular el ciclo de illuminance con el vector de cámara I, usamos L, que son los puntos de luz). Al final, cada componente se suma.

A la derecha hay un render de los componentes del difuso. Abajo mental ray y arriba 3delight. Hay algunas diferencias, pero no son significativas. Ademas, con este shader trato de aproximarme lo mas posible al resultado de mental ray.

Los componentes de specular estan basados en el modelo Phong y para evitar problemas de multiples puntos a lo largo de la superficie (que sucede cuando se usan scripts como el generado por Binary Alchemy o HDRShop), el shader utiliza categorias (message passing).

La sección de reflection la robé directamente del código de architectural.sl, incluida en la distribución de 3delight. Honestamente, es la parte mas tricky para mi y por un momento pense en hacer esta pasada por separado, pero no existe (o aun no se como resolver) algo como mip_rayswitch de mental ray :)

Dentro del código y como mera joteria, se incluye la opción de calcular occlusion , reflection occlusion (solo por protocolo :p ), normales y un par de mates.

Este es un render comparativo (arriba el de 3delight):
Las principales diferencias estan en el edge_color (mas azul en el de 3delight), la dirección del ambiente HDR y un poco del blur o glossy. Haciendo un difference entre las dos imagenes, el ambiente HDR es lo que mas salta, pero creo que se debe a la forma de crear el archivo con tdlmake.

En still funciona perfecto.. pero si no se mueve no cuenta ;)

Algo que no esta resuelto es la parte de flakes :) Tengo algunas texturas procedurales, pero las opciones que tiene el mia_car_paint van mas alla de lo que puedo resolver en lo que me queda para tener listo el shading. Asi que mi plan B es hacer un bake con mental ray y utilizar esta textura para "mattear" un reflejo.

Y porque no lo hice en mental ray? buena pregunta...

Friday, April 10, 2009

ptc based GI - animation

Este es una animacion (simulacion con nCloth) aplicando GI.

Wednesday, April 8, 2009

Oldman sketch

Ya se, no habia publicado nada.
Finalmente aqui esta algo que habia hecho hace como un mes (antes de la cirugia en mi muñeca derecha) La idea surgio de estar navegando en la pagina de ArtRenewal, vi una escultura de un hombre viejo hecha por Valentin Okorokov y pense que seria un buen ejercicio empezar desde un cubo y asi fue.

Hecha entre mudbox 1.0.7 y zbrush. Espero pronto hacer un ejercicio de cuerpo completo.



Les dejo una imagen de los niveles (el ultimo nivel fue de 1.9m de polys), un render desde Zbrush, y un 360.