跳转至

Unroll

视频教程 — 即将推出

Unroll 是 Compose 的逆过程。 Compose 把你创作的姿势烘焙进一个 Master Controller;Unroll 则把存储在某个 MC 里的姿势重新在 Harmony 时间线上生成为 keyframe。

Unroll

可以用它来:

  • 找回丢失在时间线上的姿势——见下文,
  • 把一个继承来的 rig 的姿势重新放回 frame 上,方便你编辑它们,
  • 把一个已经打好 key 的 rig 版本交给动画师,
  • 合并一个正面和一个背面的 MC 到同一条时间线上——这是 Harmony 自带的 unroll 做不到的。

合成后的 MC 是你姿势的一份备份

第一种用途正是能在某天挽救整个项目的那种。一个合成后的 MC 所携带的姿势,是完整地拷贝在它自己的状态文件里的——它们不依赖于当初来源的那些时间线 frame。所以即便那些 frame 被删除、被覆盖,或者因为一次糟糕的保存而丢失,这个 MC 依然保留着每一个姿势,Unroll 会把它们重新作为 keyframe 放回时间线。Compose 把它们烘焙进去,Unroll 把它们取出来。

它能 unroll 什么

MC 显示为 姿势来自
一个 ORC 合成的 MC ORC composed MC ORC 自己的姿势数据和 manifest
一个 Toon Boom slider MC Harmony slider MC 它的 .tbState 文件里的状态
一个 Toon Boom grid MC Harmony grid MC 它的 .tbState 文件里的状态
一个 Toon Boom stack / cube MC Harmony stack MC 它的 .tbState 文件里的状态

原生的 Toon Boom MC 也能用。 ORC 通过它们自己的 UI 脚本识别它们,并通过 Toon Boom 的状态管理器读取它们的姿势。

从哪里启动它

入口 范围
某个 control 的 ⤓ Unroll 按钮 那个 control——两个 face 都算
右键点击某个 control → ⤓ Unroll Poses… 那个 control——两个 face 都算
某个 pose layer 的 ⤓ Unroll 按钮 打开对话框,且只勾选那个 layer

layer 上的这个按钮只出现在一个 MC 是导入而来的自由 layer 上——一个你从零创作的 layer 没有 MC 可供 unroll。

当没有加载任何 MC 时,这个按钮会是灰色的,tooltip 会说明原因:

在为这个 rig 加载一个 Master Controller 之前保持锁定——请在上方的来源栏中设置 MC。

一次操作同时处理 Front + Back

当两个槽位都设置好时,ORC 会把它们合并成一条时间线来 unroll。这个计划的标题是 robin-front-MC + robin-back-MC,每一条警告都会注明它来自哪一个 MC。

对话框

Unroll 范围

一棵可勾选的树,列出要烘焙的内容,用的是和 Outliner 一样的图形。

默认状态
一个 control 已勾选。取消勾选会把它的子级灰掉。
Front / Back 已勾选。每一面各自独立地限定范围,所以你可以只烘焙正面。
一个自由的 pose layer 已勾选。
一个 knob 只有它自己有 target 时才勾选。
Globals 存在全局 layer 时,默认勾选。

一个没有 target 的 knob 会被禁用,并说明原因:

Knob —— 一个 dimension,不是一个 pose layer。 它自己没有 target,所以这里没有什么可 unroll 的。 勾选一个骑在这个 knob 上的 layer,已经会 unroll 沿着这个 knob 的 dimension 的每一个姿势。

在这棵树下方,有一个实时计数:Baking 2055 of 2055 pose(s)。计数为零时,Unroll 按钮会被禁用。

同一套机制覆盖所有情况——烘焙整个 MC、单个 control、单个 layer、单个全局 layer,或单独一面。

Frame offset(帧偏移)

Frame offset 会被加到每一个源 frame 上。0 会把姿势还原到它们原本的 frame;正值让一切延后,负值让一切提前。

姿势表格

Unroll table

勾选 Show poses table 可以按每个姿势显示一行:

是否可编辑
Src Frame 否——姿势最初创作的位置
Dst Frame ——它将被写入的位置
Snap Key 否——这个姿势的地址
Tabs 否——哪些 stack 参与其中

一个原生 MC 显示的则是 Src FrameDst FramePose Name

行的文字会被染色以提醒你:

颜色 含义
琥珀色 不止一个姿势落到了这个目标 frame 上
红色 目标 frame 小于 1

Reset Dst 会把每一行都还原为 Src + offset

这张表格默认是开启的,除非计划中的姿势达到 500 个或更多,此时为了速度会默认关闭。两种视图始终是就绪状态,所以切换是即时的。

警告

消息 含义
466 frame(s) with multiple poses: 51, 52, 53… (+458) 更晚的 snap 会堆叠在这些 frame 上更早的 snap 之上。
N frame(s) ≤ 0 — fix before applying 会阻止 Unroll,直到修复为止。

运行它

一个进度弹窗会报告每一个数据块:

Frame 1200 / 2055 — controls=600 · layer writes=205488 · failed=0
计数器 含义
controls= 已应用的 facade 状态数——每个 control 姿势一个
layer writes= 来自 pose layer 数据的单项属性写入数。这就是为什么这个数字会很大。
failed= 找不到对应节点或列的写入次数

Cancel 需要预先武装(armed)——点一次进入四秒的待命状态,再点一次才会真正中止。这种阻力是刻意设计的:在 unroll 进行到一半时中止,会让你的时间线处于部分写入的状态。它只会在一个数据块边界(五十帧)处停下,绝不会在写入过程中停下。

整个过程都发生在一个 Harmony 撤销步骤内,所以按一次 Ctrl+Z 就能全部撤销。

结果 消息
干净完成 Unroll done — 2055 pose(s), controls=600 · layer writes=205488 · failed=0
出现失败 Unroll: 2000 OK, 55 failed write(s), 2 failed frame(s) — see log
被取消 Unroll cancelled — 812 pose(s) applied

它会写入什么

Unroll 不写入任何文件。 它的全部输出都是你场景里的 keyframe、属性值和 drawing 的曝光信息。

对每一个 frame,它会先从状态文件中还原 control 自身的姿势——头部的 peg、下颌的形变器、对口型的 drawing,和创作时完全一致——然后把 pose layer 的形变偏移、handle 长度、peg 变换以及 drawing 的曝光,直接写入它们对应的节点。

一个原生 MC 没有这样的数据,所以它只是把命名好的状态原样应用到每一个目标 frame 上。

Unroll 与 Compose 的配合

它们是同一个循环的两个方向:

创作的姿势  ──Compose──▶  一个 Master Controller  ──Unroll──▶  时间线上的 keyframe

正是这个往返,让你可以拿一个别人做好的 MC——哪怕是一个纯粹的 Toon Boom MC——unroll 成 frame,导入 ORC,重新创作你需要的部分,再把它合成回去。

参见 重新编辑一个已合成的 MC

相关内容