On this page |
RenderMan for Houdini ¶
RenderMan provides its own bridge product called “RenderMan for Houdini”. Please follow this link for more information: setting up “RenderMan for Houdini”.
Legacy Setup ¶
Earlier versions of Houdini shipped with dedicated RenderMan nodes and SOHO scripts. With the release of the “RenderMan for Houdini” bridge product, these nodes have been deprecated and hidden in $HFS/houdini/OPlegacyRMan
(included in OPcustomize
script). The following information is presented for legacy setups only.
Rendering with RenderMan is done in Houdini thru a RenderMan render output driver node. It generates a RIB stream and pipes it to the prman
executable specified in the Command parameter. It is also possible to save a .rib
file to disk, by turning on the toggle next to the Disk File parameter.
Under the hood, the output driver node runs SOHO scripts, taking into consideration the RenderMan version specifiedc in the Render Target parameter. The scripts inspect the scene and write out a corresponding RIB, compiling any VOP shaders such as RSL Material, if necessary.
Setting up RenderMan ¶
In order for Houdini to be able to find all the necessary RenderMan tools, first you will need to set a few environment variables:
-
ensure the
RMANTREE
is set to the installed version of RenderMan, for example:export RMANTREE=/opt/pixar/RenderManProServer-21.0
-
ensure the search path includes the
bin
subdirectory of RenderMan, for example:export PATH=$PATH:$RMANTREE/bin
-
set the
HOUDINI_DEFAULT_RIB_RENDERER
to the desired version, for example:export HOUDINI_DEFAULT_RIB_RENDERER=prman21.0
After setting up these three environment variables, Houdini should be able to use RenderMan.
Choosing a renderer ¶
Each RIB target renderer has its own executable, way of compiling shaders, attributes, options, and features. Much of this is handled by Houdini behind the scenes. However, as a big head start, you can give Houdini a hint as to which render you are using by setting the environment variable HOUDINI_DEFAULT_RIB_RENDERER
to the render target you want to use. The list of renderers can be inferred by looking at the $HH/RIBtargets
and also at $HH/soho
directory and scanning the files. The current renderers include prman21.0
.
Houdini uses this variable in several places. In the hrmanshader
script (a wrapper around the shader compiler), the variable controls which compiler program to call. It also controls which properties appear on the RIB output driver.
To... | Do this |
---|---|
Set the default RIB renderer |
Set the # set up for prman21.0 export HOUDINI_DEFAULT_RIB_RENDERER=prman21.0 |
Setting up the display driver ¶
RenderMan version 20.2 and up ships with a Houdini display driver, so there is no need for any additional setup, beyond specifying houdini
in the ROP node’s Display Device parameter. Once this is done, the RIB renderer will render directly to MPlay.
It is also possible to reconfigure RenderMan to remap framebuffer
device to Houdini display driver, so that all framebuffer rendering goes to MPlay as well. This can be done in rendermn.ini
with this line:
/displaytype/framebuffer houdini
Customizing the View: RenderMan menu ¶
Overriding the shader path ¶
Houdini will set the path to the default path each renderer expects. You can override the shader path in two ways:
-
Set the path by adding the rendering parameter to the output driver (preferred method).
-
Set the environment variable
HOUDINI_RI_SHADERPATH
.
If you customize the path, you should include $HFS/ri_shaders
in the path for light shaders. If you don’t customize the path, Houdini will look for directories named ri_shaders
in the HOUDINI_PATH
.
For RIS shader plugins there is a HOUDINI_RI_RIXPLUGINPATH
environment variable. But you don’t need to include $HFS/ri_shaders
in your customization, since Houdini does not look for directories named ri_shaders
because Houdini does not ship with any custom RIS shader plugins. Thus the implicit default of $RMANTREE/lib/RIS
usually suffices.
Customizing object parameters ¶
If you are using RenderMan as a primary renderer, you may not want to see all of the mantra parameters in your geometry objects. You can customize the geometry object to create objects with RenderManparameters instead.
To... | Do this |
---|---|
Customize object parameters |
Once you save the parameters as permanent default parameters, they will be applied to all new objects. (You can do the same with the light and camera objects, though lights should work fairly well out-of-the-box in Houdini). |
Tip
You can improve shading quality by adding the Shading Interpolation parameter.
Importing shaders ¶
You can use VOPs to create RSL shaders, or you can import other shaders that you have written. Importing is done by creating Houdini Digital Assets that correspond to the written shaders.
To import shaders, run a Python script which parse the output of sloinfo
(prman), aqsltell
(Aqsis), sdrinfo
(Pixie), etc. Houdini ships with 2 scripts: slo2otl.py
to convert prman shaders.
The scripts are reliant on being able to parse information about shader parameters, but should be fairly easy to customize for an unsupported renderer. The script tries to implicitly guess the HDA table type and is geared for RIS shaders which are VOPs, so light and displacement .slo files implicitly yeld a VOP HDA. You can force the HDA SHOP with the -t command-line switch.
For example:
slo2otl.py -t Shop -l myshaders.hda *.slo
This will create an HDA which can be loaded into Houdini. All of the recognized shaders will exist as SHOP nodes.
Note
Windows requires you to run hython in order to run Python.
hython sdl2otl.py -l myrmanshaders.otl *.sdl
Hython will not find the sdl2otl.py
script unless $HB
is included in the Python path.
Building RSL shaders using VOPs ¶
In addition to importing external .slo
shaders described above,
Houdini allows to build shaders using VOP networks
such as RSL Material.
You can assign RSL Material to objects by setting the Material parameter, or to individual primitives using the Material SOP, as described in the shading documentation.
RIS Rendering Mode ¶
To use RenderMan’s RIS rendering mode, turn on the RIS Mode parameter in the RIS sub-tab of the Properties tab on the RenderMan node. You can then optionally specify an integrator shader in the Integrator parameter. Please see RIS shaders for more information.
See also |