在 USD 中,区分使用通用的 `UsdPrim` 和具有特定功能的 `UsdGeomXform` 这样的特定功能类,关键在于你希望如何访问和操作该场景节点(Prim)的属性和功能。
当使用 `UsdStage::DefinePrim` 时,它返回的是一个通用的 `UsdPrim` 对象。这个 `UsdPrim` 代表了场景图中对象通用的、持久的存在。
然而,如果你的节点具有特定的领域功能,例如几何变换(Transform)或特定的几何体类型(如 Sphere),那么你应该使用对应于该功能的特定类型名称(如 `'Xform'` 或 `'Sphere'`)来调用 `DefinePrim`。这样做的好处是,它返回的不是一个通用的 `UsdPrim`,而是对应于该特定类型的 Schema 对象(例如 `UsdGeomXform`)。
这个特定类型的 Schema 对象提供了对该节点域特有的、第一公民级别的 API 支持,允许你更方便地创建、操作、检查和编写该节点特定的数据和功能。虽然所有 Schema 类都有一个 `GetPrim()` 方法可以返回其底层的 `UsdPrim`,但使用特定 Schema 对象可以让你直接访问其领域特定的功能接口,这是其核心价值所在。