Pivot 文件(.pvt)¶
一个 .pvt 就是一副 静置骨架。它只回答一个问题 — 当什么动画都没有时,这个 rig 是什么形状? — 别的一概不管。
| 装的是 | 不装的是 |
|---|---|
| 每一项的 名称 | 任何动画 |
| 它的 parent | 任何帧范围 |
| 它的 pivot(静置位置) | 任何曲线或 tangent |
| 它的 rest rotation | |
| 它的 rig 标签 | |
| 摄像机 及其镜头设置 |
用它来做 rig 搭建、重建你弄丢的骨架,以及在不交出镜头的前提下把一个 rig 交给别人。
大多数时候你想要的其实是 .anm
一个 .anm 携带上述全部内容 再加上 动画,所以它能做 .pvt 能做的一切。要有意识地去选 .pvt — 当你确实只想要骨架本身的时候。参见 动画文件 (.anm)。
导出¶
- 在你的场景中选中 peg / bone / joint。
- Pivot Files (.pvt) → Export,然后按 + 把它们扫描进来。
- 检查 Rig 列 — 参见 Rig 与多 Rig。
- 如果需要就设置 Scale(见下文)。
- Save As…,然后 Export Pivots。
导出列表没有复选框:列表里有什么就写出什么。列表、Rig 列和分组行为都与 .anm 导出页完全一致 — 无论一个场景以哪种格式离开,它分组成 rig 的方式都是一样的。
Scale 选项¶
Scale 在导出时对每个 pivot 做乘法,读取方在导入时再把它除回去。它的用途是那些以不同工作尺寸创作的 rig — 比方说一个大了十倍的 rig,你希望它到达时是个正常尺寸。
除非你确知需要,否则就保持 1.000。它会被记录进文件,所以一个用 10 的 scale 写出的 .pvt 再读回来是无损的。
请注意这 不是 应用之间的单位转换。米 ↔ 厘米是自动且独立处理的;参见 坐标系。
Pivot 空间(仅 Blender)¶
Blender 的导出面板多了一个 Pivot Space 选项:
| 选项 | 含义 |
|---|---|
| Local (relative to parent) | 每个 bone 相对于其父 bone 的位置。默认值,也是你想要的 |
| Armature Space | armature 空间中的绝对位置 |
Harmony 和 Maya 永远写 local。除非你有特定理由,否则也把 Blender 留在 Local,这样无论是谁写的,文件的含义都一致。
导入¶
Browse… 到那个文件。摘要行会告诉你里面有什么 — rig 名、有多少项、pivot 空间、scale 系数,以及它包含多少个 rig:
spaceship · 3 joints · space local · 2 rigs
列表会显示每一项及其 pivot,并按文件所描述的层级缩进。没有 Parent 列,因为这个缩进 就是 即将被构建的父子关系。
然后:
- Build Skeleton 按文件描述的 rest pose 创建整个层级 — 在 Maya 中是 joint,在 Blender 中是 bone,在 Harmony 中是 peg。
- Create Cameras 构建文件携带的摄像机,并挂到它们对应的项上。只有确实存在摄像机时它才会亮起来。
.pvt 导入不会把行标成琥珀色
与 .anm 导入列表不同,.pvt 预览从不把行涂成琥珀色。它并不是在跟你的场景做匹配 — 它展示的是一副即将从零构建出来的骨架。参见 匹配树。
Build Skeleton 到底造出什么¶
Joint,以 干净的 orient 创建:rotate order 为 XYZ,joint orient 归零,rotate axis 归零。一切都存放在 .rotate 里,这样骨架的行为可预测,之后应用的动画也会落在你期望的位置。
当文件中有不止一个 rig 时,每个 rig 都会得到自己的空 group,它的各个 root 挂在下面。
每个 rig 标签一个 armature。Bone 以单位矩阵的 rest 创建,朝向 +Y,因此一个 pose bone 的局部变换恰好就是它相对于 parent 的变换。
单 rig 的文件会沿用文件自身的基础名。
包在一个 wrapper group 里的 peg,pivot 被写进每个 peg 的 pivot 属性,父子相连并接进一个 composite。整个构建过程是单独一步 undo。
什么时候 .pvt 才是对的答案¶
交接一个 rig。 有人需要这副骨架来开展工作;他们不需要 — 或者不该拿到 — 你的镜头。
恢复。 一个 rig 被弄坏或删掉了。如果你在它健康的时候导出过一个 .pvt,Build Skeleton 就能把它放回来。
开动画之前先搭好。 从一个 .pvt 构建骨架一次,然后用 Apply 把许多不同的 .anm 镜头应用上去,不用每次都重建。
其他任何情况。 用 .anm。