Houdini

Overview

Houdini is an advanced procedural modeling, animation, effects, simulation, rendering, and compositing package. Its power is based on procedural workflows. Working in Houdini involves creating networks of nodes connected together that describe the steps to accomplish a task.

The NVIDIA Omniverse™ Houdini Connector allows you to reference USD data straight from Omniverse Nucleus file paths and sets up the foundation for streamlining workflows between Omniverse and Houdini.

The Connector supports resolving Omniverse URLs in most Houdini contexts, and not just for USDs. For example, you can use omniverse:// paths in the Geometry context to read and write geometry formats (such as .bgeo). Likewise, such paths will work in the Image context for reading and writing textures.

Supported Versions

The Omniverse Houdini Connector supports the following versions of Houdini:

Version

Windows

Linux

USD Python Bindings

18.5.x

No Support

No Support

N/A

19.0.x

10, 11

Ubuntu 20.04, 22.04

Python 3.7.x

19.5.x

10, 11

Ubuntu 20.04, 22.04

Python 3.9.x

Houdini Linux Requirements

  • Houdini 19 will not run on glibc 2.34 distro’s like Ubuntu 21.10+ or Fedora 35+

Packages required:

libxkbcommon-x11 libxcb-icccm4 libxcb-render-util qt5-default qtbase5-dev

Note

If you continue to encounter Qt errors on startup, then check that you have installed the Qt required packages found here: Qt for X11 Requirements

Ubuntu 18.04 and CentOS 7.9 Requirements

Note

The Omniverse Houdini connector requires libstdc++.so.6 version GLIBCXX_3.4.26+

If you are running into issues regarding libstdc++.so.6 errors on Ubuntu 18, please try:

sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt update
sudo apt install gcc-9
sudo apt install libstdc++6{noformat}

CentOS 7.9 you will need to build libraries and update their linking to support libstdc++.so.6 version GLIBCXX_3.4.26+

Environment Variables

The Houdini Omniverse Connector requires Houdini 19.x.x (Python 3 version) to be installed on the user’s machine. Please see the Launcher documentation for installing Connectors.

After running the installer from the Omniverse Launcher, you should see a packages/omniverse.json file under your Houdini user preferences directory (e.g., %USERPROFILE%/Documents/houdini19.0/packages/omniverse.json).

You can add the following flags in the houdini.env file in your Houdini user preferences directory - all optional (e.g., %USERPROFILE%/Documents/houdini19.5/houdini.env):

HOUDINI_DSO_ERROR=2 # Helps detect connector plug-in load errors.
HOMNI_DEFAULT_CONNECTIONS="localhost" # Server connections opened each time file browser is invoked. Comma separated to add multiple Nucleus server connections.
HOMNI_ENABLE_LOGFILE=1 # Log file output is on by default.
HOMNI_ENABLE_HIP_CHECKPOINTS=1 # .hip files saved on Nucleus server with checkpoints enabled is on by default
HOMNI_ENABLE_SAVE_WARNINGS=1 # When invoking Houdini file save with "Make Numbered Backups" preference on a warning is issued by default.
HOMNI_ENABLE_EXPERIMENTAL=0 # Enables experimental nodes is off by default.

HOMNI_DEFAULT_CONNECTIONS specifies the Omniverse server names that will appear by default in the sidebar of Houdini’s file browser. In this case, the default server is localhost, but you may set this to any server name, or specify multiple servers in a list delimited by semicolons (e.g., HOMNI_DEFAULT_CONNECTIONS="server1;server2;server3"). In general, you should assign to HOMNI_DEFAULT_CONNECTIONS the server or servers that you wish to navigate with the file browser.

One thing to note when you are adding connections into your houdini.env file is that connections to all servers added there will be made when the file browser is opened. One workaround to this is to not set the HOMNI_DEFAULT_CONNECTIONS variable and instead add the URL to the favorites in the file browser:

To check if the Connector is installed correctly, launch Houdini 19.0.498 and verify the following:

  1. There are no dso error popups.

  2. There is an Omniverse entry in the main menu bar.

  3. Navigate to the LOPs stage and instantiate a File operator. Click the file chooser button to the right of the File parameter. Verify there is an omniverse:// location in the file browser side bar (omniverse://localhost in our example, since we assigned localhost to the HOMNI_DEFAULT_CONNECTIONS environment variable).

  4. Navigate to a USD on the server (e.g., omniverse://localhost/NVIDIA/Samples/OldAttic/Props/ball.usd), and verify that it loads.

Quick-Start Video

Getting Started video covers:

  1. Installed the Houdini Connector and the Create Omniverse Application

  2. Set up a local Omniverse Nucleus server

  3. Connected to your Nucleus server using the Houdini Connector

  4. Saved a .hip file using an Omniverse checkpoint

  5. Used the Omniverse Shelf to gain quick access to Omniverse-related functionalities

  6. Created and exported a simple scene using Omni USD ROP

  7. Opened and edited your USD file in Create

Known Limitations

Mismatched USD Versions between Houdini and Create

Houdini uses a newer version of USD than Omniverse Create. This mismatch causes problems where there is a lack of backward compatibility. One such case exists for the inputs: prefix included in light prim attribute names. Because this prefix isn’t backward compatible, it doesn’t work in Omniverse Create. As a workaround, use the set_legacy_light_properties LOP before you export your USD to Omniverse Create. When exporting from Omniverse Create to Houdini, perform the opposite action using the Upgrade Old Light Primitives LOP.

Connection Authentication Hang

When connecting to a Nucleus server, a browser window may open for you to complete your login. Make sure you do so. If you closed the browser without logging in, please force quit, restart Houdini, and try again.

Houdini Digital Assets (HDAs)

HDAs cannot be saved to or loaded from Omniverse Nucleus server paths. A file copy utility tool is provided to copy files to and from Nucleus.

Make Numbered Backups

Houdini’s Make Numbered Backup save method preference doesn’t work with Omniverse Nucleus paths. You’ll see an error, and our post-save callback will provide a workaround.

Workarounds:

  • Use the provided save command from the Omniverse menu and Shelf

  • Switch from the default preference to Overwrite File or Increment Filename

Note

For versioning of your .hip file, you’ll automatically get Nucleus checkpoints when working with .hip files on Omniverse Nucleus servers with the checkpoint feature turned on.

File Browser - New Folder

When working with a .hip file on the Nucleus server, clicking on Create Folder in the SideFx file browser dialog yields an error.

Workarounds:

  • Specify the full file path to the .hip file in the file field and the folder creation will automatically happen:

Indication of where in the file browser to specify the file path rather than create a new folder
  • Use an alternate tool such as Omniverse Drive or Omniverse Create to make the folder ahead of time.

Note

When exporting from Houdini, any missing directories in the output path will be created automatically.

New Project

Attempts to create a new project on a Nucleus server fail.

Workarounds:

  • Use an alternate tool such as Omniverse Drive or Omniverse Create to make the folders ahead of time.

Note

When exporting from Houdini, any missing directories in the output path will be created automatically.

VDB Volume Sequences

Are not supported by Omniverse Create at this time. However, this is in development and we hope to announce OpenVDB support soon.

User Interface

You will find Omniverse-related tools in the following places:

Omniverse Panel

Omniverse panel items

Panel Tools

Description

Manage Connections

Registers connections to any number of Omniverse servers (It also provides a button to add connections to the favorites section in the Houdini file browser.)

Save Hip

Saves a .hip file, re-creating the Houdini behavior when Make Numbered Backups is enabled (Checkpoints are also provided when saving to a Nucleus server that supports them.)

Copy Files

Copies files to and from a Nucleus server

Set Log Level

Increases or decreases the verbosity of the output log (%USERPROFILE%/Documents/Omniverse/Houdini/HoudiniPlugin.log)

Omniverse Toolbar

Omniverse toolbar items

Shelf Tools

Description

Omniverse USD ROP

Creates a USD output ROP and applies the Omniverse node preset to it.

Save Hip

Saves a .hip file, re-creating the Houdini behavior when Make Numbered Backups is enabled (Checkpoints are also provided when saving to a Nucleus server that supports them).

Copy Files

Copies files to and from a Nucleus server.

Legacy Light Properties

Creates a Copy property node and applies a node preset to it (The preset sets up light properties to be compatible with USD light properties in Omniverse).

Scale Light Intensities

Creates a node that scales overall export light intensity to help with matching Omniverse brightness to Houdini viewport.

Omniverse Loader

Convenient way to load usd files while matching World-Up and Scale to metadata.

Omniverse Validator

Checks your USD scene to ensure that it is compatible with Omniverse.

Nodes - LOP Context

LOP context items

Nodes

Description

Omniverse Edit MDL Materials

Creates a MDL material library node to work with Omniverse material definitions.

Omniverse USD ROP

Creates a USD output ROP and applies the Omniverse node preset to it.

Legacy Light Properties

Creates a Copy property node and applies a node preset to it (The preset sets up light properties to be compatible with USD light properties in Omniverse).

Scale Light Intensities

Creates a node that scales overall export light intensity to help with matching Omniverse brightness to Houdini viewport.

Note

More details are included within the Houdini node help section.

Managing Nucleus Connections

We recommend you open and test connections via the Omniverse > Connections panel and add them to Favorites either manually or via the tool. Once you add connections to Favorites, they are always available in the file browser, and you no longer need to go to the connections panel for those servers.

Add to Favorites with the Connections Panel

You can add connections to your favorites using the Connections panel:

  1. Open the Omniverse menu.

  2. Click Connections.

  3. Enter the server name in the Server field.

  4. Click Connect to open the connection. Repeat for as many server connections as you want.

  5. Select any number of connections from the Open Connections list

  6. Click Add to Favorites.

Adding a connection favorite
  1. The added favorites appears in Houdini’s file browser after Houdini restarts.

Add to Favorites with the File Browser

You can achieve the same result by adding connections manually in the file browser:

  1. Open the file browser in Houdini.

  2. Enter the URL in the Look in field at the top of the dialog to open the connection.

  3. Click the + button in the lower left corner of the dialog to add this directory to the favorites.

Manually adding a connection favorite

Paths in the list of favorites, will not open a connection until you click the favorite.

USD and Texture Export

The standard USD ROP may be used with Omniverse URLs to save USD files to Omniverse. It is often desirable to save textures referenced by USDs to Omniverse as well. To facilitate this, there is an Omniverse Texture Export output processor that may be enabled on the USD ROP. This output processor will automatically save textures in a materials/textures folder next to the USD file that references these assets.

In addition, the texture asset in the USD will be specified as a relative path, such as ./materials/textures/diffuse.png. Texture export will work for texture files on disk as well as textures embedded in HDAs in the .hip file (textures with paths beginning with opdef:).

The Omniverse Texture Export output processor can be automatically added to the USD ROP UI with an Omniverse preset:

  1. Apply the Omniverse preset to the USD ROP.

USD ROP Preset
  1. Check the Enable toggle of the Omniverse texture export output processor.

USD ROP Omniverse Texture Output
  1. Textures are automatically exported when the USD is saved.

Alternatively, you can use the provided Shelf tool that creates the node and applies the preset. You’ll still need to enable the texture checkbox if you need it.

Previewing Checkpoints

Right click a string field that contains an Omniverse Nucleus url for a file with more than one checkpoint. This opens a menu that includes Omniverse - Enable Checkpoint Syntax. This menu item modifies the url to contain the direct path to the last checkpoint.

To preview other checkpoints, hover over the url string, and scroll your mouse wheel. This increments or decrements the first number to the right of the cursor.

In the following example, the asset has a different model for each checkpoint:

The user right clicks the file string and enables checkpoint syntax. Then, they scroll through their checkpoints, reviewing changes to their model.

Tutorial Videos

Working with Houdini and Create app

In this tutorial, we read in a USD file and extract a linear curve prim that serves as a target for power pole instances. Then, we run the curve through a typical Houdini point copy workflow, where we randomize the position and rotation of the instances. Finally, we write the instances and power line mesh to a new USD file that’s referenced into the original USD file.

MDL Authoring and Editing

In this tutorial, we demonstrate the basics of creating, editing, and binding materials to geometry using the Omniverse Houdini connector. We also export the geometry, along with its materials, to Omniverse Create.

Release Notes

Houdini 102.0.0

Released: 09/08/2022

102.0.0 Release Notes

Added

  • Houdini 19.5.x support on Windows 10, Windows 11, Ubuntu 20.04 and Ubuntu 22.04.

  • New Omniverse Loader and Validator nodes. Tutorial videos will be provided shortly.

  • New UI/UX for Previewing Checkpoints and seeing their information.

Improved

  • Better method to detect HOMNI_LOGLEVEL environment variable.

  • Better handling of Linux un-install script.

  • Tutorial for power lines now has a a power pole file. Updated tutorial video coming soon.

  • Updated to Omniverse Client Library v2.14 and USD Resolver v1.10

Changes

  • Fixed Enable Warning toggle bug on MDL LOP.

  • Fixed an issue that Houdini might crash if log level is set to INFO or lower.

  • Fixed bugs in Houdini connector install and uninstall scripts.

Houdini 101.0.0

Released: 08/11/2022

101.0.0 Release Notes

Added

  • Added Linux x64 support for Houdini 19.0.x, Ubuntu 20.04 and Ubuntu 22.04.

Improved

  • Tutorial for power lines HDA now has a scale option.

  • Updated Omniverse MDL LOP - Handle UDIM syntax.

  • Updated checkpoints syntax menu option.

  • Environment variable HOMNI_ENABLE_EXPERIMENTAL=1 to enable experimental Live Sync nodes, off by default.

  • Updated to Omniverse Client Library v2.13 and USD Resolver v1.9

Fixed

  • Fixed an issue Open Log dialog not working in certain Linux platforms.

  • Fixed an issue uninstalling the previous version connector might break current installed connector.

  • Fixed FS_Omni and OP_Omni linking issue.

  • Warn that UDIM textures aren’t handled by the Omniverse Export Textures output processor.

Houdini 100.0.0

Released: 06/28/2022

100.0.0 Release Notes

Added

  • Windows 10, Houdini 19.0.x support

  • Preset for legacy light support when export/importing with Omniverse Create and View (handles nvUSD old usdlux)

  • Default MDL material definitions

  • Edit MDL Materials node

  • MDL OmniVolumeDensity VOP

  • Omniverse USD Rop/Lop node

  • Support Nucleus checkpoints when saving USDs

  • Omniverse Shelf and Menu

  • Save bookmarks to the Nucleus location in file browser

  • Save .hip file to Nucleus utility

  • Open up log location utility

  • Omniverse Client Library v2.7