Skip to content

Constraints

Video tutorial — coming soon

A constraint links transform channels between nodes, and can be switched on and off.

Two kinds, and that is the whole vocabulary:

Type What it does
Copy The targets follow a source peg on the channels you pick
Lock The targets are frozen in place on those channels

Add one with + → Constraint. It goes straight into its editor.

Constraint editor

How it actually works

ORC does not write expressions. It uses Harmony's own column sharing: switching a constraint on links the target's attribute to the source's column, so moving either side moves both — natively, with no evaluation cost and no expression to debug.

Switching it off unlinks them, and the targets become statically editable again.

Turning it off preserves what you did while it was off

ORC remembers the column each target had at the last time the constraint was on, and restores that first. Failing that, it falls back to the column it found at Compose. Keys you made in between are kept.

Setup

Targets

The nodes the constraint acts on. Add them from the Node View with +.

Only plain Harmony nodes here — a constraint has no internal targets.

Behaviour

Field What it does
Label The name the animator sees.
Type Copy or Lock.
Source The peg to follow. Copy only.
Position / Rotation / Scale Three toggle buttons each — X, Y, Z.
Skew One toggle.
Visibility Group Where the on/off checkbox lives.

Picking a source with + reads it from your Harmony selection and auto-checks the channels it finds animated — a convenience, not a lock; you can still toggle any of them.

Under Lock the whole Source row is disabled:

Lock freezes the targets' own channels in place — there is no source node to read from. Switch Type to Copy to follow a source peg.

Channels

The ten channels are POSITION.X/Y/Z, ROTATION.ANGLEX/Y/Z, SCALE.X/Y/Z and SKEW. A checked channel is filled blue.

A constraint needs at least one channel

Turning off the last one is refused — the button flashes amber and the feedback bar says:

A constraint needs at least one channel — turn another on before clearing this one.

Without it, the constraint would compose into a silent no-op.

Values

A single Enabled / Disabled checkbox. That is the entire runtime interface.

The state at Compose is the state the composed rig is born with, and a re-compose re-stamps it.

Gating with a driver

A constraint has no scope and no per-snap keys — it is global. To make it change during a shot, hand it to a checkbox driver.

Right-click the Enabled checkbox:

Item Effect
Add Driver ▸ Lists every checkbox driver in the rig
+ New Driver… Creates one and gates on it
Remove gate (Direct) Back to a plain manual toggle

Once gated, the checkbox turns pink and becomes read-only — you drive it through the driver now. Right-clicking still works, so you can change or remove the gate.

The tooltip tells you which one owns it:

Driven by "Arm IK" — toggle it via that driver, or right-click here to change the gate.

If that driver later stops being a checkbox, the gate is kept and marked rather than silently dropped:

Driven by "Arm IK" — but that driver is no longer a Checkbox, so it cannot turn this on/off. Set it back to Checkbox, or right-click here to remove the gate.

Setting it back to Checkbox restores the gate. A gate on a deleted driver falls back to no gate.

Where constraints live

Constraints are global-only. In the Outliner they are always direct children of Rig, they show in the Dimensions column, and they cannot be dragged elsewhere. There is no scope to choose because there is no per-snap value to key.

Muting

Right-click in the Outliner → Mute: "Skip this constraint at compose without deleting it (dimmed in the outliner)." The row dims and Compose ignores it.

Deform chains

If a target is a drawing or a peg inside a deformation chain, ORC resolves it up to the chain's group for you — you do not have to hunt for the right node in the Node View.