Houdini to RenderMan
Quick Reference


return to main index


Topics


Introduction

The following notes are intended to help artists who wish to use Pixar's prman renderer with Houdini. The notes were prepared by Murat Gonul, Sam Klock, James Littlejohn, Sean McEwan and Stu Schwartz of the Department of Visual Effects at the Savannah College of Art and Design.


How to set up Houdini for PRMAN

1
2

3

Go to Edit->Preferences->Rendering.
Select "Pixar's Renderman x.0", or shift click Renderman and "Mantra x.0" to keep the Mantra functionality.
Click "Accept".


How to Generate a Scene Rib File

1
2

Create a RenderMan output driver in the /out context.
In the Main tab check the "disk file" checkbox.


How to Export a Pre-Baked Rib Archive

1
2
3

4

Go to the /out context.
Click tab key.
Under Geometry (Renderman) select RenderMan Archive, or type "RenderMan Archive" to search for it.
In the parameters window, specify the geometry you wish to export under "Object 1".
Specify the output path under "Archive File 1".
Click "Render".


How to use co-shaders

1
2
3
4

5
6

7

8

Go to the /shop context.
Place your shader node.
Place your co-shader node(s).
If more than one co-shader is being used, then place an RSL Merge Co-Shader node (found under Co-Shaders).
Under Utility place an "Output Shaders" node.
Connect the output of your surface shader into the "next" input of the output shader (now labelled as "suboutput1").
Connect the output of your co-shader or mergecoshader node to the "next" input of "suboutput1".
Click on the surface shader and specify path to co-shader, ie. /shop/coshader.


How to Apply a Pre-Baked Rib Archive

Notes by Murat Gonul.
I found a very simple and interesting way of attaching rib files to geometry. The technique will let you display any geometry in the viewport but render the rib file. Another advantage is that since you can display any geometry in the viewport, you can apply any mantra shader and display its openGL counterpart in the viewport. Let's say your rib file is a glass teapot with the shader baked in, you can display a proxy geometry with a glass mantra shader on it.

1
2

3
4
5
6
7
8
9
10

11
12

13

14

15
16
17
18
19

Create a Geo node, rename it to "archive_export", and put a sphere in it.
Inside the "archive_export" enter a sin expression based on frame number to the Y Center of the sphere. Like sin($F*15).
Create a "RenderMan Archive" node in the "out" tree.
Change the "Valid Frame Range" to "Render Frame Range", and set the frame range to 0 24 1.
Enter the "Object 1" value /obj/archive_export.
Enter the "Archive File 1" value $HIP/$F4.rib.
Render the "RenderMan Archive".
Click on the blue flag of "archive_export" to make it not renderable.
Create a new Geo node, set its translate Z to 9.
Click on the little gear icon on top of the parameters of the new Geo node, and click "Edit Parameter Interface".
Navigate to "For Rendering" tab and set the Filter to "rib".
Navigate to "Pixar's RenderMan 15.0", click on "Geometry" and click the left arrow to add it to the parameter interface. Apply and Accept.
On the "Render->Geometry" tab of the newly created Geo node, you notice the "RIB Archive" parameter.
Enter the following expression to the "RIB Archive" parameter.
    $HIP/`padzero(4, (($F4 + abs(ch("./tz"))) % 24))`.rib
This expression will start the rib sequence and loop it based on the Z location of the Geo node.
Copy and paste the Geo node 6 times, and change their transform Z values to 6, 3, 0 ,-3, -6, -9.
Setup your camera and lights, and create a "Renderman" node in the "out" tree. Change its "Properties->Display->Display Device" to "it" instead of "framebuffer".
Set your render frame range from to 240 and render.


Instancing Rib Archives on the Vertices of a Mesh

1

2

3
4
5
6

7

To instance a rib archive you must create two objects. One object that will be instanced and another object with the points to be instanced.
First create a "geometry" container. Click on the little gear icon and go to the "edit rendering parameters" window.
Add the "rib archive" parameter from "pixar's renderman->geometry".
Direct this parameter to the rib file you want to instance.
Create an "instance" object. In effect it is just a geometry containter with modified parameters.
Under the instancing tab in the properties pane turn on point instancing and direct the "instance object" parameter to your geometry container with the rib archive.
Turn off the display of the rib archive object as other wise it will show up in addition to the instances of the rib archive.


Render time Sub-Division

1
2
3
4
5
6
7

Create a Geo node.
Click on the Gear icon on the parameters window.
Click on "Edit Parameter Interface".
In the left pane, click on "For Rendering", and Filter for "subdivision".
Select "Polygons As Hierarchical Subdivision (RIB)" and "Subdivision Scheme" and click on the right arrow to add them to the parameter interface. Apply and Accept.
Newly imported parameters will show up in the "Render->Geometry" tab.


How to use CSG Operations

1
2
3
4

5
6
7
8
9
10
11
12
13
14

15
16
17

Create a Geo node.
Click on the Gear icon on the parameters window.
Click on "Edit Parameter Interface".
In the left pane, click on "For Rendering", and Filter for "includes". Select "Obj post-include" and "Obl pre-include" and click on the right arrow to add them to the parameter interface. Apply and Accept.
Newly imported parameters will show up in the "Includes" tab.
Put "SolidEnd " without quotes in the post include parameter - don't forget the space.
Put "SolidBegin "primitive" without the first and the last quotes in the pre include parameter.
Copy and paste the Geo node.
Create a camera, or a render node. Both will work, but nothing else will.
Click on the Gear icon on the parameters window.
Click on "Edit Parameter Interface".
In the left pane, click on "For Rendering", and Filter for "includes".
Select "World include" and "World post-include" and click on the right arrow to add them to the parameter interface. Apply and Accept.
Newly imported parameters will show up in the "Includes" tab.
Put "SolidEnd " without quotes in the post include parameter, don't forget the space.
Put "SolidBegin "difference"" without the first and the last quotes in the pre include parameter.


How to use Procedual "Delayed Read Archive"

1
2

3
4

Create a "RSL Delayed Read Archive" node in the /shop context.
Direct the "RIB file" parameter to your RIB file. Specify correct bounds or your geometry will be clipped. Create a "Geometry" node in the /obj context.
In the properties of the Geometry node go to the Render->Geometry sub-tab.
Direct the procedual shader attribute to the "RSL Delayed Read Archive".


How to do Point-Based Occlusion

Notes by Sam Klock.
The method is similar to using Cutter ie. a pre-pass to bake the areas of the micro-polygons and a beauty pass to render the point based occlusion. These notes assume you have compiled your shaders and have updated your OTL.

1
2
3

4
5

6
7
8
9

10
11

12

Lay down both of your shading nodes, bakeArea and the point based occlusion shader.
You will also need two renderman /out nodes.
In the top right of the Houdini interface is a dropdown menu that should say Main. Open the menu and click new take. Main should change to "take1".
Go to the geometry node of the object you want to bake into a pointcloud.
Go to the material tab and your material will be locked. Right click the material name and select "include" in take.
It will now be unlocked. Point it at the bakeAreas shader.
Go back to the take list which should still say "take1" and set it back to Main.
Set the material parameter to the occlusion shader.
Go to the /out context. Under the frame range is a drop down menu titled "Render with take", set it to take1. The other rman output need not be edited.
Lay down a merge node in the /out context.
Wire in the bake output driver to the merge node FIRST. Then wire in the occlusion to the merge node.
Render from the merge node. It will first render the bake then the actual occlusion.




© 2002- Malcolm Kesson. All rights reserved.