Compose¶
Compose transforme tout ce que vous avez créé — pose layers et leurs keys, controls, knobs, drivers, constraints, visibility groups, look-ats — en un vrai node Master Controller dans votre scène Harmony, plus les fichiers dont ce node a besoin.
C'est la seule chose dans ORC qui écrit dans votre scène.
Le nom du MC¶
Tapez un nom dans MC Name. Vous n'avez pas besoin du suffixe :
| Vous appuyez sur | ORC fait |
|---|---|
| Enter, ou cliquez ailleurs | Ajoute -MC si ce n'est pas déjà là. Head → Head-MC. |
| Enter à nouveau | Clique sur Compose. |
Le contrôle ignore la casse, donc un nom tapé head-mc est laissé exactement tel quel.
Il n'y a pas d'autre validation — pas de nettoyage de caractères, pas de contrôle d'unicité. Harmony décide du nom final du node, donc un nom en collision peut revenir modifié, et ORC rapporte le nom réellement obtenu.
Pourquoi Compose est désactivé¶
Le tooltip est toujours la raison, et toujours quelque chose sur quoi agir :
| Tooltip | Solution |
|---|---|
| Enter a name for the Master Controller first. | Tapez un nom. |
| The "Eyebrows" pose layer has no keys yet. Stamp a snap with F6 or delete the empty layer. | Keyez-la, ou supprimez-la. |
| 3 layers are keyed but have no targets (…). Add what each one should move to its target list. | Donnez-leur des targets. Un widget qui ne bouge rien n'est pas livrable. |
| Nothing to compose yet. Add poses, drivers, constraints, or look-ats — or set both Front and Back MC to bake a merged runtime. | Il n'y a rien dans le rig. |
Compose est activé quand le nom est rempli, qu'aucune layer n'est à moitié finie, et qu'au moins une de ces conditions est vraie :
- au moins une pose key quelque part,
- un Front et un Back MC sont tous les deux définis (vous les fusionnez),
- zéro pose layer mais au moins un driver, une constraint ou un look-at activé — un rig qui n'est que de l'automation compose sans problème.
Les layers qui n'ont jamais besoin de keys — les faces d'un control, un knob, une grid importée — sont exemptées.
Deux choses qui l'arrêtent¶
Blockers — refusés d'office¶
| Conflit | Pourquoi ça ne peut pas marcher |
|---|---|
| Knob conflict | Deux ou plusieurs extra knobs qui écrivent le même node et le même channel. Le runtime capture une base intacte par node et attribut, donc ces écritures ne peuvent pas s'additionner — la dernière gagnerait en silence. |
| Drawing conflict | Un node READ échangé par deux ou plusieurs layers sibling. Un drawing swap est discret, donc il ne peut pas se blender, et rien ne classe les siblings entre eux. |
Vous obtenez une ligne rouge nommant le conflit, et Compose ne démarre pas. La ligne fautive dans l'Outliner est elle aussi allumée en rouge.
Un drawing swap partagé le long d'une hiérarchie est acceptable — c'est voulu que la layer la plus profonde l'emporte.
Warnings — confirmer et continuer¶
Si quelque chose est simplement suspect, le bouton devient CONFIRM? pendant cinq secondes, avec la liste à côté. Laissez le délai s'écouler et il revient à Compose.
No pose data loadedNo Front or Back face: import an MC or author one— seulement quand il n'y a ni l'un ni l'autre. Front seul est normal.Driver 'Blink' (Eyelids) has no keyed valuesConstraint 'Arm Follow' has no target nodesConstraint 'Arm Follow' has no channels selected
Compose Settings¶
| Réglage | Ce qu'il décide |
|---|---|
Save states / script to |
Où sont écrits les fichiers .tbState, le script runtime et les fichiers de données d'ORC. Par défaut, le dossier scripts de votre scène. |
Connect MC to composite |
Quel Composite le nouveau MC rejoint. ORC présélectionne sa meilleure estimation ; la liste complète des composites de la scène est toujours disponible. |
Comment l'estimation est faite
Le choix est dérivé du rig lui-même, pas de l'ordre de la liste.
D'abord ORC trouve le groupe principal du rig : chaque node de la target list vote pour tous ses groupes ancêtres, et le groupe le plus profond détenant une majorité des targets l'emporte. La profondeur est ce qui empêche un groupe de déformation de rafler le vote — il ne contient jamais que sa poignée de membres propres, donc la majorité tombe toujours sur le groupe du personnage à l'extérieur.
Dans ce groupe, le premier match l'emporte :
- Un composite qu'un MC existant alimente déjà — le plus de liens MC d'abord. S'il est à l'intérieur du groupe principal, il l'emporte d'office.
- Un composite dont le nom suit les conventions de master controller —
master-controller,masters,controllers,ctrl,-MC… - Le composite principal du groupe — celui qui alimente son Multi-Port-Out.
- Aucun composite dans le groupe → celui que le node de groupe lui-même alimente à l'extérieur.
Rien ne correspond → le premier composite de la scène. Quel que soit le choix, ce n'est qu'une présélection — le combo liste toujours tous les composites de la scène.
Gardez le même dossier de sortie entre les composes
Le cache incrémental y vit. Réutiliser le dossier est ce qui rend un re-compose rapide.
Si aucun composite n'est choisi, le MC est créé dans Top et laissé non lié. Sinon il est créé dans le groupe parent de ce composite et placé juste au-dessus dans le Node View, pour que vous puissiez le retrouver.
Ce qui se passe¶
Quatre phases, toutes rapportées en direct :
| Phase | Ce qu'elle produit |
|---|---|
Slicing state files… |
Les stacks de poses .tbState, une par layer/side/page, plus le manifeste. La ligne de détail nomme exactement où on en est : « Layer 'Eyebrows-L' — Pose 3 of 25 · Knob 2 of 13 ». |
Constraint pre-wiring… |
Enregistre les colonnes d'origine de chaque constraint pour que son toggle puisse les restaurer. |
Generating MC script… |
Le script runtime que le MC exécutera. |
Assembling MC node in Harmony… |
Le node lui-même, ses attributs, son script d'UI et ses données, et les blobs propres d'ORC. |
Le journal Recent activity en dessous garde un enregistrement horodaté, warnings compris.
Un seul Ctrl+Z annule un Compose
Tout l'assemblage tourne dans une seule étape d'undo Harmony nommée ORC Compose.
La phase de slicing écrit bien des colonnes — c'est comme ça qu'elle lit vos poses — mais ces écritures sont transitoires, jetées, et votre pose est restaurée ensuite, que Compose réussisse, échoue ou soit annulé.
Annuler¶
Cancel est une confirmation en deux clics : le premier clic l'arme pour quatre secondes (CONFIRM? (4s)), le second annule. Le ✕ de la fenêtre se comporte pareil — un Compose en cours ne se ferme jamais tout simplement. Enter ne déclenche jamais Cancel, pour qu'une frappe réflexe ne puisse pas interrompre un MC à moitié construit.
L'annulation est coopérative : elle s'arrête à la prochaine limite sûre, jamais en plein appel, donc vous verrez « Will stop after the current Harmony call returns… ».
Ce qu'une annulation laisse derrière elle :
- Annuler pendant le slicing : les fichiers
.tbStatedéjà écrits restent, et le cache est sauvegardé pour que le travail compte pour le prochain run. Aucun node MC n'est créé. - Annuler après le début de l'assemblage : le node existe. Il n'y a pas de transaction sur tout le compose — Ctrl+Z sur l'étape
ORC Composeest le chemin retour. - Dans les deux cas, votre pose est restaurée.
Comment ça se termine¶
| Résultat | Ce que ça signifie |
|---|---|
| Compose complete — Top/robin-head-MC | 12 state stack(s), 2 constraint(s) | Terminé. Le Node View se déplace vers le nouveau node et le sélectionne. |
| Compose finished with 3 warning(s) — see the log | Le MC existe et fonctionne, mais une étape non fatale a eu un problème. Lisez le journal. |
| Compose failed — no state files produced | Rien n'était découpable. |
| Compose failed — script generation error | |
| Compose failed — MC assembly error: … |
Ce qui atterrit sur disque¶
Dans le dossier de sortie que vous avez choisi :
| Fichier | Ce que c'est |
|---|---|
<Stack>.tbState, ou <Stack>/0.tbState, 1.tbState… |
Les stacks de poses. Une layer avec un knob obtient un dossier, un fichier par position de knob — la mise en page native de Toon Boom. |
<folder>_compose_state.json |
Le manifeste runtime. |
<name>_orc.js |
Le script runtime généré. |
orc_pose_data.json |
Toute la configuration de votre rig — la source pour le re-edit et pour le Widget Editor autonome. |
orc_session_state.json |
L'état de l'UI d'authoring, pour que la réouverture restaure votre espace de travail. |
.orc_cache/snaps.json |
Le cache de compose incrémental. Ne fait pas partie du rig ; peut être supprimé sans risque. |
Les noms de stacks sont dérivés des noms de vos layers — Eyebrows et Eyebrow deviennent tous les deux Eyebrow, les sides ajoutent L/R, les stacks de back ajoutent Back, les pages ajoutent leur numéro.
Ce qui atterrit sur le node¶
Au-delà du script runtime et de ses données, ORC écrit trois de ses propres blobs sur le node MC : vos données de pose, votre état de session et le manifeste. Ils sont intégrés inline seulement quand chacun est assez petit ; tout ce qui est plus volumineux reste sur disque, parce qu'intégrer des mégaoctets de texte dans un attribut Harmony fait planter son moteur de script à la lecture.
Un petit attribut pointeur enregistre le chemin relatif à la scène du dossier de sortie, ce qui permet au re-edit et à unroll de retrouver le reste.
Gardez le dossier de sortie avec la scène
Le MC lit ses fichiers d'état depuis le disque au runtime. Déplacez la scène sans eux et le rig n'a plus de poses à charger. Le chemin est stocké relatif à la scène, donc déplacer la paire ensemble est sans danger.
Re-composer¶
Composer à nouveau sur le même rig est normal et attendu — c'est comme ça qu'on itère.
Parce qu'ORC stocke des références de frame plutôt que des poses figées, vous pouvez retourner à la frame 861, corriger le sourcil, et re-composer : le changement est pris en compte. Rien n'a besoin d'être re-keyé.
Le cache incrémental fait qu'un re-compose ne re-découpe que ce qui a réellement changé, ce qui explique pourquoi garder le même dossier de sortie compte.
Voir aussi¶
- Keying & Auto-Capture — ce que Compose lit
- Re-editing a Composed MC — revenir dedans
- Unroll — faire le chemin inverse
- Troubleshooting

