传输路径¶
OTS 在三个应用之间搬运数据,也就意味着六个方向。六个方向全都能用,两种文件格式都能用。
| 从 ↓ / 到 → | Harmony | Blender | Maya |
|---|---|---|---|
| Harmony | — | ✅ .pvt .anm |
✅ .pvt .anm |
| Blender | ✅ .pvt .anm |
— | ✅ .pvt .anm |
| Maya | ✅ .pvt .anm |
✅ .pvt .anm |
— |
为什么是全部六条,而不只是我们测过的那几条¶
OTS 里没有任何按路径分支的代码。不存在"Harmony 读取器"和"Blender 读取器" — 每种文件格式只有 一个 读取器。
每个写入方都会往文件里盖一个 coordinate_system 头,描述它写入时所处的空间:哪个轴朝上、手性是什么、一个单位代表多少。每个读取方都会查看这个头,并在读入时把数值经由一个统一的 规范空间 转换过来。
所以一条路径并不是一项必须被开发出来的功能。Blender → Maya 能用,和 Harmony → Maya 能用是同一个原因:Maya 的读取器既不知道也不关心是谁写的这个文件,它只关心文件声明了什么空间。参见 坐标系。
Blender ↔ Maya 是一等公民路径
这一点值得直说,因为它正是大家默认以为缺席的那条:你可以把一个 rig 或一个镜头 直接从 Blender 送到 Maya,或者从 Maya 送到 Blender,中途不经过 Harmony。它被一个自动化的跨应用测试覆盖:该测试从 Blender 导出,并在 Maya 内部断言得到的 pose 是否正确。
每条路径擅长什么¶
Harmony → Blender / Maya¶
最常见的一条。一个 2D 剪纸 rig 的 peg 会变成 bone 或 joint,于是你可以拿 3D 场景当参考版式、在 3D 中正经地做一个运镜,或者渲染一层匹配的 3D pass。
整个 peg 层级都会到达,包括那些只是为了挂载摄像机而存在的 peg。
Blender / Maya → Harmony¶
另一条常见的。做一个运镜动画 — 或者一个机械 rig,或者任何在 3D 里更容易 block 的东西 — 然后用它来驱动你的 Harmony peg。
应用动画会改写 Harmony peg 的创作模式
当 OTS 把一个 .anm 应用到已有的 Harmony peg 上时,它会解除该 peg 上任何 3D-path 或 quaternion-path column 的链接,转而写入全新的分通道 bezier 曲线。
数值 是对的,曲线也是可编辑的。但如果这个 peg 原本是基于一条 3D path 创作的,那条 path 之后就没了。这是一个刻意的取舍 — 否则 Harmony 的旋转 column 无法表示所有可能传入的曲线 — 但对一个你亲手打磨过的 peg 来说,这多半不是你想要的。把动画应用到一个全新的 Create Rig 结果上,就完全绕开了这个问题。
Blender ↔ Maya¶
两个 3D 应用,不涉及 Harmony。当你流程的其余部分就是 Octo Tools,而你只想要一次轻量、可读、可 diff 的传输,并且要带上 bezier tangent 和摄像机镜头数据、又不想走一趟 FBX 往返时,这条路径就派上用场。
这条路径主要考验的是 Z-up ↔ Y-up 转换,双向都是。参见 坐标系。
为这条路径挑选格式¶
| 你想要 | 就发送 |
|---|---|
| 动画,而且 rig 在对面还不存在 | .anm → Create Rig |
| 动画,落到一个已经能对上的 rig 上 | .anm → Apply |
| 只要骨架 — 不要镜头 | .pvt → Build Skeleton |
| 重建一个你弄丢的 rig | .pvt → Build Skeleton |
| 摄像机 | 两者皆可 — 两种格式都携带摄像机,但 .anm 还会带上它们的运动 |
参见 Pivot 文件 (.pvt) 和 动画文件 (.anm)。
在每条路径上,什么会跟着走¶
| 会跟着走 | 说明 |
|---|---|
| 层级 | 每一项的 parent,会解析到最近的那个 被导出的 祖先 — 所以局部导出出来的结果仍然是一条连贯的 chain |
| Rest pose | Pivot 和 rest rotation |
| 位置 / 旋转 / 缩放关键帧 | 逐帧,在导出范围之内 |
| 插值 | BEZIER、LINEAR、CONSTANT |
| Bezier handle | 绝对值,逐轴 |
| 摄像机 | FOV、near/far clip、offset、roll、默认摄像机标记 |
| Rig 分组 | Rig 列,好让一个多角色场景保持分离 |
| 不会跟着走 | 为什么 |
|---|---|
| 绘图、网格、材质、贴图 | OTS 是一座变换的桥,不是资产管线 |
| Deformer、约束、表达式、IK | 只有最终产生的变换 |
| 图层名、颜色、标签、节点元数据 | 除了匹配所需的名称和路径之外一概不带 |
| Peg 的创作模式 | 会被记录为一条提示,但从不用来改变数值 — 参见 文件格式 |
因为只有最终产生的变换会移动,所以一个在这边由复杂装置驱动的 rig,到了对面就是一串朴素的烘焙关键帧。这通常正是你想从一次传输中得到的东西,但它也意味着每个镜头的传输是单向的:你没法把它送回去,还指望原来的装置会重新出现。