Composer 不支持面中心对齐等建模功能,所有原点对齐必须在 Blender/Maya 等 DCC 工具中预设并导出 USD/USDZ;其底层仅操作 USD Xform 变换节点,不暴露 mesh 顶点或面数据,无法运行时计算面心。

Composer 不是 OpenPose、OpenCV 或 Unity 那类支持骨骼/关键点坐标的框架,它没有“面中心”或“坐标原点对齐面中心”的内置概念——你看到的这类说法,大概率是把其他工具(如 Blender 的面中心吸附、Maya 的 pivot 对齐、或 Open3D/PyVista 的 mesh 重心计算)误套到了 Composer 上。
Composer 根本不处理几何面或 mesh 坐标原点
Composer 是 Adobe 的交互式 3D 内容创作工具,底层基于 USD(Universal Scene Description),它操作的是 USDStage 中的 Xform 变换节点和 Mesh 实例。它本身不提供“选中一个面 → 抓取面中心 → 移动原点”这类建模级功能。所有“原点对齐”动作,必须手动在 DCC 工具(Blender / Maya / Houdini)里完成,再导出为 USDZ 或 USD 供 Composer 加载。
常见错误现象:
- 在 Composer 里选中一个
Mesh,右键菜单里找不到 “Set Pivot to Face Center” 或类似选项 - 试图用
Transform面板直接输入 XYZ 偏移让原点“贴到面上”,结果整个模型位移了,但 pivot 没变 - 从 Blender 导出的 USDZ 在 Composer 中旋转/缩放异常,根源是 pivot(即局部坐标系原点)没对齐面心
真正可行的面心对齐流程:Blender 预处理 + USD 导出
你要做的不是在 Composer 里“抓取”,而是在建模工具里“预设”。以 Blender 为例(免费且 USD 支持成熟):
- 进入 Edit Mode,选中目标面(单击或框选)
- 按
Shift+S→ 选择Cursor to Selected,将 3D 游标精准落到该面中心 - 切换回 Object Mode,选中物体 →
Object → Set Origin → Origin to 3D Cursor - 确认导出设置:
File → Export → Universal Scene Description (.usd, .usdz),勾选Export Animation(如需)、Selected Objects Only,**取消勾选Export Materials(避免 USDZ 材质兼容问题)** - 导入 Composer 后,该物体的
localTransform原点就已对齐你指定的面中心
为什么不能跳过 Blender 直接在 Composer 里算面心?
Composer 的 API(如 UsdGeomXformable)只暴露变换矩阵,不暴露 mesh 顶点或面数据;它的 runtime 不加载几何拓扑结构,只渲染预烘焙的 USD prim。这意味着:
-
getPoints()或getFaceVertexIndices()这类函数在 Composer JS/Python SDK 中根本不存在 - 任何“运行时面心计算”都得靠外部插件桥接(比如用 PyTorch3D 加载 USD mesh 后算重心,再反写 transform),但这已超出 Composer 原生能力边界
- 即使强行用 USD Python API(
pxr.Usd)读取 mesh 数据,也需额外依赖pxr.UsdGeom.Mesh和顶点缓存,且无法实时更新——你改了面,原点不会自动跳过去
最常被忽略的一点:USD 中的 “origin” 是每个 Xform prim 的局部坐标系原点,它和几何体是否“有面”完全无关。你对齐的从来不是“面”,而是你人为指定的那个空间点——这个点必须在导出前就固化进 USD 文件的 xformOp:translate 属性里。











