视觉指示器¶
ORC 用很少的颜色说很多话。这一页就是全部的词汇表。
统领的规则是:颜色被有意地节省使用。 Outliner 只有恰好四种颜色状态,grid 只有一种绿色,而那些仅仅是"有趣"的信息则被刻意留成灰色。
绿色表示"active 节点在此处有 key"¶
只有一种绿色,用于所有类型的 key——一个 pose 的 frame、一个 driver 的值、一个 constraint 的状态、一个 look-at 的 key。
| 位置 | 样子 |
|---|---|
| 一个 grid snap | |
| 一个 slider 的刻度 | |
| 一个 slider 的 handle | handle 在处于有 key 的位置时变绿,凹槽也随之染色 |
| 一个字段标签 | 绿色文字 |
| 每个可见 grid 的 cursor,短暂地 | 一闪绿光——刚刚记录了一个 key |
一个 navigator 只显示一个节点的 key,这就是为什么一种颜色就够了。
绿色始终关于 active 节点
在 driver 的页面上,pose 的绿色在源头就被抑制,并被那个 driver 自己的 key 取代。否则,一个每个 snap 都有 key 的 rig 会整片亮起,却什么都说明不了。
一个被 pin 住的 navigator 会显示 frame 编号,但没有绿色——它是一份参照,没资格宣称拥有你的 key。
其他的 grid 标记¶
| 标记 | 含义 |
|---|---|
| 一个空的 snap | |
| back face 的一个 side snap,通过 Share Sides 从 front 继承而来。可见、可点击,但不可编辑。 | |
| Modified——自 rig 被导入以来,这个 snap 的 frame 发生了变化 | |
| Removed——空的,但参照在这里有一个被删除的 frame。没有这个环,它看起来会和导入时本来就空的 snap 一模一样 | |
— |
这里没有 frame |
cursor 是唯一带边框的圆点,它同时携带两个信息——它的填充是这个 snap 的状态,它的边框是这个 snap 是否被修改过:
| Cursor | 含义 |
|---|---|
| 一个没有 key 的 snap | |
| 一个有 key 的 snap | |
| ……并且这个 snap 被修改过 | |
| 一个没有 key 而被移除的 snap——光标下是空的,黄色是因为参照在这里有一个 frame |
Modified 永远是一个环或一条边框,绝不是填充,因为它和这个 snap 是否有 key 是正交的两件事。在 cursor 上,黄色会取代白色,而不是再加一圈。
同样的三种标记也出现在 Navigator 里,所以 divergence 在你导航时也是可见的,不只是在你 authoring 的时候。在它的 slider 上,环没有地方可去——一个 tick 只是一条 2 像素的线——所以标记变成了一种拆分:tick 的头部变黄,主体保留有 key 的颜色,停在上面的 handle 则带一个黄色的环。
这两个界面回答的是不同的问题,标记的范围也随之不同:
- 在 Editor 的 authoring grid 上——你在这里固定一个 frame——黄色是精确且按页面的:就是这个 snap 的 frame 发生了偏离,在这个页面上。你看到的 grid 是这个 layer 整个堆叠中的一页(一个 head snap × 一个 knob 位置),所以只有当你停在发生偏离的那一页上时,环才会显示。把 head 或 knob 导航到别处,它就消失;回来,它还在。
- 在 Navigator 上——你在这里选择一个位置——黄色会向上汇总:通过这里被寻址的某处发生了偏离。control 的 grid 也钉在 knob 的当前页面上(它下方的 knob 会同时给两者翻页),而 knob 的 tick 仍然是广角取景器:只要一个 tick 的页面在任何 head snap 上存有任何偏离,它就会亮。
两条规则让这些标记保持诚实:
- Navigator 属于选中的 layer。它的黄色显示的是那个 layer 的偏离,与别人无关——点击一个干净的 pose layer,它的 navigator 就是干净的,哪怕同一个 control 下的兄弟 layer 发生了偏离。一个 driver 或 look-at 的页面只标记它自己的值。发生偏离的是发生偏离的那个 layer,不是它的邻居。
- 顺着踪迹往里走。一个 knob tick 亮了 → 导航过去,control grid 会点亮那个 head snap → 点击它,authoring grid 会给出精确的那一格的环。navigator 上的一个黄色标记是一支箭头,不是一个判决。
黄色关注两种数字¶
一个 rig 保存着两种被 authored 的数字,黄色都会关注:
- Frames——一个 pose snap 指向时间轴上的哪一帧。上面的标记描述的就是这个。
- Values——一个 driver 或一个 look-at 在某个 snap 上保存的值。重新打开一个已经 compose 过的 rig,在某个 snap 上拖动某个 driver 的 slider,那个 snap 就会在这个 driver 自己的 navigator 上变黄——它的 pose layer grid、它的 slider 的 tick 头部、它的 knob 卡片——以及寻址到它的那个 control snap 上。look-at 的 key 也是同样的处理。
给同一个值重新打 key 不算一次变化:divergence 比较的是它现在是什么和它原来是什么,而不是你有没有碰过它。把一个 driver 调回它最初的位置,黄色就会消失。
移除同样是一次变化。 删除一个参照里有的 pose——在一个导入或重新打开的 snap 上按 F7——被清空的格子会保留黄色的环(里面有一个小小的灰点),slider 的 tick 会变空但带着黄色的头部,停在那里的光标则是带黄色边框的蓝色。正是这个环把"这是我删掉的"和"导入时这里本来就什么都没有"区分开——一个导入的 MC 完全可以合理地带着空格子,所以单凭空缺本身什么也说明不了。而且因为一次移除和其他任何偏离一样也是一次 divergence,Restore 会把被删除的 pose 找回来。
有两处刻意的空白。Constraints 永远不会标记——一个 constraint 是全局的开关,没有按 snap 存的值,所以没有什么可以偏离。而一个导入的 Harmony MC 没有 driver 或 look-at 的值可以发生变化——那些是只有在 ORC compose 之后才存在的 ORC 概念——所以 value 的黄色只会出现在重新打开的 ORC rig 上。
黄色究竟是为了什么¶
它的一半正是它字面所说的:这已经和我导入时不一样了,让你能把自己的工作和你最初带入的那份 MC 区分开。
另一半是一张安全网,而这一半才是它配得上这个颜色的原因。一个 frame 编号是一件很容易被意外改动的小事——在一个 snap 上误拖了一下,一个打错的数字,一次多填了一行的 fill。事后 rig 看起来没有任何问题:pose 仍然有一个 frame,圆点仍然是绿色的,grid 看起来仍然完工了。没有标记的话,你第一次发现的时刻会是在 compose 之后,在 Harmony 里,眼看着一个 pose 落到了错误的 drawing 上——远在你还记得自己做过这件事之后。
黄色补上了这个缺口。它在"不再处于原位"发生的那一刻就说出"这个已经不在它原来的位置了"——就在这个 snap 上,在这个 layer 的名字里,在你已经在看着的这个 navigator 上。大多数时候,它只是在确认一个你本来就想要的改动。唯一一次它不是,你会在几秒钟内发现,而不是在一次 compose 之后。
每一个黄色都有它的逆操作 — Restore¶
这个标记同时也是回去的路。在任何显示 divergence 的界面上右键,一个 Restore Reference 条目会把基线盖回恰好那个标记所覆盖的范围——同样的范围,一分不多:
- Editor grid——
Restore Reference Frame还原当前页面上被点击的那个 snap;Restore Reference Frames on This Grid还原这一页上每一个发生偏离的 snap。 - Navigator 的 control grid——
Restore Reference Pose Here还原选中的 snap 为选中的 layer 所寻址的一切,在它当前的 knob 页面上:frame,以及对一个 driver 或 look-at 页面来说,它在这个 snap 上发生偏离的值。 - Knob tick——还原选中的 layer 在那个位置上的 key。
一个被重新计时的 key 会拿回它的参照 frame。一个新增的 key——参照里从来没有过的——会被移除,连同捕获的 pose 一起:还原到最初的 pose,意味着这个 key 回到不存在的状态。一个被移除的 key——参照里有、而你删掉了的——会带着它的参照 frame 复活。每一次 restore 都是单独一步撤销,状态栏会汇报数量。
这些条目始终会被列出,当它们无法执行时会灰化并给出原因:没有参照(这个 rig 是从零创作的——没有导入或重新打开的东西可以还原到)或者这里没有任何偏离。这个参照就是 divergence 用来比较的那一个,无论它来自导入的 Harmony MC 还是重新打开的 ORC rig。
它覆盖任何从某个 MC 返回的 rig——不管是你自己的还是 Harmony 的。唯一的空白是一个全新 rig 的第一次会话,它没有更早的版本可以对比,所以什么都不会被标记,也没有什么可以被标记。
这也是为什么这个标记刻意保持安静——一个细环,一个染色的名字——而绝不是一个警告对话框。发生偏离是正常且预期中的事:你打开这个 rig 正是为了改动它。黄色只是汇报,不是反对。
Outliner 的颜色¶
第二列里的 dimension chip 是灰色的。红色是这棵树唯一的颜色状态:
| 颜色 | 含义 |
|---|---|
| 灰色 | 正常。 |
| 红色 | 一个 compose blocker。 |
一行被 block 时会被整体重新着色——名字、chip、两个 glyph 以及 Σ——因为这是唯一会阻止 Compose 的状态:两个 extra knob 在写同一个节点和通道,而它们无法相加。
另外,一个黄色的名字标记一个已经偏离其 MC 导入源的 layer。
Keyed、interpolated、driven¶
在 driver 和 look-at 字段上:
| 颜色 | 状态 |
|---|---|
绿色 #64C878 |
在这个 snap 上有 key |
红色 #DC5050 |
Interpolated——从相邻的 key 混合而来 |
粉色 #E0608C |
被另一个 driver driven |
keyed 的绿色胜过 driven 的粉色,移除这个 key 会显露出底下的粉色。
一个 driven 的 knob 依然可以互动——你可以推动它来预览;compose 会从它的源头覆写它。一个被某个 driver 控制的 constraint 会变粉,并变为只读,但右键点击依然有反应。
slider 和它的数字框都会被着色,绝不只是其中一个。
Target 列表的颜色¶
一个优先级,一次性解析:
| 颜色 | 含义 |
|---|---|
| 红色名字 + 一个红色的 Σ | Conflict——两个作者在同一个节点和通道上,无法合并 |
| 蓝色名字 | Additive——这个 target 叠加在另一个作者之上。末尾的 Σ 标记出正在做叠加的那一个。 |
| 黄色名字 | Modified——自 rig 被导入以来新增的 |
| 红色 + 删除线 | 一个被停用的通道,与 Harmony 自身的外观一致 |
| 变暗的数字 | 一个继承来的权重或 side。实心表示在此处设置。 |
重叠的色调¶
严重程度取决于混合方式,而不只是重叠这个事实本身:
| 色调 | 混合方式 | 含义 |
|---|---|---|
| 蓝色 | Additive | 两者共存——一个是偏移量,零意味着没有变化 |
| 黄色 | Override | 一个悄悄地替换另一个 |
尾随的 glyph¶
画在 dimension chip 之后,第二列的右侧。
| Glyph | 含义 |
|---|---|
| 一个 control 同时拥有 Front 和 Back 两个 face | |
| 一个 layer 有 L/R 的 mirror 配对。两个或以上会加上一个小小的上标计数。 | |
| Σ | 以 additive 方式 compose——它的 key 是增量,不是绝对值 |
mirror 的 glyph 和 Σ 共用同一个位置,而Σ 永远优先。
Pin¶
| Glyph | 状态 |
|---|---|
| 实心的白色图钉 | Pinned |
| 空心、更暗淡 | 未 pin |
只有 control、pose layer 和 knob 有 navigator,所以只有它们能带 pin。
Feedback bar¶
消息以固定的顺序堆叠,所以警告永远不会遮住确认信息:
| 颜色 | 含义 | 典型例子 |
|---|---|---|
| 中性 | 信息 | "Cleared 84 snap(s)" |
| 蓝色 | 一个提议或一个状态 | "Saved session found — Front: robin-head-MC" |
| 绿色 | 成功 | "Compose complete — Top/robin-head-MC" |
| 黄色 | 一个你可以采取行动的拒绝,或一个已激活的确认 | "Click − again within 5s to confirm removal." |
| 红色 | 一个错误 | "Nothing to undo" |
两次点击确认¶
有几个按钮会进入待命状态,而不是立即执行。一个待命中的按钮会变成琥珀色,feedback bar 会说明后果;让计时器耗尽会解除待命。
| 位置 | 保护的对象 |
|---|---|
| 删除一个带数据的节点 | 丢失已 key 的 pose |
| 覆盖一个 preset | 丢失已保存的布局 |
| Compose,当存在警告时 | CONFIRM? |
| Cancel,在 Compose 或 Unroll 期间 | 中途中止写入 |
| 在有 key 的情况下应用一个 grid preset | Replace 9 key(s)? |
| Widget Editor 的 Cancel | 丢弃未应用的编辑 |
| preset 提示框中的 Replace / Add | 丢弃已 authored 的 pose |
只有在真的有东西可能丢失时,确认才会触发。 在一个什么都没打过 key 的 rig 上,删除是立即执行的——一个永远都会触发的确认,只是个减速带,不是安全网。
变灰,而非隐藏¶
当某样东西无法使用时,ORC 会把它变灰,并把出路写进 tooltip,而不是把它移除:
Pick a control first — Globals has no control grid to key across.
Front and Back have different row counts — the side columns can't align to share. Match their rows to enable Share Sides.
Flip Sides — this layer has no L/R pair (solo grids have no sides to flip).
一个被禁用的 Compose 按钮的 tooltip,永远就是它被禁用的原因。 一个被禁用的 Paste、一个变灰的 scope、一个被锁住的 Unroll 也是同样的道理。
如果某样东西看起来不可用,而你说不出原因,把鼠标悬停在它上面。
图标¶
Outliner 的每一行都是一个角色 glyph 加一个类型 glyph。完整的表格在 The Outliner Tree 里,但值得记住的规则是:
内部的线条就是 snap 的停靠点。 一个连续型的 widget 类型,画出来正好就是它离散型的孪生体,少了那些线条。


