Sample

ovrtx + ovphysx Sample Integration

Desktop USD Viewer built during the NVIDIA Omniverse livestream on April 15, 2026.

Grid of cloned robot models rendered with ovrtx

This sample combines two Omniverse libraries in one interactive desktop app: ovrtx for real-time rendering in the main process, and ovphysx for physics simulation in child worker processes. The viewer loads OVRTX-ready USD stages, renders offscreen, and displays the result in a Qt window. It was built and demonstrated during an NVIDIA Omniverse Livestream on April 15, 2026.

At the time of this development, ovrtx and ovphysx cannot reliably share the same process after USD loads (Carbonite plugin clashes), PhysX workers run separately and stream pose data as JSON lines on stdout. The viewer applies those transforms with map_attribute, then steps the renderer — the same update-then-render loop used in other ovrtx examples.

What's included

Prerequisites

How to run

From the repository root, start the desktop viewer:

cd samples/ovrtx_ovphysx_livestream/livestream-files/examples/python/usd-viewer-example
uv run main.py

The default scene is the remote Robot-OVRTX URL. The first run may take noticeable time while shaders compile and cache. Use File → Open… to load a local .usda file, or pass a path on the command line:

uv run main.py path/to/scene.usda

To try PhysX live streaming, open a local stage such as ../ov-libaries-livestream/links_chain_sample.usda, then use the ovphysx menu items and press Play. PhysX workers require a filesystem path — not an https:// URL.

Minimal PhysX-only smoke test (no viewer):

cd ../ov-libaries-livestream
uv run hello_world_physx.py

Repository path

Full source, USD assets, run instructions, and troubleshooting live in the sample folder: