文件格式插件#

什么是 SdfFileFormat 插件?#

在 OpenUSD 框架中,Sdf 代表场景描述基础(Scene Description Foundations)。它是处理场景数据序列化和合成的底层。一个 SdfFileFormat 插件是一个教会 USD 如何读写特定文件格式的组件。

默认情况下,USD 自带其自身格式(.usda.usdc.usdz)的插件,社区也创建了几个插件扩展,例如 Adobe 文件格式插件

MJCF SdfFileFormat 插件允许支持 USD 的应用程序直接理解 MuJoCo 的原生 .xml (MJCF) 文件并与之交互,就像它们是原生的 USD 文件一样。

它能实现什么?#

此插件可实现

  1. 在 USD 中引用 MJCF 文件:使用标准的 USD 合成弧(如引用、有效载荷)将 MJCF 文件直接包含在更大的 USD 场景中。例如,您可以将一个在 .xml 文件中定义的 MuJoCo 机器人放置到一个用 USD 建模的房间场景中。

  2. 在 USD 工具中加载 MJCF 文件:usdview 这样的工具或其他基于 USD 的应用程序可以打开、检查和渲染 MJCF 文件,并动态地将 MJCF 元素转换为 USD 图元和属性。

  3. 将 MJCF 转换为 USD:该插件可以作为将 MJCF 文件转换为持久性 USD 文件(例如 .usda.usdc)的基础。

本质上,它使 MJCF 成为 USD 生态系统中的一等公民。

用法#

  1. 安装:请参阅构建

  2. 在 USD 文件中引用(例如,``.usda``)

    example.usda#
    #usda 1.0
    (
        upAxis = "Z"
    )
    
    def Xform "world"
    {
        def "robot" (
            prepend references = @./my_robot.xml@
        )
        {
        }
    }
    

    在此示例中,my_robot.xml 是同一目录下的一个 MJCF 文件。USD 将使用该插件来加载和解释其内容。

  3. 在 usdview 中打开

    usdview my_robot.xml
    

    如果插件设置正确,usdview 将会渲染 MJCF 文件中定义的机器人。

  4. 在 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 环境中。