OpenUSD是一个开放、可扩展的框架,为物理AI提供通用场景描述语言,能够将CAD数据、仿真资产和真实世界的遥测数据整合到一个物理精确的共享世界视图中。
过去,构建USD实现通常需要对现有大型代码库进行适配——即便团队只需要特定的内存占用、不同的应用程序二进制接口(ABI)或不同的性能特性。nanousd-labs提供了另一条路径:直接从标准规范生成运行时。
这一方法之所以可行,是因为USD由正式且机器可读的规范定义。由OpenUSD联盟(AOUSD)开发的USD核心规范,是定义USD数据模型如何在层堆栈中组合与解析的版本化标准。
由于该规范对人类和智能体都是精确的契约,开发者可以指导智能体生成特定工作负载所需的内容。这种方法与适配现有代码库或手动实现规范相辅相成,能够加快实现周期,并为最终用户提供适合其部署环境的物理AI产品。
nanousd-labs作为NVIDIA Omniverse Labs的一部分发布,这是一个开放的实验性项目集合。它在内部黑客马拉松期间构建,为开发者提供了一种轻量级方式,可使用AI智能体直接从USD核心规范生成USD运行时。
nanousd-labs方法论的核心理念是将USD核心规范视为契约。规范定义了合规运行时必须产生的行为,而非构建方式。智能体直接读取规范、编写满足该行为的代码,并根据从规范派生的测试套件验证输出,持续迭代直至输出符合规范要求。标准是持久的,生成的代码是弹性的——可以针对内存、性能或语言等不同约束重新生成,同时不失去合规性。
在开发者的指导下,智能体逐节读取规范,生成实现各项行为的代码,并针对同一标准派生的测试套件运行,迭代直至输出符合规范要求。这使得该方法切实可行:规范成为开发者指导智能体构建和验证的契约,而非只读一次便靠人工解读的文档。
在实践中,这一方法有明确的边界。在构建nanousd-labs的过程中,智能体负责机械性的规范到代码转换工作,包括解析、场景组合以及场景值在层间的解析方式;而工程师则负责性能、权衡取舍和架构决策。
nanousd是USD运行时数据模型的独立实现,直接从USD核心规范派生,通过稳定的C ABI对外暴露。该实现以C++编写,提供任何语言均可直接调用的公共C API。
nanousd是数据层,而非渲染器。它负责解析、组合、查询和写入,止步于像素生成之前。客户端代码针对固定的C API编译,并在运行时加载其实现,因此后端可以更换,而调用代码保持不变。后端可以在OpenUSD与nanousd之间切换,无需修改客户端。
开发者有两种方式开始使用nanousd-labs。第一种是直接克隆并构建nanousd——这是一个带有C API的编译实现,任何编程语言均可调用,可立即指向现有USD场景。大多数物理AI开发者会从nanousd-python入手,这是基于nanousd C API构建的Python包,无需GPU,可在任何机器上无头运行:
```
python -m pip install -e ./nanousd-python
```
打开场景并遍历其prim(构成USD场景的各个元素)的方式如下:
```python
import nanousd
stage = nanousd.Stage.open("scene.usda")
for prim in stage.traverse():
print(prim.path, prim.type_name, prim.attribute_names())
cube = stage.get_prim_at_path("/World/Cube")
if cube is not None and cube.has_attribute("size"):
print(cube.read_double("size"))
```
第二种方式深入方法论核心。技能图(skillgraph)将人工指令固化为可复用的技能,包含结构化配方、提示词和测试,用于捕获如何生成符合规范的行为。约10分钟的教程将引导开发者运行生成符合核心规范的USD ASCII(USDA)解析器的技能,并对方法论形成实际理解。
构建专用USD运行时现在无需从零开始。USD核心规范为智能体提供了精确的构建基础,nanousd-labs展示了这在实践中的具体形态。该方法论是开放的,标准是公开的。
开发者今天即可在GitHub上贡献新技能、语言支持和物理AI用例。AOUSD成员组织可通过核心规范工作组参与塑造标准本身。
Q&A
Q1:nanousd-labs是什么?它解决了什么问题?
A:nanousd-labs是NVIDIA Omniverse Labs发布的开放实验性项目,允许开发者使用AI智能体直接从USD核心规范生成轻量级USD运行时。它解决的核心问题是:过去构建USD实现需要适配庞大的现有代码库,而nanousd-labs提供了一条更快的路径——让智能体读取规范、生成代码、验证合规性,无需从零手写实现。
Q2:nanousd与完整的OpenUSD有什么区别?
A:nanousd是USD运行时数据模型的独立轻量级实现,只包含特定工作负载所需的内容,通过稳定的C ABI暴露接口。它是数据层,负责解析、组合、查询和写入,不涉及渲染。现有OpenUSD技术栈可继续正常使用,nanousd的后端可与OpenUSD互换,客户端代码无需修改。
Q3:开发者如何快速上手nanousd-labs?
A:有两种入口:一是直接克隆并构建nanousd,通过`pip install -e ./nanousd-python`安装Python包,无需GPU即可运行;二是跟随约10分钟的教程,学习技能图方法论,运行生成符合USD核心规范的USDA解析器的技能,从而理解整套工作流程并应用到自己的项目中。
