Saltar a contenido

Compose

Video tutorial — próximamente

Compose convierte todo lo que has autorado — pose layers y sus keys, controls, knobs, drivers, constraints, visibility groups, look-ats — en un Master Controller node real dentro de tu escena de Harmony, más los archivos que ese nodo necesita.

Es lo único en ORC que escribe en tu escena.

El nombre de la MC

Escribe un nombre en MC Name. No necesitas el sufijo:

Tú pulsas ORC hace
Enter, o clic fuera Añade -MC si aún no lo tiene. HeadHead-MC.
Enter otra vez Hace clic en Compose.

La comprobación no distingue mayúsculas, así que un nombre que escribiste como head-mc se deja exactamente como lo escribiste.

No hay ninguna otra validación — sin recorte de caracteres, sin comprobación de unicidad. Harmony decide el nombre final del nodo, así que un nombre en colisión puede volver cambiado, y ORC reporta el nombre que realmente obtuvo.

Por qué Compose está deshabilitado

El tooltip es siempre la razón, y siempre algo sobre lo que puedes actuar:

Tooltip Solución
Enter a name for the Master Controller first. Escribe un nombre.
The "Eyebrows" pose layer has no keys yet. Stamp a snap with F6 or delete the empty layer. Keyéala, o elimina la layer.
3 layers are keyed but have no targets (…). Add what each one should move to its target list. Dales targets. Un widget que no mueve nada no es exportable.
Nothing to compose yet. Add poses, drivers, constraints, or look-ats — or set both Front and Back MC to bake a merged runtime. No hay nada en el rig.

Compose se habilita cuando el nombre está lleno, ninguna layer está a medio terminar, y se cumple al menos una de estas:

  • al menos una pose key en algún sitio,
  • tanto una Front como una Back MC están definidas (las estás fusionando),
  • cero pose layers pero al menos un driver, constraint o look-at habilitado — un rig que es solo automatización compone sin problema.

Las layers que nunca necesitan keys — las faces de un control, un knob, una grid importada — están exentas.

Dos cosas que lo detienen

Blockers — rechazados sin más

Conflicto Por qué no puede funcionar
Conflicto de knob Dos o más extra knobs escribiendo el mismo nodo y canal. El runtime captura una base intacta por nodo y atributo, así que esas escrituras no pueden sumarse — la última ganaría en silencio.
Conflicto de drawing Un nodo READ cambiado por dos o más layers hermanas. Un cambio de drawing es discreto, así que no puede mezclarse, y nada ordena a las hermanas por prioridad.

Te sale una línea roja nombrando el conflicto, y Compose no arranca. La fila del Outliner en cuestión también se ilumina en rojo.

Un cambio de drawing compartido a lo largo de una jerarquía está bien — que gane la layer más profunda es intencional.

Warnings — confirma y continúa

Si algo es solo sospechoso, el botón se convierte en CONFIRM? durante cinco segundos con la lista al lado. Déjalo agotarse y vuelve a Compose.

  • No pose data loaded
  • No Front or Back face: import an MC or author one — solo cuando no hay ninguna. Solo Front es normal.
  • Driver 'Blink' (Eyelids) has no keyed values
  • Constraint 'Arm Follow' has no target nodes
  • Constraint 'Arm Follow' has no channels selected

Compose Settings

Compose Settings

Ajuste Qué decide
Save states / script to Dónde se escriben los archivos .tbState, el script de runtime y los archivos de datos de ORC. Por defecto, la carpeta scripts de tu escena.
Connect MC to composite A qué Composite se enlaza la nueva MC. ORC preselecciona su mejor conjetura; la lista completa de composites de la escena siempre está disponible.
Cómo se hace la conjetura

La elección se deriva del propio rig, no del orden de la lista.

Primero ORC encuentra el grupo principal del rig: cada nodo de la target list vota por todos sus grupos ancestros, y gana el grupo más profundo que tenga la mayoría de los targets. La profundidad es lo que evita que un grupo de deformación se lleve el voto — solo contiene su propio puñado de miembros, así que la mayoría siempre recae en el grupo del personaje que lo envuelve.

Dentro de ese grupo, gana la primera coincidencia:

  1. Un composite al que ya alimenta una MC existente — gana el que tenga más enlaces de MC. Si uno está dentro del grupo principal, gana directamente.
  2. Un composite cuyo nombre sigue las convenciones de master controller — master-controller, masters, controllers, ctrl, -MC
  3. El composite principal del grupo — el que alimenta su Multi-Port-Out.
  4. Ningún composite dentro del grupo → el que alimenta el propio nodo de grupo hacia afuera.

Nada coincidió → el primer composite de la escena. Sea cual sea la elección, es solo una preselección — el combo siempre lista todos los composites de la escena.

Mantén la misma carpeta de salida entre composes

La caché incremental vive ahí. Reutilizar la carpeta es lo que hace rápido un re-compose.

Si no se elige ningún composite, la MC se crea en Top y queda sin enlazar. En caso contrario, se crea en el grupo padre de ese composite y se coloca justo encima de él en el Node View para que la encuentres.

Qué pasa

Composing

Cuatro fases, todas reportadas en vivo:

Fase Qué produce
Slicing state files… Las pilas de pose .tbState, una por layer/side/page, más el manifiesto. La línea de detalle indica exactamente dónde está: "Layer 'Eyebrows-L' — Pose 3 of 25 · Knob 2 of 13".
Constraint pre-wiring… Registra las columnas originales de cada constraint para que su toggle pueda restaurarlas.
Generating MC script… El script de runtime que ejecutará la MC.
Assembling MC node in Harmony… El nodo en sí, sus atributos, su script de UI y sus datos, y los propios blobs de ORC.

El log de Recent activity debajo mantiene un registro con marca de tiempo, incluyendo cualquier warning.

Un Ctrl+Z deshace un Compose

Todo el ensamblaje se ejecuta dentro de un único paso de undo de Harmony llamado ORC Compose.

La fase de slicing sí escribe columnas — así es como lee tus poses — pero esas escrituras son transitorias, se descartan, y tu pose queda restaurada después, tanto si Compose tiene éxito, falla o se cancela.

Cancelar

Cancel es una confirmación de dos clics: el primer clic la arma durante cuatro segundos (CONFIRM? (4s)), el segundo cancela. La de la ventana se comporta igual — un Compose en marcha nunca se cierra sin más. Enter nunca dispara Cancel, así que una pulsación reflexiva no puede abortar una MC a medio construir.

La cancelación es cooperativa: se detiene en el siguiente punto seguro, nunca a mitad de una llamada, así que verás "Will stop after the current Harmony call returns…".

Lo que deja una cancelación:

  • Cancelar durante el slicing: los archivos .tbState ya escritos se quedan, y la caché se guarda para que el trabajo cuente en la siguiente ejecución. No se crea ningún nodo de MC.
  • Cancelar tras empezar el ensamblaje: el nodo existe. No hay una transacción sobre todo el compose — Ctrl+Z sobre el paso ORC Compose es la forma de volver atrás.
  • En cualquier caso, tu pose queda restaurada.

Cómo termina

Resultado Qué significa
Compose complete — Top/robin-head-MC | 12 state stack(s), 2 constraint(s) Hecho. El Node View se desplaza hasta el nuevo nodo y lo selecciona.
Compose finished with 3 warning(s) — see the log La MC existe y funciona, pero un paso no fatal tuvo un problema. Lee el log.
Compose failed — no state files produced Nada era divisible en slices.
Compose failed — script generation error
Compose failed — MC assembly error: …

Qué queda en disco

En la carpeta de salida que elegiste:

Archivo Qué es
<Stack>.tbState, o <Stack>/0.tbState, 1.tbState Las pilas de pose. Una layer con un knob obtiene una carpeta, un archivo por posición de knob — el propio formato nativo de Toon Boom.
<folder>_compose_state.json El manifiesto de runtime.
<name>_orc.js El script de runtime generado.
orc_pose_data.json Toda la configuración de tu rig — la fuente para la re-edición y para el Widget Editor independiente.
orc_session_state.json El estado de la UI de autoría, para que reabrir restaure tu espacio de trabajo.
.orc_cache/snaps.json La caché de compose incremental. No forma parte del rig; se puede borrar sin problema.

Los nombres de las pilas se derivan de los nombres de tus layers — Eyebrows y Eyebrow se convierten ambas en Eyebrow, los sides añaden L/R, las pilas de back añaden Back, las pages añaden su número.

Qué queda en el nodo

Además del script de runtime y sus datos, ORC escribe tres de sus propios blobs en el nodo de la MC: tus datos de pose, tu estado de sesión y el manifiesto. Se incrustan en línea solo cuando cada uno es lo bastante pequeño; cualquiera que sea más grande se queda en disco, porque incrustar megabytes de texto en un atributo de Harmony hace que su motor de scripts se caiga al leerlo.

Un pequeño atributo puntero registra la ruta relativa a la escena de la carpeta de salida, que es cómo la reedición y el unroll encuentran el resto.

Mantén la carpeta de salida junto con la escena

La MC lee sus archivos de estado desde disco en runtime. Mueve la escena sin ellos y el rig no tiene poses que cargar. La ruta se guarda relativa a la escena, así que mover el par junto es seguro.

Recomponer

Volver a componer sobre el mismo rig es normal y esperado — así es como iteras.

Como ORC guarda referencias de frame en vez de poses horneadas, puedes volver al frame 861, corregir la ceja, y recomponer: el cambio se recoge. No hace falta volver a keyear nada.

La caché incremental hace que un re-compose solo vuelva a hacer slicing de lo que de verdad cambió, y por eso importa mantener la misma carpeta de salida.

Relacionados