跳转至

动画文件(.anm

.anm 是日常传输用的格式。它携带动画 — 以及 .pvt 所携带的一切,一并折叠在里面。

装的是
Keyframe 位置、旋转和缩放,逐帧,在导出范围之内
插值 每个关键帧上的 BEZIERLINEARCONSTANT
Bezier handle 绝对值,逐轴
Rest pose 每一项的 parent、pivot 和 rest rotation — 也就是折叠进来的 .pvt 内容
帧范围 好让目标知道它收到的是什么
摄像机 镜头、clip plane、offset、roll、默认标记
Rig 标签 好让一个多角色场景保持分离

倒数第三行才是关键:

一个 .anm 就能重建整个 rig 以及 动画

因为每一项都自带它的 parent 和 rest pose,所以 .anm自给自足 的。把单独一个 .anm 交给别人,他们就能在一个空场景里按下 Create Rig,得到一副能用、带动画的骨架。你不需要额外附带一个 .pvt


导出

Maya 中的 .anm 导出页
  1. 选中你想发送的东西 — 包括任何摄像机。
  2. Animation Files (.anm) → Export,然后按 + 把它扫描进来。
  3. 检查 Rig 列。
  4. 设置 StartEnd,或者按 Scene range
  5. Save As…,然后 Export Animation

帧范围很重要

只有范围之内的帧会被采样。一个收紧的范围意味着更小的文件和更快的导出;而一个没盖住你动作结尾的范围会悄无声息地把镜头截断。Scene range 是安全的默认选择。

范围会被写进文件,所以导入一侧的摘要行会准确告诉接收方他们拿到的是什么。

对一个关键帧来说,"导出"意味着什么

OTS 不会盲目地采样每一帧。它收集任意通道上真正打了关键帧的那些帧,加上范围的首帧和末帧以便镜头有明确边界,然后在这些帧上求值变换。

这个求值是一次 world matrix bake,并被换算成相对于最近的被导出祖先。正是这一点让你可以只导出半个 rig 却依然得到连贯的结果:如果你导出了一只手但没导出它上面的前臂,那么这只手的关键帧到达时是相对于 确实被导出的 那个上级的,pose 是对的。

这也是为什么每个镜头的传输是单向的。到达对面的是烘焙后的变换,而不是产生它们的 deformer、约束或表达式。


导入

Harmony 中的 .anm 导入页

Browse… 到那个文件。OTS 会立即把其中每一项与你的场景做匹配并报告:

3 PEGs — 3 matched | 1 camera | Frames 1-60

每一行都有一个 复选框 — 取消勾选任何你不想要的项。被涂成 琥珀色 的行表示它在这个场景里没找到匹配。参见 匹配树

然后从三个动作里选一个。

Apply to PEGs / Apply to Joints

把动画写到那些 已匹配 且被勾选的行上。不创建任何东西;不碰任何未匹配的项。

当 rig 在这一侧已经存在时,这就是你要的 — 可能是你早先从一个 .pvt 构建的,也可能是你自己搭的、名称能对上的 rig。

在 Harmony 中,Apply 会改写 peg 的创作模式

应用到一个已有的 Harmony peg 上时,会解除它上面任何 3D-path 或 quaternion-path column 的链接,并写入全新的分通道 bezier 曲线。数值是正确的,曲线也是可编辑的,但一个原本基于 3D path 创作的 peg 之后就不再是了。

这是刻意的 — 这是表示任意传入曲线的唯一办法 — 但在你把它指向一个亲手打磨过的 peg 之前,值得先知道这一点。

Create Rig

从文件中折叠进来的 rest pose 构建骨架 并且 应用动画,一步完成。这是空场景时该按的按钮,也正是 .anm 不需要配套 .pvt 的原因。

构建出来的东西与 Build Skeleton 相同 — 在 Maya 中是 joint,在 Blender 中是每个 rig 一个 armature,在 Harmony 中是一个包着 peg 的 wrapper group — 只是在上面又应用了关键帧。

Create Cameras

构建文件携带的摄像机,带上它们的镜头和 clip plane,并挂到驱动它们的那一项上。如果文件里没有摄像机则禁用。参见 摄像机

Create Rig 之后琥珀色的行仍然是琥珀色

创建 rig 不会重绘这个列表 — 你看到的匹配状态还是你按下浏览时的那一份。对同一个文件再按一次 Browse… 就能重新执行匹配,看到这些行解析成功。


.pvt 还是 .anm

.pvt .anm
静置骨架
父子关系
摄像机
动画
Bezier tangent
帧范围
能从零构建一个 rig

老实说:.anm 是超集.pvt 的存在,是为了让你能在 不附带 镜头的情况下交出一副骨架 — 这是个真实的需求,只是没那么频繁。