Views
Soho
From Odwiki
SOHO: Scripted Output of Houdini Operators
Soho is the name of the Python/HOM sub-system introduced in Houdini 9.0+ that handles the export of scenes to the various renderers supported by Houdini.
Contents |
[edit] Introduction
Houdini 9.0+ sports a Python scripted interface for exporting scenes for rendering - or for baking out your scene for another purpose. This interface is invoked by ROPs in a specific way and this replaces the C++ hardcoded ROPs from previous versions of Houdini. If you examine the new ROPs distributed with Houdini 9.0, you'll see that they are merely (editable) HDAs which invoke python scripts. These scripts call certain routines in Houdini to fetch information about the scene and export this data to a specific renderer. These routines are the essence of SOHO and provide a robust, regulated and convient way of decomposing the scene for export. SOHO scripts do call HOM too.
You'll find that it's quite straightforward to export to custom renderers or modify sections of the currently distributed pipelines if you wish.
Please take a look at the Houdini distribution in $HFS/houdini/soho/soho.doc for documentations and in that same directory for the python scripts for all the currently distributed renderers.
The advantages of this are:
- new render exporters are easy to add
- the current exporters are easy to understand and to tailor to a studio's particular needs
- you get the full wealth of external Python modules to use
Uses:
- primarily, export to a renderer - as it provides neat methods for exporting a long list of entities and aids in the task of determining visibility of objects, parameters handling and "light wrangling".
- it could bake out a scene graph to an snapshot of the geometry for, say, export to another suite of 3D software
[edit] Supported Pipelines
[edit] Distributed
[edit] 3rd Party
[edit] Development
[edit] Concepts
- Wranglers: Light wrangling is a technique for customizing lights in Houdini using Soho. Every studio has their own ideas of what is important for a light source. Soho has some support for a method to simplify this process.
[edit] Resources
Here are some tips and guides for developing Soho interfaces:
- SohoWranglers : lights and camera export can be simplified by using "wranglers".
[edit] Tips
- There are a bunch of special parameter names that SOHO can evaluate. Things like state:time (which evaluates $F). To get a list of all the tokens, you can do the following
% cd $HH/soho
% hython
>>> import soho
>>> soho.getDefaultedString('state:alltokens', [' '])
>>> soho.getDefaultedString('state:allgeotokens', [' '])
- Getting variable values in SOHO. If the parameter name begins with a $, SOHO will evaluate the variable. Alternatively, you can use HOM to perform this evaluation.
[edit] Documentation
Here some alternate SOHO documentation
- SESI Master Class from SIGGRAPH 2007
- In the Houdini distribution there is $HFS/houdini/soho/doc.doc - a text file with describing the API calls.
- In the Houdin distribution you will find a number of pipelines which you can learn from.



