文件格式插件#
什么是 SdfFileFormat 插件?#
在 OpenUSD 框架中,Sdf 代表场景描述基础(Scene Description Foundations)。它是处理场景数据序列化和组合的底层架构。SdfFileFormat 插件是一个能够让 USD 读取和写入特定文件格式的组件。
默认情况下,USD 附带了其自身格式(.usda, .usdc, .usdz)的插件,社区也创建了多个插件扩展,例如 Adobe 文件格式插件。
MJCF SdfFileFormat 插件允许支持 USD 的应用程序直接理解并交互 MuJoCo 的原生 .xml (MJCF) 文件,就像操作原生 USD 文件一样。
它有什么作用?#
该插件实现了以下功能:
在 USD 中引用 MJCF 文件: 使用标准的 USD 组合弧(如 references、payloads)将 MJCF 文件直接包含在更大的 USD 场景中。例如,您可以将一个在
.xml文件中定义的 MuJoCo 机器人放置到 USD 建模的房间场景中。在 USD 工具中加载 MJCF 文件: 像
usdview或其他基于 USD 的应用程序可以打开、检查并渲染 MJCF 文件,在运行过程中将 MJCF 元素转换为 USD prims 和属性。将 MJCF 转换为 USD: 该插件可用作将 MJCF 文件转换为持久化 USD 文件(例如
.usda或.usdc)的基础。
从本质上讲,它使 MJCF 成为了 USD 生态系统中的“一等公民”。
用法#
安装: 请参考 构建(Building)。
在 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 环境的无缝集成。