Three independently-built but co-developed Python projects in one
repository. The merge from the standalone ovui and USD Viewer (ovgear) repos
preserves the full history of both.
.
├── ovui/ ← UI framework: omni.ui + omni.ui_scene + native libs
├── ovwidgets/ ← Application widgets layer (stage / layers / property /
│ content / viewport / app) with per-component dists
└── ovui-data-adapters/ ← Adapter contracts (common) + OpenUSD adapters (openusd)
Each top-level directory is a self-contained project root. They are co-located so a single PR can change framework code, widget code, and adapter code in lock-step, but they install and ship as independent distributions:
ovui/setup.pybuilds the native UI framework (cmake + ninja- setuptools) and ships as the
ovuiwheel.
- setuptools) and ships as the
ovwidgets/dist/{all,app,common,content,layers,property,stage,viewport}/pyproject.tomlship asovwidgets-<sub>distributions; per-component install useswhere = ["../.."].ovui-data-adapters/dist/{common,openusd}/pyproject.tomlship asovui-data-adapters-{common,openusd}; samewhere = ["../.."]pattern, source under the unifiedovui-data-adapters/ovui_data_adapters/import-package root.
ovui/README.md— UI frameworkovwidgets/README.md— application widgetsovui-data-adapters/README.md— adapter contracts and OpenUSD adapters
For a fresh dev venv:
python3.12 -m venv ovwidgets/_venv312
ovwidgets/_venv312/bin/pip install -U pip setuptools wheel build pytest pytest-asyncio ruff mypy
ovwidgets/_venv312/bin/pip install -e ovui/
ovwidgets/_venv312/bin/pip install -e /path/to/ovrtx/python # external dep
ovwidgets/_venv312/bin/pip install -e ovui-data-adapters/dist/common
ovwidgets/_venv312/bin/pip install -e ovui-data-adapters/dist/openusd
# then install ovwidgets/dist/<sub>/ packages in dependency order.Windows source installs need the Windows prerequisites in
ovui/README.md before
pip install -e ovui/. Install the CUDA Toolkit before building if you need
the CUDA-Vulkan byte-image path used by ovui/examples/byte_image_gpu_demo.py,
then verify with:
python -c "import omni.ui as ui; print(ui.has_gpu_byte_image())"The active automation lives under .github/workflows/:
build-wheel.ymlbuilds ovui wheels for Linux x64, Linux ARM64, and Windows x64, then smoke-imports the installed wheel.headless-lavapipe.ymlandheadless-egl.ymlbuild and run the headless CTest lanes.test-b1-vulkan.yml,test-b2-vulkan-asan.yml, andtest-b3-egl.ymlrun the Vulkan pytest, native ASan, and EGL pytest lanes.generate-goldens.ymlregenerates golden images on demand.
The repository was merged from two sources:
ovui— relocated underovui/.- USD Viewer (
ovgear) — split intoovwidgets/(the import package + its dist packages) andovui-data-adapters/(the unified adapter package).
Merge history is preserved in git; the runtime and packaging docs above are the current source of truth.