User Manual#

Install the Connector#

Follow our Connector installation instructions to install this connector.

Note

Houdini Omniverse Connector will create Houdini Packages files as $HOUDINI_USER_PREF_DIR/packages/omniverse.json. Please make sure $HOUDINI_USER_PREF_DIR exists before installing Houdini Omniverse Connector. By default, $HOUDINI_USER_PREF_DIR is set to ~/houdiniXX.X (e.g. /home/user_name/houdini20.0) and it is created when launching Houdini for the first time. Please reinstall Houdini Omniverse Connector when you have installed and launched a new major version of Houdini.

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/log/HoudiniOmni.log)

Omniverse Asset Validator Panel#

Asset Validator Panel provides a set of checker rules ensuring the USD stage is valid and optimized, while using Omni Asset Validator as its backend to run the validation. You may configure the initial state by updating the config toml files (e.g. $HOUDINI_USER_PREF_DIR/omni.connect.houduini.toml).

Setting

Type

Description

/omni.asset_validator.core/defaultEnabled

bool

Enable all checker rules by default

/omni.asset_validator.core/enabledCategories

list

List of categories to enable by default

/omni.asset_validator.core/disabledCategories

list

List of categories to disable by default

/omni.asset_validator.core/enabledRules

list

List of checker rules to enable by default

/omni.asset_validator.core/disabledRules

list

List of checker rules to disable by default

The settings override orders are enabledRules > disabledRules > enabledCategories > disabledCategories > defaultEnabled; where enabledRules takes the highest priority.

Omniverse Asset Validator panel items

Panel Tools

Description

LOP Node Path

The path to the LOP node stage to validate.

Rules Treeview

The validation categories and checker rules. Check and uncheck the checker rules to enable and disable them. Hover your mouse over the checker rules for details about each checker.

Validate

Run validation on the given stage with enabled rules above. Houdini 20 can run the validation in an async call that will not block the current Houdini session.

Result Field

The validation violations and the suggestions on how to fix them.

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 Loader

Simplifies loading and authoring of Omniverse USD assets while automatically conforming scale, lights and orientation.

Omniverse Validator

Performs a pre/post validation and prepares asset for export to Omniverse ( this node is also integrated into Loader ).

Omniverse Lights

Converts and conforms Omniverse lights into Solaris and back to create ( this node is integrated into Loader and Validator ).

Omniverse Edit MDL Materials

Creates a MDL material library node to work with Omniverse material definitions ( this node is also integrated into Loader ).

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.

Configure Omniverse Carbonite settings#

Carbonite-related settings can be configured in $HOMNI_CARB_SETTINGS_TOML_PATH/omni.connect.houdini.toml. $HOMNI_CARB_SETTINGS_TOML_PATH can be a list of directory paths with separators - For Windows it is ;, and for Linux it is :. If $HOMNI_CARB_SETTINGS_TOML_PATH is not defined, $HOUDINI_USER_PREF_DIR/omni.connect.houdini.toml will be tested and loaded if the path exists.

The example below shows carb settings toml

[log]
# For HoudiniConnector channel = log everything
channels."HoudiniConnector" = "verbose"

["omni.asset_validator.core"]
defaultEnabled = true
enabledCategories = []
disabledCategories = ["ARKit", "Basic"]
enabledRules = []
disabledRules = []

Python Modules#

Omniverse Houdini Connector provides several Python modules for developers building custom tools and libraries to interact with Omniverse and USD.

omni.asset_validator.core

omni.connect.core

carb.logging

carb.settings

carb.tokens

omni.client

The example below shows several functions from the modules listed above.

import pathlib
import carb.tokens
itoken = carb.tokens.get_tokens_interface()
itoken.resolve(os.path.join("${data}", "houdini_connector"))
pathlib.Path(itoken.resolve(os.path.join("${data}", "houdini_connector")))
# WindowsPath('C:/Users/xxx/AppData/Local/ov/data/connect-sdk/Houdini-20.0/houdini-connector-200.0/houdini_connector')

import carb.settings
isettings = carb.settings.get_settings_interface()
isettings.get("/app/name")
# 'Houdini'
settings.get("/app/version")
# '20.0'

import omni.client
omni.client.get_users("omniverse://localhost")
# (<Result.OK: 0>, ['omniverse', 'search_service', 'tags_service', 'thumbnails_service', 'test_user'])
omni.client.stat("omniverse://localhost/NVIDIA/Samples")
"""
(<Result.OK: 0>, ListEntry:
     relative_path: Samples
     access: 1
     flags: 36
     size: 0
     modified_time: 12/31/69 16:00:00
     modified_by: omniverse
     created_time: 12/31/69 16:00:00
     created_by: omniverse
     deleted_time: 12/31/69 16:00:00
     deleted_by:
     locked_by:
     version:
     hash:
     comment:
)
"""

import carb
carb.log_info("Log Info")
# [Info HoudiniConnector (2024-01-24 15:37:59)] [__main__] Log info

import omni.connect.core
omni.connect.core.createStage(os.path.join(tempfile.mkdtemp(), "temp.usda"), "defaultPrimName", "Y", 1.0)
# Usd.Stage.Open(rootLayer=Sdf.Find('C:/Users/xxx/AppData/Local/Temp/tmp7ic2cs6o/temp.usda'), sessionLayer=Sdf.Find('anon:00000001A8788C00:temp-session.usda'), pathResolverContext=<invalid repr>)

import omni.asset_validator.core
registry = omni.asset_validator.core.ValidationRulesRegistry()
registry.categories()[0]
# 'Basic'
registry.rules('Basic')[0]
# <class 'omni.asset_validator.core.complianceChecker.ByteAlignmentChecker'>