文件格式插件#
什么是 SdfFileFormat 插件?#
在 OpenUSD 框架中,Sdf 代表场景描述基础(Scene Description Foundations)。它是处理场景数据序列化和合成的底层。一个 SdfFileFormat 插件是一个教会 USD 如何读写特定文件格式的组件。
默认情况下,USD 自带其自身格式(.usda、.usdc、.usdz)的插件,社区也创建了几个插件扩展,例如 Adobe 文件格式插件。
MJCF SdfFileFormat 插件允许支持 USD 的应用程序直接理解 MuJoCo 的原生 .xml (MJCF) 文件并与之交互,就像它们是原生的 USD 文件一样。
它能实现什么?#
此插件可实现
在 USD 中引用 MJCF 文件:使用标准的 USD 合成弧(如引用、有效载荷)将 MJCF 文件直接包含在更大的 USD 场景中。例如,您可以将一个在
.xml文件中定义的 MuJoCo 机器人放置到一个用 USD 建模的房间场景中。在 USD 工具中加载 MJCF 文件:像
usdview这样的工具或其他基于 USD 的应用程序可以打开、检查和渲染 MJCF 文件,并动态地将 MJCF 元素转换为 USD 图元和属性。将 MJCF 转换为 USD:该插件可以作为将 MJCF 文件转换为持久性 USD 文件(例如
.usda或.usdc)的基础。
本质上,它使 MJCF 成为 USD 生态系统中的一等公民。
用法#
安装:请参阅构建。
在 USD 文件中引用(例如,``.usda``)
example.usda##usda 1.0 ( upAxis = "Z" ) def Xform "world" { def "robot" ( prepend references = @./my_robot.xml@ ) { } }
在此示例中,
my_robot.xml是同一目录下的一个 MJCF 文件。USD 将使用该插件来加载和解释其内容。在 usdview 中打开
usdview my_robot.xml如果插件设置正确,
usdview将会渲染 MJCF 文件中定义的机器人。在 Python 中使用(通过 USD API)
from pxr import Usd # Load an MJCF file as a USD stage stage = Usd.Stage.Open('my_robot.xml') if stage: print(f"Successfully opened {stage.GetRootLayer().identifier}") # You can now inspect the stage as any other USD stage for prim in stage.TraverseAll(): print(prim.GetPath()) else: print("Failed to open MJCF file")
该插件极大地增强了 MuJoCo 和基于 USD 的工作流之间的互操作性,允许将在 MJCF 中定义的物理资产无缝集成到更广泛的 3D 环境中。