Dimensions et Key Domains¶
C'est l'idée sur laquelle tout l'outil est construit, et ça tient sur une page.
Une pose est stockée à une adresse. Une dimension est un composant de cette adresse.
Comment s'additionnent les dimensions d'une layer¶
Une pose layer keye à travers trois choses :
sa propre grid + son control porteur + son knob
Chacune apporte ses propres axes, et ils composent une adresse unique :
| La layer | Somme | Chip |
|---|---|---|
| Une grid 3 × 3, globale, sans knob | 2 | 2D |
| La même layer à l'intérieur du control Head | 2 + 2 | 4D |
| …keyée à travers un knob de phonème à 13 positions | 2 + 2 + 1 | 5D |
| …si ce knob était une grid 3 × 3 à la place | 2 + 2 + 2 | 6D |
Six est le plafond pour une pose layer — sa propre grid (2 au maximum), son control (2 au maximum), et un knob (2 au maximum) — et quatre quand la chaîne est entièrement globale : sans control en jeu il n'y a pas de grid porteuse, et une layer globale plafonne à ses propres 2 plus un knob 2D. ORC fait respecter ce budget partout où un axe peut s'attacher — le sélecteur de Knob masque les candidats hors budget, un glisser refuse avec la raison, et Make Global refuse quand le résultat dépasserait 4D. Une layer ne prend qu'un seul knob, ce qui plafonne la chaîne.
L'Outliner affiche le nombre sur chaque ligne, et le survoler en détaille la somme :
5D — total des axes que cette layer keye (sa propre grid + son parent porteur + chaque extra knob).
Deux cas ne contribuent rien :
- La face d'un control — elle est la grid du control, donc elle ne keye pas aussi à travers elle.
- Une layer globale — il n'y a rien au-dessus d'elle. Un slider global affiche
1D.
Les drivers et les look-ats atteignent huit¶
Un driver ou un champ de look-at ajoute les dimensions de son propre widget par-dessus la même pile :
le widget lui-même (0–2) + le control (0–2) + la pose layer (0–2) + son knob (0–2)
Un pad driver 2D keyé à travers un control et une pose layer et le knob 2D de cette layer fait 8D. Rien ne vous en empêche ; rien ne vous prévient non plus.
| Widget | Ses propres dimensions |
|---|---|
| Checkbox | 0 |
| Slider, Combo Slider | 1 |
| Pad 2D (Continuous Grid) | 2 |
| Le joystick de look-at | 2 |
Key domains¶
Un key domain est l'ensemble des positions à travers lesquelles quelque chose est keyé.
Les pose layers tiennent le leur de leur place dans l'arbre — c'est pour ça que déplacer une layer change son comportement. Les drivers et les look-ats choisissent le leur explicitement, avec les quatre mêmes options et les mêmes mots :
| Domaine | Une valeur par… | À utiliser quand |
|---|---|---|
| Global | Tout. Ce n'est pas keyé du tout. | La valeur ne dépend jamais de la pose. |
| Control | Snap du control | Elle change avec le turnaround — perspective, raccourci. |
| Pose Layer | Snap de la pose layer, la même à chaque pose du control | Elle appartient à l'expression, pas à l'angle. |
| Control + Pose Layer | Le produit des deux | Elle varie réellement avec les deux. |
Pose Layer est le seul domaine qu'une layer globale peut utiliser
Une layer rattachée à Globals n'a pas de dimension de control, donc Control et Control + Pose Layer n'ont rien contre quoi keyer. ORC grise ces options et le dit.
Les deux modes du look-at choisissent chacun leur propre domaine, parmi les quatre mêmes — voir Look-At.
Quand un domaine n'est pas disponible¶
ORC ne cache jamais une option qu'il ne peut pas offrir. Il la grise et met la marche à suivre dans l'infobulle :
| Grisé | Parce que |
|---|---|
Control, Control + Pose Layer |
"Pick a control first — Globals has no control grid to key across." |
Pose Layer |
"No pose layer to key across for this owner." |
Control + Pose Layer |
"No pose layer under this control — a Globals layer is not under it, so it cannot form the product. Pick the control that owns the layer, or key across the layer alone." |
| Tout sauf Global, sur un checkbox driver | "Checkbox drivers are Global only — pick another widget type to scope to a Control / Pose Layer." |
Si un domaine devient temporairement indisponible — vous n'avez pas encore choisi le control — ORC se souvient de votre choix et le restaure dès que la dimension existe de nouveau, plutôt que de vous rétrograder silencieusement vers Global.
Adresses de snap¶
Chaque snap a un nom, et il est construit à partir des domaines ci-dessus, de gauche à droite : la position du control, puis celle de la layer, puis celle du knob.
Vous les verrez dans le log, dans les aperçus de presets, et dans la table Unroll :
Un segment par dimension, de gauche à droite — le snap du control, puis celui de la layer :
| Adresse | Se lit comme |
|---|---|
R5C10 |
Une face de control à la ligne 5, colonne 10 |
UR0C4:P1LR1C2:P1RR2C0 |
Snap de control R0C4 · grid gauche de la page 1 en R1C2 · sa grid droite en R2C0 |
UR1C2:P2LR0C1 |
Snap de control R1C2 · grid gauche de la page 2 |
UBR1C2:P1LR0C0 |
Snap de control R1C2 sur la face back · grid gauche de la page 1 en R0C0 |
G:P1LR1C2 |
Une layer globale — aucun composant de control du tout |
UR1C2:K1R0C3 |
La pose propre d'un knob — le control porteur en R1C2, le knob en R0C3 |
UR0C4:P1LR1C2:W3 |
La pose de la page 1, à la position 3 du knob de la layer |
Les préfixes :
U |
Le snap du control porteur (son unit) — quel que soit le nom de ce control. Un control Torso keye avec U aussi. UB est sa face back. |
G |
Aucun control du tout — une layer globale, keyée sans tête. |
P1L / P1R, P2L… |
Les grids gauche et droite de la page 1, celles de la page 2, et ainsi de suite — un schéma numéroté pour chaque page. |
K1 |
Un knob qui autore ses propres poses — K plus son emplacement d'axe, puis son snap. |
:W3 |
Position 3 du knob de la layer. |
Le nom du control n'apparaît jamais dans une adresse — chaque layer appartient à exactement un control, donc U signifie toujours « mon control porteur », sans qu'un numéro soit nécessaire.
Pourquoi la lettre est U et pas C
U correspond à l'unit du control — le nom interne d'ORC pour un control. La lettre évidente serait C pour control, mais C est déjà prise : c'est la lettre de colonne à l'intérieur de chaque snap. CR0C4 mettrait deux significations différentes de C à cinq caractères d'écart, et une adresse existe pour être lue d'un coup d'œil — donc le control keye avec U.
Pourquoi le :W d'un knob 2D est un nombre plat
Un knob 2D adresse sa position comme un index unique — :W7 sur un knob 3 × 3 veut dire ligne 2, colonne 1 (ligne × colonnes + colonne) — plutôt qu'un snap R2C1. C'est délibéré : le rig composé stocke chaque position de knob comme un fichier d'état empilé dans la propre disposition de Toon Boom (stack/0.tbState, 1.tbState, …), et l'index plat est le nom de ce fichier. L'adresse reste alignée avec ce qu'elle désigne.
Vous n'avez jamais à taper une adresse. Mais quand un message, un aperçu de preset ou la table Unroll en nomme une, voici comment la lire.
Interpolation¶
Entre les snaps, ORC mélange. Avec Interpolation activée, la pose est le mélange pondéré des quatre snaps environnants, les poids sommant toujours à 1. Désactivez-la et le snap le plus proche l'emporte simplement.
C'est une bascule au runtime dans le rig fini, donc l'animateur choisit entre un control lisse et un control à paliers durs. Un snap non keyé n'est pas un trou — c'est une position qui se mélange depuis ses voisins.
C'est aussi la seule bascule globale. Chaque autre bascule intégrée existe pour la chose sur laquelle elle agit, et seulement quand cette chose existe : Mirror a besoin d'une pose layer appairée, Mirror All a besoin de plus d'une paire, et Front ↔ Back a besoin d'un control avec les deux faces — chaque control à deux faces composant son propre retournement. La question de l'interpolation — mélanger entre les snaps, ou passer par paliers ? — est posée une fois, pour tout le rig ; une case à cocher d'interpolation par layer ou par control multiplierait les widgets sans ajouter la moindre décision. Donc une seule case gouverne tout, et elle ne reste chez elle que sur un rig qui n'a rien de continu à mélanger — tout en drivers on/off, sans grid.
Ce que coûtent les dimensions¶
Chaque axe multiplie les poses disponibles, le temps que prend Compose, et la mémoire qu'il utilise.
| Rig | Poses adressables |
|---|---|
| Une layer 3 × 3, globale | 9 |
| …à l'intérieur d'un control 5 × 3 | 135 |
| …plus un knob à 13 positions | 1 755 |
| …plus une face Front et Back | 3 510 |
Vous n'êtes jamais obligé de toutes les keyer. Mais une dimension que vous ajoutez est un travail d'authoring que vous vous engagez à faire, et ORC vous le dira à mesure que les comptes grimpent :
1024 snaps — authoring this by hand is a big job, and capture/compose time grows with every keyed snap.
Il prévient. Il ne bloque pas.
La seule chose qui bloque vraiment Compose¶
La dimensionnalité en elle-même n'arrête jamais un compose. Exactement un conflit structurel le fait :
Deux extra knobs qui écrivent le même nœud et le même canal ne peuvent pas s'additionner. Quand ça arrive, la ligne fautive de l'Outliner s'allume en rouge — nom, chip et icônes — et Compose refuse tant que vous ne réglez pas le problème.
Tout le reste n'est qu'un avertissement.