跳到正文
Hacker News· torsi0n·· 6 天前AI 评分38

Nvidia 开源 USD BRep:NURBS B-rep 实体建模内核

USD BRep: Nvidia's open-source NURBS B-rep solid modeling kernel

AI 导读

Nvidia 在 Omniverse 下开源了 USD BRep,一套 NURBS 边界表示(B-rep)实体建模库,采用 Apache 2.0 许可。该库提供 usd_brep.usd.heal_file 等工具,可修复 USD 组合层中的 BrepArray 定义并保留图层、引用、原生实例化、变换与材质。项目目前不接受外部贡献,仅通过 issue tracker 接收问题与漏洞报告。

正文 · AI 翻译

包含 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),而非 Packman msvc。
    • 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