Deborah R. Fowler

Houdini Complex Scene Tips

Posted July 21 2018 Updated June 18 2025 — More to be added as we move into Solaris (LOD, Variants)

It is very important to pay attention to complexity — you can quickly create complexity in Houdini. Here are some tips updated from a previous PDF on the tips and tricks page.

These are guidelines. Like many things in Houdini there may be several right answers and often "it all depends." Although our hardware keeps improving, demands will catch up to the hardware — these tips will stay handy as software and hardware play their lifetime game of leapfrog.
Display Only What You Need

Working in a complex scene may require you not to see all the geometry you are creating. You may even be using instancing to delay the geometry until render time (now available via packed geometry) to further optimize rendering. Use Packed Geometry.

If you are working on a shader, don't display all objects — turn on only the object you are working on. You can also easily copy that element into another file to work on it unconstrained.

If you are working on layout or lighting, you can use prototypes with Houdini's switch node to have the first frame for quick previewing and subsequent frames for rendering. Houdini also offers many display options on the top level container node.

Take advantage of the render-only and display flags combined with the null node. You can force objects on or off in your Mantra nodes.

If you don't need shaded mode, use wireframe — your interactions with the display will be faster.

Cull Geometry by Camera Frustum

Culling by camera frustum can save vast amounts of render time and is quick and easy to implement.

Example File
cullGeoByCamFrustum.hipnc
Cull geo by camera frustum — example 1 Cull geo by camera frustum — example 2

You can also use VEX instead of creating volumes — use VEX code to cull directly. See this YouTube walkthrough. I tested it in my Looooong Automaton and it worked great!

Example File
cullGeoByVex.hipnc
Cull by wrangle VEX
Example File
cullGeoByVex.hipnc — Solaris camera in SOPs (lopimportcamera)
Cull Solaris camera in SOP context
Example File
forumFileDeleteByUSDCameraFrustum.hipnc — cull in Solaris itself
Cull by USD camera frustum in Solaris
Reduce Cache Sizes by Deleting Unneeded Attributes

Example with POPs seen above, but this should be done with RBDs and other sims too. Use an attribdelete node — either syntax works. This step can substantially reduce cache sizes when caching simulations.

Reference
Attribute Delete — both syntaxes below
Sim to Points When Working with RBDs

See the RBD Intro section for a full walkthrough. Simulating to points and instancing geometry at render time keeps your simulation lean and fast.

Instance Using the Point Instancer Whenever Possible

Instancing is essential for complex scenes. It defers geometry to render time and dramatically reduces viewport and render overhead.

Tip: you can use the USD Configure node in the SOP context before exporting, or in Solaris on the import nodes.

USD Configure node in SOP context
Render Small Resolution for Tests

Unless you are working on texturing, shadow, or sampling parameters, render small tests for quicker feedback. You shouldn't be waiting long periods of time to test lighting or shading changes — there is no need to render the entire scene at full resolution. Work smart = work fast.

Optimize Your Textures

Mari and Substance often produce large textures (4K) that are not necessary for a given purpose. Think about how large your object will be on screen and size accordingly. Often less than 1K (512 or even 256) is sufficient unless it's right in your face on screen.

Size of your textures affects both disk space on the farm and access time. Large files being accessed for displacement, color, and so on are going to take time — make sure these files are not huge, particularly when you have multiple items using them. Start with 512 or smaller, and size up only if artifacts appear and it is necessary.

Houdini's Mantra renderer works most efficiently with RAT files. It takes only a few seconds to bring your TIFF, JPEG, etc. source file into mplay and save it as a RAT file.

mplay is analogous to Maya's fcheck but has different features.

Optimize for Render

Select the renderer that is optimal for your scene and split up your scene if necessary.

It can be helpful to split your scene into render layers, and if desired, render passes. These are different things — you can have render passes of render layers.

  • Layers are when you split geometry (foreground, midground, background) — being careful to account for relationships between them. This can save a huge amount of render time, particularly for held elements that need only be rendered for one frame.
  • Render passes are about splitting up the lighting layers for more control in compositing.

Both are excellent practices used by studios, but come at a pipeline cost of possible errors and overhead. Different layers may use different rendering/shading algorithms.

  • If using Redshift: similar settings in the rop node for objects (passes) and AOV for layers — see the Redshift overview section.
  • If using Karma: there is a separate node to set up these advanced lighting techniques.

For 99.99999999% of what you do, use Physically Based Rendering. It may look as though there are many choices, but they are really a mix and match of rendering and shading algorithms. PBR uses raytracing and physically based shaders.

Micropolygon Rendering

Equivalent to old RenderMan's REYES algorithm. Was used for:

  • Scenes with huge amounts of complex geometry that cannot be raytraced efficiently
  • Scenes with lots of motion blur or depth of field — computationally expensive shading happens once and is sampled in space/time
  • Scenes with lots of semi-transparent elements (volumes, sprites, points) — this sort of layering historically was slow to raytrace
  • Scenes with displacements (each primitive diced up into micropolygons which are shaded and sampled independently)
Ray Tracing — currently the most popular rendering algorithm
  • PBR uses raytracing, but select the PBR rather than the Raytracing option for physically based shading as well
  • Scenes with reasonable levels of complexity — as complexity increases, scenes become exponentially (give or take) slower
  • Scenes that require raytraced shading effects (such as reflections, refractions)
  • Scenes that require very sharp details in shading — micropolygon rendering tends to introduce softness by nature of the underlying algorithm (sampling by sending rays from the camera; each surface hit by a ray triggers a surface shader execution)
Micropolygon Physically Based Rendering — Don't Use
  • Designed for scenes with lots of motion blur. Superseded by PBR.
Physically Based Rendering ★ Use This One ★
  • Sampling using raytracing and shading using physically based. Best choice for almost everything.
Photon Map Generation
  • For backward compatibility only — PBR handles this.