usd-brep README

The project's README from github.com/NVIDIA-Omniverse/usd-brep. As one markdown file: README.md.

USD BRep

Standalone Omniverse repo containing USD BRep (NURBS boundary-representation solid modeling) libraries.

Requirements

All other build-time dependencies — OpenUSD, Python 3.12, pybind11, premake, and the repo_* tools — are pulled automatically via Packman when you build.

Using this repo

Prerequisites are listed under Requirements. Use ./repo.sh on Linux and macOS, ./repo.bat on Windows. macOS: macOS local development.

Build it

Run prebuild before building a fresh checkout or after deleting _build. It stages the omniSolid schema plugin in _build/schema/omniSolid/resources; repo build alone does not create these resources, which USD tools require at runtime.

# Linux
./prebuild.sh
./repo.sh build

# macOS
./prebuild.sh -p macos-universal
./repo.sh build -p macos-universal

# Windows
./prebuild.bat
./repo.bat build

Test it

./repo.sh test
./tests.sh linux-x86_64              # or macos-universal

Format it

./repo.sh format

Run the Python GUI

# Debug binaries by default (kernel Dump() echoes to the terminal).
uv run --locked --group gui python tools/scripts/smlib_gui.py

# Release binaries: add --release
uv run --locked --group gui python tools/scripts/smlib_gui.py --release

See tools/smlib_gui/README.md for smoke-test and troubleshooting commands.

Explore examples

Runnable compositions organized by API layer live under Examples.

macOS local development

Apple Silicon only: ./repo.sh build -p macos-universal. Build symlinks host Packman Python into _build/target-deps/python when available (SMLIB_PYTHON_ROOT to override).

Python-only (default): kernel, C++ tests, _smlib_tests, and _smlib_dev (imports need Tier 1 _omni_solid). No OpenUSD, OCCT, or _omni_solid.

./repo.sh build -p macos-universal -j10
./tests.sh macos-universal

Tier 1 (optional): local OpenUSD 3.12 staged via setup-macos-local-deps.sh.

export SMLIB_USD_ROOT=~/opt/usd-25.11-py312
./tools/scripts/setup-macos-local-deps.sh
./repo.sh build -p macos-universal -j10
./tests.sh macos-universal

Set PYTHONPATH="$PWD/_build/macos-universal/release" to import Python extensions. Packman OpenUSD/Python packages are not available on macOS. The macOS premake package ([email protected]+nv1-macos-universal, deps/host-deps.packman.xml) is not on the public Packman server either; supply it through a user-level Packman configuration. Avoid ./repo.sh build -x; delete _build, _compiler, and _repo to clean.

Contributing

This project is currently not accepting contributions.

Issues and bug reports are welcome through the project issue tracker, and security issues should be reported as described in SECURITY.md. See CONTRIBUTING.md for details.

License

USD BRep is licensed under the Apache License, Version 2.0. See LICENSE for the terms governing use, reproduction, and distribution.

Copyright (c) 2020-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved.

repo.sh, repo.bat, and tools/repoman/repoman_bootstrapper.py are licensed under the MIT License instead; see THIRD_PARTY_NOTICES.md for the full text.

For third-party notices and bundled components, see THIRD_PARTY_NOTICES.md.

Heal USD BRep assets

usd.heal_file heals BrepArray definitions in the layers used by the current USD composition and writes the scene with the healed geometry, keeping its layers, references, native instancing, transforms and materials. External layers used only by unselected variants remain referenced but are not healed. Material subset opinions outside the BRep's defining prim spec are rejected rather than lost.

import usd_brep
usd_brep.usd.heal_file("input.usdc", "input_healed.usdc")

usd-brep (NVIDIA-Omniverse/usd-brep)

c++
Searching Database…

What is this?USD BRep is a standalone C++ and Python library from NVIDIA Omniverse for NURBS-based boundary representation (BRep) solid modeling, built to work with OpenUSD.
Is this a full CAD application or a library I embed in my own code?It's a C++/Python library you link against or import — the repo ships a kernel, C++ tests, smlibtests/smlibdev modules, and a Python GUI for smoke-testing, not a standalone modeling app.
How do I build it?Clone the repo with Git LFS, then run ./repo.sh on Linux/macOS or ./repo.bat on Windows; run prebuild first on a fresh checkout to stage the required omniSolid schema plugin before calling build.
What do I need installed before building?You need Git LFS for the binary fixtures; on Windows a Visual Studio 2019/2022 install with the MSVC C++ workload and Windows SDK; on Linux just build-essential. OpenUSD, Python 3.12, pybind11 and premake are fetched automatically through Packman during the build.
Is macOS support as complete as Windows and Linux?No — macOS only supports Apple Silicon, defaults to a Python-only build without OpenUSD/OCCT/omnisolid, and the Packman OpenUSD/Python/premake packages used on the other platforms aren't available there at all.
What does the usd.healfile tool do?It repairs BrepArray definitions across the layers of a USD composition, writing back the scene with healed geometry while keeping layer structure, references, native instancing, transforms and materials intact.
What is omniSolid and why does the prebuild step matter?omniSolid is the USD schema plugin that lets USD tools recognize BRep geometry at runtime; the prebuild step stages it into build/schema/omniSolid/resources since a plain build doesn't generate those resources on its own.
Size
19.3 MB
Stars
1.6K
Age
9d
Commits · 90 Days