This is RenderMan 21 Documentation you are viewing. The Rmanwiki home page will redirect you to the current documentation.
One of the best things about Houdini is the simplicity of creating explosions. This tutorial will go over the steps required to create, shade, and render great looking explosions in Houdini using RenderMan.
The first step is to get RenderMan setup work with Houdini. This video gives a great initial introduction to the initial setup for RenderMan for Houdini.
After getting started, you will want to create a torus, upon which we will add a Fireball pyro effect. You can add a torus, by hitting TAB in the Scene View and type out "Torus".
After you drop the torus at the origina, select the "PyroFX" tab from the options on the right hand side. Select the "Fireball" and apply it to the Torus and hit ENTER.
I've modified the default pyro_sim node to make the simulation look a little more "full". So dive into the pyro_sim node by clicking on it. Once inside the pyro node, you will want to first modify the pyro node attributes.
You will noticed I have dropped the "Division Size" down and I have upped the "Size" of the simulation to 30 x 40 x 30. I have also added a stock gasrepeatsolver node after the source_fuel_from_torus node.
Finally I made a few modifications to the pyrosolver node as noted below:
You can increase the smoke amount from 1 to 3 if you want the simulation to have more smoke.
Now you can hit the play button in the lower right and have the simulation run for awhile. In this tutorial I used frame 21 for testing my shading and lighting.
One of the quick and easy steps for setting up RenderMan for use in Houdini is to use the shelf buttons. I next pressed the "RIS ROP" button on the shelf and that gives me a ROP (Render OPerator) and also places down a default path tracer intergrator and creates an RIS specific SHOP (RIS SHading OPerator network).
In order to help me gauge my lighting, I decided to drop a shiny sphere in scene for reference. I clicked in the scene view and hit TAB and typed "Sphere" to drop a sphere in the scene off to the left of the fireball. I then clicked into the "risnet1" SHOP network and hit tab and types "PxrDisney" to create a pxrdisney BXDF. I modified the paramaters of the PxrDisney shader to make it a shiny mirror ball as shown below:
Once I created my PxrDisney node, I need to assign that to the material slot on the Sphere object. I selected the Sphere object, then selected the Material tab in the properties and then selected and dragged the pxrdisney1 shader from the left hand Tree View and dropped it into the material slot.
As this point, I could start rendering my scene, but the fireball will be black and there are no lights in the scene, so it would look fairly boring at this point.
So we want to add some light sources. I decided to highlight the smoke of the fireball, so I added two lights, the first is a general "DayLight" providing a nice fill light source for the scene. I clicked on the "Env Day Light" shelf button, and then set the parameters of the day light source as shown below:
To also give some nice shadows on the smoke of the fireball, I add a "Rect Light" (using the shelf button) off the the left side of the fireball. The parameters are as show below. Note I scaled the light up uniformly by a factor of 10.
Now that we have lights in the scene, we could start rendering the fireball, but that would still be boring, since the fireball is not shaded yet. The next step is to build a shader network for the fireball volume simulation. There are two key variables from the simulation that we use to drive the shading network, "heat" and "temp". We get at the value of those variables on the simulation using the PxrPrimVar nodes as shown below. Note I dropped into the risnet1 SHOP node and hit TAB and typed PxrPrimVar to create each of the PrimVar shading nodes. In the first I look up the variable "temperature" and the second, I look up "heat".
So I want to drive the intensity of the fireball with the "heat" and I want to drive the color with "temperature". So first I add a PxrSeExpr node, to scale the temperature by a factor of 200. We do this so it more closely matches the scale we expect from our physically based PxrBlackBody node, which will take temperature and convert it to a color. We drag a connection from the "resultF" of the PxrPrimVar node, into the "floatInput1" of the PxrSeExprNode, and we set the value of the second float input to a constant value of 200, the expression in the PxrSeExpr node simply multiplies the input PrimVar value by 200 and feeds the resulting floating point output into the PxrBlackBody node.