本教程介绍了如何使用 Python 脚本基于 USD 原生 API 创建一个包含变换(Transform)和球体(Sphere)的场景,并使用 usdview 进行可视化编辑。整个过程主要围绕创建和导出名为 `HelloWorld.usda` 的 USD 场景文件展开。
**使用 Python 脚本创建场景**
要创建场景,需要使用 `pxr.Usd` 和 `pxr.UsdGeom` 模块。核心步骤包括:
1. **创建新的 Stage 对象**:使用 `Usd.Stage.CreateNew('HelloWorld.usda')` 来实例化一个新的 USD 场景,并指定输出文件名。
2. **定义变换(Transform)Prim**:使用 `UsdGeom.Xform.Define(stage, '/hello')` 在场景根目录下定义一个名为 `/hello` 的变换节点。
3. **定义几何体(Sphere)Prim**:使用 `UsdGeom.Sphere.Define(stage, '/hello/world')` 在 `/hello` 变换节点下定义一个名为 `world` 的球体几何体。
4. **保存 Stage**:最后,调用 `stage.GetRootLayer().Save()` 将构建好的场景写入文件。
执行此 Python 脚本后,将生成 `HelloWorld.usda` 文件。
**在 usdview 中可视化和编辑场景**
创建文件后,可以使用 `usdview` 工具进行可视化和检查:
1. **打开场景**:通过运行 `$ usdview HelloWorld.usda` 命令打开场景。
2. **检查几何体复杂度**:可以在 `View` 菜单中找到 `Complexity` 选项,或者使用快捷键 `Ctrl-+` 和 `Ctrl--` 来增减几何体的细节级别。
3. **使用内置 Python 解释器**:通过按下 `i` 键或使用 `Window` 菜单中的 `Interpreter`,可以进入嵌入式 Python 解释器。该解释器提供 `usdviewApi` 对象,允许用户与当前视图中的 Prim 进行交互式查询。例如,选中球体后,可以通过 `usdviewApi.prim` 获取其 Prim 对象,并调用 `GetTypeName()` 或 `GetAttribute('radius').Get()` 来读取其类型和属性值。
**文件内容结构**
生成的 `.usda` 文件是文本格式,其内容结构反映了上述的层级关系和定义:
```usda
#usda 1.0
def Xform "hello"
{
def Sphere "world"
{
}
}
```