跳转至

传输路径

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 在对面还不存在 .anmCreate Rig
动画,落到一个已经能对上的 rig 上 .anmApply
只要骨架 — 不要镜头 .pvtBuild Skeleton
重建一个你弄丢的 rig .pvtBuild Skeleton
摄像机 两者皆可 — 两种格式都携带摄像机,但 .anm 还会带上它们的运动

参见 Pivot 文件 (.pvt)动画文件 (.anm)


在每条路径上,什么会跟着走

会跟着走 说明
层级 每一项的 parent,会解析到最近的那个 被导出的 祖先 — 所以局部导出出来的结果仍然是一条连贯的 chain
Rest pose Pivot 和 rest rotation
位置 / 旋转 / 缩放关键帧 逐帧,在导出范围之内
插值 BEZIERLINEARCONSTANT
Bezier handle 绝对值,逐轴
摄像机 FOV、near/far clip、offset、roll、默认摄像机标记
Rig 分组 Rig 列,好让一个多角色场景保持分离
不会跟着走 为什么
绘图、网格、材质、贴图 OTS 是一座变换的桥,不是资产管线
Deformer、约束、表达式、IK 只有最终产生的变换
图层名、颜色、标签、节点元数据 除了匹配所需的名称和路径之外一概不带
Peg 的创作模式 会被记录为一条提示,但从不用来改变数值 — 参见 文件格式

因为只有最终产生的变换会移动,所以一个在这边由复杂装置驱动的 rig,到了对面就是一串朴素的烘焙关键帧。这通常正是你想从一次传输中得到的东西,但它也意味着每个镜头的传输是单向的:你没法把它送回去,还指望原来的装置会重新出现。