Omniverse Connect Sample Updates


  • Update the Omniverse Client Library fix an issue with overlapping file writes


  • HelloWorld sample that demonstrates how to:
    • connect to an Omniverse server
    • create a USD stage
    • create a polygonal box and add it to the stage
    • upload an MDL material and its textures to an Omniverse server
    • bind an MDL and USD Preview Surface material to the box
    • add a light to the stage
    • move and rotate the box with live updates
    • print verbose Omniverse logs
    • open an existing stage and find a mesh to do live edits
  • OmniCLI sample that exercises most of the Omniverse Client Library API


  • Add Linux package for the Omniverse Launcher
  • Add a Python 3 Hello World sample
  • Update the Omniverse Client Library to 1.13
  • Update to Python 3.7 (we continue using USD 20.08)
  • Add a Nucleus Checkpoint example
  • Add the ability to create/access a USD stage on local disk in the Hello World sample

Hi,I found a bug in connect sample
If I run run_py_sample.bat, ERROR comes:
Python, USD, and Omniverse Client libraries are missing. Run prebuild.bat to retrieve them.

I solve it by modifying the bat file below:

pushd "%~dp0"
set ROOT_DIR=%~dp0
set USD_LIB_DIR=%ROOT_DIR%_build\target-deps\nv_usd\release\lib
set OMNI_CLIENT_DIR=%ROOT_DIR%_build\target-deps\omni_client_library\release
set PYTHON=%ROOT_DIR%_build\target-deps\python\python.exe
set PYTHONPATH=%USD_LIB_DIR%\python;%OMNI_CLIENT_DIR%\bindings-python
if not exist "%PYTHON%" (
    echo Python, USD, and Omniverse Client libraries are missing.  Run prebuild.bat to retrieve them.
    exit /b
"%PYTHON%" source\pyHelloWorld\ %*
if errorlevel 1 ( goto Error )

Just change %PYTHON% to “%PYTHON%”
Because sometimes usrers like me will install omniverse in a directory with blank space,for example
“E:\ProgramData\NVIDIA Corporation\Omniverse\lib\connectsample-101.1.6”

Thank you for finding this and fixing it. I’ll make sure this makes it into the next update!


In this release we’ve fixed a few things that needed cleaning up, but the biggest change was allowing the user to use their own Visual Studio compiler on Windows using a build tool configuration utility if they choose. We added a dome light with an HDR texture and release notes for the Omniverse Client Library.

  • Samples

    • OM-31648: Add a windows build tool configuration utility if the user wants to use an installed MSVC and the Windows SDK
    • Add a dome light with texture to the stage
    • OM-35991: Modify the MDL names and paths to reduce some code redundancy based on a forum post
    • Add Nucleus checkpoints to the Python sample
    • Avoid writing Nucleus checkpoints when live mode is enabled, this isn’t supported properly
    • OM-37005: Fix a bug in the Python sample batch file if the sample was installed in a path with spaces
    • Make the /Root prim the defaultPrim
    • Update Omniverse Client Library to 1.13.19
  • Omniverse Client Library

    • 1.13.19
      • OM-36925: Fix omniClientMakeRelative(“omni://host/path/”, “omni://host/path/”);
    • 1.13.18
      • OM-25931: Fixed some issues around changing and calling the log callback to reduce hangs.
      • OM-36755: Fixed possible use-after-delete issue with set_log_callback (Python).
    • 1.13.17
      • OM-34879: Hard-code “mdl” as “not a layer” to work around a problem that happens if the “usdMdl” plugin is loaded
    • 1.13.16
      • OM-36756: Fix crash that could happen if two threads read a layer at the exact same time.
    • 1.13.15
      • OM-35235: Fix various hangs by changing all bindings to release the GIL except in very specific cases.
    • 1.13.14
      • OM-34879: Fix hang in some circumstances by delaying USD plugin registration until later
      • OM-33732: Remove USD diagnostic delegate
    • 1.13.13
      • OM-36256: Fixed S3 provider from generating a bad AWS signature when Omni Cache is enabled
    • 1.13.12
      • OM-20572: Fixed setAcls
    • 1.13.11
      • OM-35397: Fixed a bug that caused Linux’s File Watcher Thread to peg the CPU in some cases.
    • 1.13.10
      • OM-32244: Fixed a very rare crash that could occur when reading a local file that another process has locked
    • 1.13.9
      • OM-35050: Fixed problem reloading a non-live layer after it’s been modified. * 1.13.8
      • OM-34739: Fix regression loading MDLs introduced in
      • OM-33949: makeRelativeUrl prepends “./” to relative paths
      • OM-34752: Make sure local paths are always using “” inside USD on Windows
    • 1.13.7
      • OM-34696: Fixed bug when S3 + cloudfront + omni cache are all used
    • 1.13.6
      • OM-33914: Fixed crash when accessing http provider from mulitple threads simultaneously
    • 1.13.5
      • OM-26039: Fixed “Restoring checkpoint while USD stage is opened live wipes the content”
      • OM-33753: Fixed “running massive amounts of live edits together causes massive amounts of checkpoints”
      • OM-34432: Fixed “[Create] It will lose all data or hang Create in live session”
        • These were all the same underlying issue: When a layer is overwritten in live mode it was cleared and set as ‘dirty’ which would cause the next “Save()” (which happens every frame in live mode) to save the cleared layer back to the Omniverse server.
    • 1.13.4
      • OM-31830: omniClientCopy() with HTTP/S3 provider as source
      • OM-33321: Use Omni Cache 2.4.1+ new reverse proxy feature for HTTPS caching
    • 1.13.3
      • OM-33483: Don’t crash when trying to save a layer that came from a mount
      • OM-27233: Support loading non-USD files (abc, drc, etc)
      • OM-4613 & OM-34150: Support saving usda files as ascii
        • Note this change means live updates no longer work with usda files (though they technically never did – it would silently convert them to usdc files).
1 Like


In this release we added a couple helpful samples referenced in the forums, docs, and the November 2021 GTC “Making a Connector for Omniverse” session.

  • Samples

    • Added omniUsdReader, a very very simple program for build config demonstration that opens a stage and traverses it, printing all of the prims
    • Added omniUsdaWatcher, a live USD watcher that outputs a constantly updating USDA file on disk
    • Updated the nv-usd library to one with symbols so the Visual Studio Debug Visualizers work properly
  • Omniverse Client Library

    • Still using 1.13.19


  • Samples

    • Added physics to HelloWorld sample to showcase UsdPhysics usage.
    • Added thorough Python USD transform handling with the module
    • Added a better logging system in the Python hello world example
    • Formatted the help text in OmniCLI to be spaced properly and to include arguments
    • Added omniSimpleSensor, a simple example of simulating sensor data pushed into a USD
    • Added omniSensorThread, this is the separate working thread to change a USD
    • Added the file hash to the stat output in OmniCLI
    • Added “cver” command to print client version
    • Change the live rotations from ZYX to XYZ and all xform ops to double3
  • Omniverse Client Library

    • 1.17.4
      • OM-47554: Downgrade some “Error” messages during auth to “Verbose”
        • We attempt to connect using 3 different methods, and it’s normal for 2 of them to fail. This avoids confusing users with error messages for a connection that ultimately succeeds.
      • OM-48252: Lower required “list2” version, to allow connecting to servers running Nucleus 112.0.
    • 1.17.3
      • CC-357: Fixed a deadlock that could occur when a python file status callback is being unregistered on one thread while another thread is simultaneously trying to call that file status callback
      • CC-367: Allow stat & list using URLs
      • OM-45178: Print extended error message when Token.subscribe fails
      • OM-45887: Enable extra connection logging
      • CC-384: Remove support for Nucleus 107, 109, and 110
      • CC-366: Update OpenSSL to avoid a security vulnerability
    • 1.17.2
      • CC-32: Fixed a crash that could happen on disconnect
      • OM-43009: Removed “stop” from list of required capabilities, to discover newer servers which don’t advertise that capability
      • CC-236: Add support for checkpoint change notification
      • CC-245: Fixed a deadlock that could occur rarely when connection failed.
    • 1.17.1
      • CC-228: subscription based authentication using ‘nonce’
      • CC-231: Discover API server using minimum required capabilities rather than all capabilites
      • CC-229: Fixed a case where the client library would not connect to Nucleus securely
    • 1.17.0
      • CC-7: Add shutdown guard to omniclient::Core
    • 1.16.0
      • OM-39826: Prevent copying of channels from nucleus servers to other providers
      • OM-38687: Fix crash when shutdown with an outstanding stat subscription
      • OM-37095: Use omniClientWait in blocking python binding functions
      • OM-38761: Fix ResolveSubscribe to handle more invalid search paths
      • OM-39746: Support stat(‘/’) on S3 buckets. S3 API does not support stat() on root, but we can fill in the gaps
    • 1.15.0
      • OM-39614: Fixed a case where pings would not report a connection error
      • OM-36524: update connection library to prevent using Nucleus Cache when accessing localhost servers
      • OM-37061: Fix crash if a request is started after it is stopped
      • OM-34916: Map MountExistsUnderPath error to ErrorNotSupported
      • OM-38761: Fixed StatImpl::beginWatch to always call the provided callback, even when the uri to watch is invalid.
      • OM-39367: Removed “fast locked updates” because it’s fundamentally broken. Removes omniUsdLiveLock & omniUsdLiveUnlock
      • OM-23042: If the relativePath starts with “./” then don’t use search paths
    • 1.14.0
      • OM-38721: Added function omniClientGetLocalFile which returns the local filename for a URL
        • If the input URL is already a local file, it is returned without error
        • If the remote file has not yet been downloaded to cache, it is downloaded before returning
        • Python bindings are “get_local_file” “get_local_file_async” and “get_local_file_with_callback”
      • OM-38816: Added environment variable OMNI_DEPLOYMENT which can override the deployment sent to discovery
      • OM-37061: Early exit from callback if cacheEntry weak_ptr is expired, correct creation of cacheEntry ownership
    • 1.13.25
      • OM-34145: Fix omniClientCopy to not infinitely copy when copying a directory into a subdirectory of itself.
    • 1.13.24
      • OM-38028: Update Brotli, OpenSSL, and libcurl versions
    • 1.13.23
      • OM-37701: Fix FetchToLocalResolvedPath to work with SdfFileFormat arguments
    • 1.13.22
      • OM-37276: Use latest idl.cpp to pickup SSL cert directory location fixes
    • 1.13.21
      • OM-36064 & OM-36306: Fix crash in listSubscribe on disconnect
    • 1.13.20
      • OM-37054: Fix incorrect search order according to PBR specification
      • OM-36511: Add python bindings set_authentication_message_box_callback & authentication_cancel
1 Like


The 200.0 release signifies big changes with the distributed Omniverse libraries. The Omniverse team has separated the USD resolver plugin from the Client library to make it easier to support more versions of USD. Live synchronization is improved for the purposes of performance, simultaneous editors, and supporting the entire USD layer editing feature set. Omniverse applications and Connectors are also now subscribing to the notion of live sessions to support non-destructive workflows. This version of the Connect Samples includes new Python and C++ examples to demonstrate this live session workflow.


  • Samples

    • Added the LiveSession examples along with an introductory LiveSession Library that contains many required components to support the new live session workflow
  • Omniverse USD Resolver

  • Omniverse Client Library

This small update to the Connect Samples fixes some simple bugs in the live session classes and updates the Omniverse Client Library and USD Resolver with the latest versions.

  • Samples
    • Fix the “MESSAGE” message type and custom “message” key to be case correct
    • Ensure that we flush live layer clears with omniClientLiveProcess()
    • Clear the peer users in LeaveChannel() allows for recycling the class
    • Fix the usd_resolver post build copy step in UsdReader example
  • Omniverse USD Resolver
  • Omniverse Client Library


  • Samples
    • Added omni_asset_validator.bat|sh which uses the Asset Validator to find issues in USD layer file URIs
      • Added ‘v’ validate option for pyLiveSession to demonstrate the Asset Validator on an in-memory stage.
    • Add a C++ UsdLuxLight compatibility class to help with schema and API upgrade issues (OM-71861)
      • Rename omniLiveSessionLib to omniUtilsLib, move cppUtils to omniUtilsLib/include
    • Adjust light values from the samples
    • Cleanup the #includes in some files and remove some cruft from copy/paste
    • Create extents attributes on all meshes in HelloWorld (so we don’t fail the asset validation checks)
    • Add example usage of TfMakeValidIdentifier() so prim names are valid (OM-66072)
    • Modify the build config and source to support 2022-era USD versions (OM-53579)
    • Don’t throw an exception when the user name is not valid in the Python sample
    • Update msvc to 2019-16.11.17-ndebug (14.29.30133) to no longer release debug CRT (OM-42026)
    • Prevent “Core::unregister callback called after shutdown” in samples by clearing the client log callback
    • Report the update frequency and run duration in the simple sensor example
    • Support reusing the live stage in the simple sensor example rather than deleting it every run
    • Make the Materials parent prim a Scope
    • Make Fieldstone.mdl use the OmniPBR.mdl that ships with the sample (OM-73976)
    • Handle the 22.08 UsdGeomPrimvarsAPI changes
  • Omniverse USD Resolver
  • Omniverse Client Library
  • Omniverse Asset Validator


In this update we added some sample code for adding a reference, payload, and modifying a material parameter from code.

  • Samples
    • Add a prop payload and reference to a HelloWorld (OM-35218)
    • Modify an OmniPBR MDL parameter for a referenced prop
    • Change defaultPrim handling to be less hardcoded and more correct
    • Update the repo build tools to modern versions (OM-77486)
    • Add a test script for all programs (“repo test” or tests/test_all.[bat,sh])
    • Allow Windows users to use their installed build tools with repo build --use-devenv (OM-74840)
    • Add a function to determine if any prims exist in the root layer before merging (OM-64707)
    • Add a note in about Visual Studio failing to iterate on builds (OM-78756)
    • Set the defaultPrim to kind=assembly, all others to kind=component
    • Correctly set the USD Preview Surface bias, scale, and sourceColorSpace
    • Correctly apply the MaterialBindingAPI to the box mesh prim
    • Change OmniCLI to overwrite destination folders for copy and move (OM-80541)
  • Omniverse USD Resolver
  • Omniverse Client Library
  • Omniverse Asset Validator
1 Like


Release Date: June 2023

With this release the shipped USD version is updated to 22.11 and Python 3.10 to align with the rest of the Omniverse platform. Also a skinned skeletal mesh example was added to demonstrate how to author, skin, and animate skeletons in a live layer.


  • Samples
    • Update USD version to 22.11
    • Update Python version to 3.10
    • Add a skinned skeletal mesh example with live updates
    • Fix 21.08 include guard for UsdPhysics
    • Add channel join/send/leave commands to OmniCLI
    • Use a mesh rather than a cube to test the invalid extents since a cube always returns an extents attribute
    • Set the correct render type for the shader output attributes
    • Use an installed OmniPBR rather than including a very old version
  • Omniverse USD Resolver
  • Omniverse Client Library
  • Omniverse Asset Validator
1 Like