User Manual#
Install the Connector#
Tip
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.5
) and it is created when launching Houdini for the first time. Please reinstall the Houdini Omniverse Connector when you have installed and launched a new major version of Houdini.
Follow our Connector installation instructions to install this connector.
Note
In the near future Connectors will be hosted on the NVIDIA NGC Catalog for download and installation. The Omniverse Launcher entry for each connector will be updated with a direct download link to the connector installer on the NGC Catalog from the Launcher.
NGC Installation Instructions#
Download the version of Omniverse Houdini Connector from the NGC Catalog.
Unzip
Windows users run the installer setup exe. Linux users run the HoudiniConnectorInstall.sh
NGC Uninstall Instructions#
Windows Users use Add/Remove Programs control panel to uninstall the Connector.
Linux Users use the the HoudiniConnectorUninstall.sh.
User Interface#
You will find Omniverse-related tools in the following places:
Omniverse Panel#
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 ( |
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.
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#
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#
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:
Open the Omniverse menu.
Click Connections.
Enter the server name in the Server field.
Click Connect to open the connection. Repeat for as many server connections as you want.
Select any number of connections from the Open Connections list
Click Add to Favorites.
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:
Open the file browser in Houdini.
Enter the URL in the Look in field at the top of the dialog to open the connection.
Click the + button in the lower left corner of the dialog to add this directory to the favorites.
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:
Apply the Omniverse preset to the USD ROP.
Check the Enable toggle of the Omniverse texture export output processor.
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:
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.
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'>