En Harmony¶
Harmony es donde OTS habla su lengua materna. El espacio canónico del formato de intercambio es la convención OGL de Harmony — Y-up, right-handed, metros — así que nada se swizzlea ni a la entrada ni a la salida. Todas las demás aplicaciones convierten hacia lo que Harmony ya usa.
Lanzamiento¶
Ejecuta el script OctoTransformSync desde la barra de Scripts. La ventana se abre encima de Harmony y se queda ahí; ejecutar el script de nuevo mientras está abierta simplemente la trae al frente.
El vocabulario de la ventana es el de Harmony: las listas dicen PEG y PEGs, y el botón de importación dice Apply to PEGs.
Las cuatro páginas¶
Dos formatos arriba, dos direcciones debajo — todas las páginas a las que puedes llegar en Harmony:
Un skeleton en rest a punto de construirse. Build Skeleton crea los pegs; Create Cameras se enciende porque este archivo trae una.
Los pegs que escaneaste, con la columna Rig y la opción Scale. Sin rango de frames — un .pvt no tiene animación.
El árbol de coincidencias, con un checkbox por fila y las tres acciones: Apply to PEGs, Create Rig, Create Cameras.
La misma lista que la exportación .pvt — una escena, una agrupación — más Start / End y Scene range.
Qué lee OTS de un peg¶
Para cada peg exportado, OTS registra:
- Su path en el node graph, y su ancestro exportado más cercano como su padre.
- Su pivot, en metros canónicos.
- Su transformación, evaluada por frame keyeado como world matrix y hecha relativa a ese ancestro.
- Sus modos de autoría — posición separada, rotación quaternion-path, escala separada, 3D habilitado — registrados como una pista.
- Si un node CAMERA cuelga de él, la configuración de cámara.
Los keyframes se recolectan desde los control points reales del peg, más el primer y el último frame del rango de exportación. Los handles bezier se leen nativamente donde el tipo de columna lo permite, y se reconstruyen muestreando la curva donde no.
La escala field ↔ OGL¶
Harmony trabaja en fields, no en metros, y la conversión entre ellos no es una constante — depende de la resolución de la escena, el field of view y el aspect ratio. OTS se la pide a la escena viva al momento de exportar e importar en vez de hardcodear un número, y por eso el adaptador de Harmony necesita una escena abierta para hacer su trabajo.
Los clip planes de la cámara de Harmony también están en fields. Sus valores field originales se preservan en el archivo junto a las distancias convertidas, así que un round trip Harmony → lo que sea → Harmony devuelve exactamente los números con los que partiste.
El "falso quaternion"¶
Harmony tiene un tipo de columna llamado QUATERNIONPATH, y no es un quaternion.
Es una subclase de la columna 3D-path, y almacena un path de tres componentes de ángulo Euler más una velocidad — no un quaternion (w, x, y, z). Leerlo como quaternion produce disparates.
Por eso OTS siempre lee y escribe la rotación de un peg como Euler XYZ en grados, en todos los modos de peg. Internamente, el formato de intercambio también carga un quaternion real para la rotación, calculado desde el world matrix bakeado; ese sí es independiente del orden y esquiva por completo la ambigüedad del orden Euler, y es el que las demás aplicaciones prefieren al importar.
No tienes que hacer nada al respecto. Está aquí porque explica por qué la rotación de un peg se maneja como se maneja, y por qué una lectura ingenua de quaternion de una escena de Harmony sale mal.
Importar sobre pegs existentes¶
Apply to PEGs escribe la animación sobre las filas con coincidencia y tickeadas.
Apply reescribe el modo de autoría del peg
Antes de escribir, OTS desenlaza cualquier columna 3D-path o quaternion-path del peg de destino, fuerza canales separados de posición / rotación / escala con 3D habilitado, y escribe curvas bezier nuevas.
Los valores resultantes son correctos y las curvas son totalmente editables. Pero un peg que fue autorado sobre un 3D path deja de estar en un 3D path después, y eso no se deshace reimportando.
Es un trade-off deliberado: una curva entrante arbitraria no se puede representar en las columnas de path de Harmony sin esto. Si el peg es algo que hiciste a mano y quieres conservar tal cual, aplica sobre un resultado de Create Rig y mergea a mano.
Los source_modes registrados en el archivo son solo una pista — describen cómo fue autorado el peg a la salida, y nunca cambian ningún valor a la entrada.
Qué construye Create Rig¶
Create Rig ensambla un sub-graph completo y ordenado, en vez de un montón de pegs sueltos:
- Un grupo contenedor con el nombre del archivo, con un Multi-Port-In.
- Un peg externo para todo el grupo, para que puedas mover el resultado como un solo objeto.
- Un peg por ítem, con el pivot de rest escrito en sus atributos de pivot.
- Links de padre a hijo siguiendo la jerarquía del archivo.
- Un composite alimentado por las hojas, y un Multi-Port-Out.
- El grupo enlazado dentro del composite principal del grupo padre.
Toda la construcción es un solo paso de undo.
Create Cameras agrega un peg más un node CAMERA por cámara, enlaza la cámara bajo su peg, y keyea el peg desde el archivo.
Notas y límites¶
Los sufijos se eliminan para hacer coincidir. Un peg de Harmony llamado hip-P y un joint de Maya llamado hip se tratan como el mismo ítem, así que las convenciones habituales -P / -G / -C no rompen un round trip.
Harmony lee los archivos con algo más de holgura. Los lectores del adaptador de Harmony no corren la misma verificación estricta de versión que hacen los lectores de Maya y Blender, así que un archivo de versión equivocada aparece ahí como un error distinto. Reexporta desde la aplicación de origen y se va.
La escena tiene que estar abierta. Todo lo que hace el adaptador de Harmony — la escala de field, el bake de matrices, las escrituras en el node graph — corre contra la escena viva.
Ver también¶
- Sistemas de Coordenadas — por qué Harmony es el caso identidad
- Cámaras — la cuestión field ↔ distancia en los clip planes
- El Árbol de Coincidencias — qué significa el ámbar antes de que presiones Apply