Nvidia 开源 USD BRep:NURBS B-rep 实体建模内核
USD BRep: Nvidia's open-source NURBS B-rep solid modeling kernel
Nvidia 在 Omniverse 下开源了 USD BRep,一套 NURBS 边界表示(B-rep)实体建模库,采用 Apache 2.0 许可。该库提供 usd_brep.usd.heal_file 等工具,可修复 USD 组合层中的 BrepArray 定义并保留图层、引用、原生实例化、变换与材质。项目目前不接受外部贡献,仅通过 issue tracker 接收问题与漏洞报告。
包含 USD BRep(NURBS 边界表示实体建模)库的独立 Omniverse 仓库。
要求
-
Git 和 Git LFS:
.gitattributes中跟踪的大型二进制测试数据(USD 资产、STEP/IGES/JT 模型)需要 Git LFS。 -
(Windows - 仅 C++)Microsoft Visual Studio(2019 或 2022),需包含 MSVC C++ 工具集:
- 从 Visual Studio 下载页(或 Visual Studio 生成工具)安装,并勾选 使用 C++ 的桌面开发 工作负载。仅安装 VS 而不包含 C++ 工具集是不够的。
- 构建使用此主机安装的编译器(
repo.toml中的msbuild.link_host_toolchain),而非 Packmanmsvc。 msbuild.vs_version固定为vs2019,因此 VS 2022 用户还需要 MSVC v142 生成工具 组件。- 如果发现失败,请设置
msbuild.vs_path、msbuild.vs_version或两者 — 参见 repo_build 工具链。这些设置用于定位已安装的工具集;它们不会安装工具集。
-
(Windows - 仅 C++)Windows SDK:通过 Visual Studio 安装程序与 MSVC 一同安装。如果发现失败,请在
repo.toml中设置msbuild.winsdk_path。 -
(Windows)Microsoft Visual C++ Redistributable:运行构建出的二进制文件所必需,这些文件动态链接 VC 运行时而非捆绑它。上述 使用 C++ 的桌面开发 工作负载已附带该可再发行组件,因此用于构建的机器已经具备 — 仅在未安装 Visual Studio 而运行二进制文件的机器上才需要单独安装。
-
(Linux)build-essential:
sudo apt-get install build-essential
所有其他构建时依赖 — OpenUSD、Python 3.12、pybind11、premake 以及 repo_* 工具 — 在构建时通过 Packman 自动拉取。
使用此仓库
前置条件列于 要求 下。在 Linux 和 macOS 上使用 ./repo.sh,在 Windows 上使用 ./repo.bat。macOS:macOS 本地开发。
构建
在全新检出后或删除 _build 后,构建前先运行 prebuild。它会在 _build/schema/omniSolid/resources 中暂存 omniSolid schema 插件;仅 repo build 不会创建这些资源,而 USD 工具在运行时需要它们。
# Linux ./prebuild.sh ./repo.sh build # macOS ./prebuild.sh -p macos-universal ./repo.sh build -p macos-universal # Windows ./prebuild.bat ./repo.bat build
测试
./repo.sh test ./tests.sh linux-x86_64 # or macos-universal
格式化
./repo.sh format
运行 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
有关冒烟测试和故障排除命令,请参见 tools/smlib_gui/README.md。
浏览示例
按 API 层组织的可运行组合位于 示例 下。
macOS 本地开发
仅限 Apple Silicon:./repo.sh build -p macos-universal。可用时将主机 Packman Python 构建符号链接到 _build/target-deps/python(使用 SMLIB_PYTHON_ROOT 覆盖)。
仅 Python(默认):内核、C++ 测试、_smlib_tests 和 _smlib_dev(导入需要 Tier 1 _omni_solid)。无 OpenUSD、OCCT 或 _omni_solid。
./repo.sh build -p macos-universal -j10 ./tests.sh macos-universal
Tier 1(可选):通过 setup-macos-local-deps.sh 暂存的本地 OpenUSD 3.12。
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
设置 PYTHONPATH="$PWD/_build/macos-universal/release" 以导入 Python 扩展。Packman OpenUSD/Python 包在 macOS 上不可用。macOS premake 包(premake@5.0.0-beta1+nv1-macos-universal、deps/host-deps.packman.xml)也不在公共 Packman 服务器上;请通过用户级 Packman 配置提供它。避免 ./repo.sh build -x;删除 _build、_compiler 和 _repo 以清理。
贡献
本项目目前不接受贡献。
欢迎通过项目问题跟踪器提交问题和错误报告,安全问题应按 SECURITY.md 中所述进行报告。详情请参见 CONTRIBUTING.md。
许可证
USD BRep 依据 Apache License, Version 2.0 许可。有关使用、复制和分发的条款,请参见 LICENSE。
Copyright (c) 2020-2026, NVIDIA CORPORATION & AFFILIATES. 保留所有权利。
repo.sh、repo.bat 和 tools/repoman/repoman_bootstrapper.py 则依据 MIT License 许可;完整文本请参见 THIRD_PARTY_NOTICES.md。
有关第三方声明和捆绑组件,请参见 THIRD_PARTY_NOTICES.md。
修复 USD BRep 资产
usd.heal_file 修复当前 USD 合成所用图层中的 BrepArray 定义,并写入修复了几何体的场景,同时保留其图层、引用、原生实例化、变换和材质。仅由未选中的变体使用的外部图层仍保持引用状态,但不会被修复。BRep 定义 prim spec 之外的材质子集意见会被拒绝,而不是丢失。
import usd_brep usd_brep.usd.heal_file("input.usdc", "input_healed.usdc")
来源:Hacker News · github.com