Tuesday, January 24, 2012

3Delight for Maya | Partículas

Este es lo mismo que tengo en el otro tutorial que anda por allí, solo en español ;)

Bueno, la escena la pueden descargar de aqui  es básicamente una esfera en movimiento, que ademas esta emitiendo particulas. El emitter type es surface y en el tab texture emission attributes, el checkbox de inherit color esta activo. Aqui mismo esta conectada la rampa de color de la esfera y finalmente, particleShape1 tiene opacityPP y rgbPP activos tambien.

 


Ahora,  sabemos que si añadimos a la mezcla algun turbulence field, podemos darle algo de movimiento a nuestras particulas, pero tambien podemos crear un fluid3D y hacer que esas particulas se muevan como fluido.


Primero, vamos a ocultar las particulas (ctrl + h). Luego, creamos un fluid container 3D (menu Dynamics -> Create 3D Container). Hay que ajustar un poco el tamaño para cubrir todo el giro de la esfera. En el attribute editor, cambien los valores de size a 10 20 20:


Una vez que tenemos cubierta el area por donde pasa nuestro objeto, vamos a seleccionar la esfera, despues el fluid container y vamos al menu de Fluid Effects -> Add/Edit Contents -> Emit from Object.

Si dan play a la animacion, van a ver que tenemos emision de fluidos, pero no se ve tan interesante.



Vamos a seleccionar el fluido, abrimos el attribute editor y cambiamos Base Resolution a 30 en el tab de Container Properties, en el tab de Dynamic Simulation, cambiamos Simulation Rate Scale de 1.0 a 10.


Si vemos la animacion (click play), tenemos algo como esto:


No esta mal, pero vamos a hacer algunos ajustes: Primero, abriendo el attribute editor del fluid container, vamos al tab Contents Details -> Density y cambiamos Buoyancy de 1.0 a 0; Contents Details -> Velocity y cambiamos Swirl de 0.0 a 2.

Si son impacientes, vean como se comporta ahora la simulación.

No tenemos velocidad aqui. Seleccionamos el fluid container, abrimos el attribute editor y en la pestaña fluidEmitter1, en el tab Emission Speed Attributes, seleccionamos Add en el drop down menu de Speed Method. Aqui el fluido hereda la velocidad de la esfera.


Volvamos a las particulas (las hacemos visibles de nuevo). Si damos play a la animacion, veremos el comportamiento del fluido y de las particulas. Para que las particulas se muevan como el fluido, seleccionamos el fluid container, luego las particulas y del menu Fields (en Dynamics) damos click en Affect Selected Object(s).



Estamos muy cerca, pero hay algo mas con las particulas. Seleccionamos particle1, abrimos el attribute editor y en el tab particleShape1, en la seccion General Control Attributes cambiamos conserve de 0.98 a 0 (tambien podemos ocultar el nodo fluid1, pero a camara solamente).


Si en este punto ocultan (ctrl + h) el fluid container, se detiene la simulacion. Para el momento de render, sera necesario hacer cache de las particulas.


Para la simulacion del video anterior, hice un ajuste en el fluid container: simulation rate scale = 4, swirl = 4. Tambien Rate (Particle/Sec) de emitter1 es de 2000.



Una vez que esten felices con su simulacion, es hora de preparar el render. Cargamos el plugin de 3delight y del menu 3Delight -> Add Render Pass -> Full.

Si hacemos un render default, veremos un cuadro negro desplegarse en i-display (pero en el alpha channel tenemos las particulas y el fluido - click a en el teclado).

Seleccionamos las particulas en el viewport y en el menu Solvers, damos click en Create Particle Disk Cache. Ahora si ya podemos ocultar el nodo fluid1 en el outliner.

Creamos un spotlight y lo ajustamos a que cubra nuestras particulas. Si hacemos un render, veremos la esfera y las particulas:

El color de cada particula y la opacidad estan presentes (se exportan como primvars) pero necesitamos "leerlas". Para esto, abrimos el hypershade y del menu Create -> General Utilities click en Renderman Code. Este nodo sirve para insertar codigo SL directamente a nuestro shading network.

Seleccionamos el nodo y abrimos el attribute editor. Vemos dos secciones: Shading Parameters y Shading Code. Damos click en el icono al lado de Shading Parameters y escribimos:


shader_input varying color rgbPP
shader_input varying float opacityPP

output float o_outParticleOpacity
output color o_outParticleColor

Y en la seccion de shading code:

o_outParticleColor = rgbPP * opacityPP;
o_outParticleOpacity = 1 - opacityPP;
 En la parte de shading_input es para 'leer' las variables de color y de opacidad que se estan exportando con el plugin de 3delight y simplemente las estamos exportando como una variable de color y una flotante (el codigo en la imagen de abajo no tiene "* opacityPP", no olviden incluirlo).


Vamos a crear un surfaceShader y asignarlo a las particulas. En este nodo vamos a conectar la salida de nuestro renderman code node (el color y la opacidad).


Y tambien





Si hacemos un render hasta este punto, tenemos algo como esto:

Hasta este punto tenemos opacidad y color, pero si queremos agregar diffuse, podemos hacerlo haciendo un pequeño ajuste a nuestro rendermanCode node:


Aqui agregamos la linea varying color maya_diffuse a shading parameters. Y para verla en accion, en Shading Code modificamos
o_outParticleColor = rgbPP * maya_diffuse * (opacityPP);

Y aqui conectamos lambert1:

Un render hasta este punto nos da:


Faltan sombras. Si activamos Use Depth Map Shadows en el spotlight, obtenemos:

Lo mejor es utilizar deep shadow maps (para rescatar la opacidad). Seleccionamos el spotlight y abrimos 3Delight -> Assignment Panel. En la parte de Attribs, damos click al checker box para crear delightLightAttribs1. Del menu Add/Remove Attributes, seleccionamos Shadow Maps -> Shadow Type (por default, se creara tambien Generate Shadow Maps) Una vez que Shadow Map Type este activo y como deep, podemos eliminar Generate Shadow Maps de la lista.


Y finalmente, podemos ajustar el dmap bias en el spotlight, incrementar el shutter angle de la camara y activar el motion blur en el render pass:


Y la animacion:



Hay un par de cosas como custom shaders para nuestro spot y el tema del espacio de color (de sRGB a lineal) que no quise tocar aqui porque se prestan para algo mas extenso. Ademas, el espacio de color como lo muestro en el tutorial en ingles, no es correcto.

Escena final.. tiene que rehacer el cache.


Los invito a que visiten Deathfall y si tienen mas dudas, pueden crear un nuevo thread. http://www.deathfall.com/forums/forumdisplay.php?2-Renderman

Saludos,

3 comments:

Unknown said...

Thank you for this dude, it's very helpful.

Unknown said...

buen dia señor piña mi 3delight no renderea a disco sera por que es la version gratuita o no lo hago bien

Unknown said...

George, revisa que la ruta donde quieres escribir los archivos exista (en Image Filename de tu renderPass).
La version gratuita solo esta limitada al numero de procesadores, asi que sospecho que es la ruta lo que esta mal.