Concepts & Vocabulary¶
ORC is built out of about ten words. Learn them once here and every other page in this documentation gets shorter.
The one sentence the whole tool hangs off:
A rig is a set of poses, addressed by position.
Everything below is either a position you can move through, a pose stored at one of those positions, or something that reads a position and does something other than posing.
The pieces¶
Snap¶
A snap is one position — one snap of a grid, one stop of a slider. It has a name that never changes: R0C0 is the top-left snap, R2C4 is row 2, column 4. Rows and columns are zero-based and R0 is the top row.
That name is not decoration. It appears in the grid's own rulers, in the log, inside preset files, and in the composed rig. When something goes wrong, R1C3 is how you say where.
Pose Layer¶
A pose layer is a grid of snaps plus a list of things it is allowed to move. That is the whole definition.
Eyebrows, eyelids, mouth corners, a hand's finger curl — each is a pose layer with its own grid and its own targets.
A layer stores, per snap, one frame number. Not a pose — a frame. See Frames-first below.
Control¶
A control is a turnaround holder. It carries a Front face and, optionally, a Back face — each face being a pose layer — plus a Front ↔ Back toggle in the finished rig.
The point of a control is that other layers key across it. Your eyebrows layer does not have fifteen poses; it has fifteen poses at every one of the head's fifteen poses. The head control is the carrying parent that makes that sentence possible.
Every rig starts with one control called Head. You can rename it, delete it, or add more.
Target¶
A target is one Harmony node a pose layer is allowed to move — a peg, a deformation group, a drawing. Targets are how a layer knows which part of the character it owns.
Two layers can name the same node; ORC will tell you when their writes overlap, and whether the overlap adds up or replaces.
Knob¶
A knob is a pose layer being used as an axis instead of as a pose set.
Point a layer's Knob picker at another layer, and yours now keys across that layer's positions too. A phoneme knob with 13 positions means your mouth layer authors its grid once per phoneme.
A knob is a role, not a type — any pose layer can be one, and it keeps everything it had: its grid, its targets, and its own authored frames. Becoming an axis for someone else does not take any of that away.
Two flavours:
| What it drives | |
|---|---|
| A control's knob | The control's own pose grid — the whole turnaround moves with it. |
| An extra knob | Just the layer that points at it. |
Page, Pair and Side¶
A page is a numbered variant of a layer's grid. A page holds either:
- a pair — two grids,
Left-1andRight-1, or - a solo — one grid,
Solo-1.
Each target carries a Side that says which grid drives it: Left-1, Right-2, Both-3, Solo-1. That is how one layer drives a left eyebrow and a right eyebrow from two grids that mirror each other.
Page numbers are stable ids. Delete page 2 and the remaining pages stay 1 and 3 — the gap is correct, because your snap names still refer to them.
Driver¶
A driver is a widget that writes a value somewhere — a slider, a checkbox, a combo slider or a 2-D pad.
Where a pose layer says "at this position, expose frame 861", a driver says "set this node's OPACITY to 43.7", or "swap this drawing", or "disable this node".
A driver can be global (one value everywhere) or keyed per snap, exactly like a pose. It can also drive another driver, or gate a constraint.
Constraint¶
A constraint links transform channels between nodes: Copy makes targets follow a source peg, Lock freezes them in place. It is a plain on/off, always global, and a checkbox driver can turn it on and off.
Look-At¶
A look-at is a gaze system: a joystick that aims, and up to two independent things that answer to it.
| Mode | Moves | Typical use |
|---|---|---|
| Tracked Pegs | Peg transforms | Irises, pupils — anything that slides across the eye |
| Deform Follow | Deform points | Eyelids, skin, anything that should drag along with the gaze |
The two are fully independent. Use one, the other, or both.
Visibility Group¶
A visibility group decides what an animator can see and reach on the canvas. Groups nest, and each one chooses whether switching a parent off hides just its children's checkboxes (Cascade) or their widgets too (Override).
Hidden is the one permanent group: anything in it is off and unreachable. It is how you park something without deleting it.
Frames-first¶
The single most important thing to understand about ORC.
A pose layer stores a frame number, not a pose.
You pose the character on frame 861 using Harmony's real tools. You press F6. ORC writes down "861". At Compose time, and only then, it reads what the rig actually looks like at 861 and bakes that into the Master Controller.
What follows from this:
- Editing is non-destructive. Go back to 861, fix the eyebrow, re-compose. The change is picked up. Nothing was ever baked into ORC.
- You use your own tools. ORC has no posing canvas, because Harmony already is one.
- A configuration is portable. Since ORC stores positions and frame references rather than deltas, the same setup can be pointed at a different character. That is what makes character presets possible.
How positions stack: dimensions¶
Here is where the power is, and it is simpler than it sounds.
A pose layer keys across:
its own grid + its carrying control + its knob
Each of those contributes its own axes, and they multiply into one address:
| The layer | Axes | Reads |
|---|---|---|
| A global layer with a 3 × 3 grid, no control, no knob | 2 | 2D |
| The same layer inside the Head control | 2 + 2 | 4D |
| …and keyed across a 13-position phoneme knob | 2 + 2 + 1 | 5D |
| …if that knob were a 2-D grid instead | 2 + 2 + 2 | 6D |
Six is the practical ceiling for a pose layer — its own grid, its control, and one knob, each at most two-dimensional. Drivers and look-at fields reach eight, because their own widget adds its dimensions on top of the same stack.
The Outliner tells you the number on every row, and hovering it spells the sum out in words.
Every dimension multiplies the work
A 5 × 3 control with a 3 × 3 layer is 135 poses. Add a 13-position knob and it is 1,755. ORC will warn you as the numbers climb, and it will never stop you — but the poses are yours to author.
Key domains¶
A key domain is the set of positions something is keyed across. Pose layers get theirs from where they sit in the tree. Drivers and look-ats choose theirs explicitly:
| Domain | Meaning |
|---|---|
| Global | One value everywhere. Not keyed at all. |
| Control | One value per control snap. |
| Pose Layer | One value per layer snap — the same at every control pose. |
| Control + Pose Layer | The product of both. |
This is why moving a node in the Outliner changes its behaviour: where it sits is what it keys across.
Interpolation¶
Between the snaps, ORC blends. Drag the handle below and watch the four surrounding snaps take their share — the weights always sum to 1.
Turning Interpolation off makes the nearest snap simply win, with no blending. It is a runtime toggle in the finished rig, so animators can switch between a smooth control and a hard-stepped one.
Widget shapes¶
Four shapes, on two axes: how many dimensions, and whether the handle stops.
| Discrete (it stops) | Continuous (it doesn't) | |
|---|---|---|
| 1-D | Combo Slider | Continuous Slider |
| 2-D | Combo Grid | Continuous Grid |
Plus Checkbox, which is two states and nothing in between.
The icon is the definition
The interior lines are the snap stops. A continuous type is drawn as exactly its discrete twin, minus the lines.
Poses are always discrete — a pose layer is a set of poses. Driver pads are always continuous — a discrete 2-D thing would just be a pose layer.
How it all fits together¶
Rig
├── Head ← a Control: Front + Back faces
│ ├── Look-At ← anchored on this control
│ ├── Head Knob ← a Knob: the control's own axis
│ │ └── Mouth Corners ← a Pose Layer keying across the knob
│ ├── Eyebrows ← a Pose Layer keying across the control
│ └── Eyelids
├── Exagerate Exp ← a Driver
└── Constraint 1 ← always global
Visibility Groups
├── All
│ ├── Head
│ ├── Eyebrows
│ └── Controls
└── Hidden ← the permanent sink
Read that tree as sentences:
- Mouth Corners keys across the Head Knob, which keys across Head — so it is 5D or 6D.
- Eyebrows keys across Head directly — 4D.
- Constraint 1 is global; it has no position at all.
- Everything visible belongs to a visibility group.
Where to go next¶
| Build one end to end | Quick Start |
| Learn the window | Interface Overview |
| Go deeper on the tree | The Outliner |
| Go deeper on dimensions | Dimensions & Key Domains |