Aller au contenu

Dans Harmony

Harmony est l'endroit où OTS parle sa langue maternelle. L'espace canonique du format d'échange est la convention OGL de Harmony — Y-up, main droite, mètres — donc rien n'est swizzlé à l'entrée ni à la sortie. Toutes les autres applications convertissent vers ce que Harmony utilise déjà.

Lancement

Exécutez le script OctoTransformSync depuis la barre d'outils Scripts. La fenêtre s'ouvre par-dessus Harmony et y reste ; relancer le script alors qu'elle est ouverte ne fait que la ramener au premier plan.

Le vocabulaire de la fenêtre est celui de Harmony : les listes disent PEG et PEGs, et le bouton d'import dit Apply to PEGs.

Les quatre pages

Deux formats en haut, deux directions en dessous — toutes les pages accessibles dans Harmony :

Harmony — import .pvt

Un squelette au repos sur le point d'être construit. Build Skeleton crée les pegs ; Create Cameras s'active parce que ce fichier en transporte une.

Harmony — export .pvt

Les pegs que vous avez scannés, avec la colonne Rig et l'option Scale. Pas de plage de frames — un .pvt n'a pas d'animation.

Harmony — import .anm

L'arbre de correspondance, avec une case à cocher par ligne et les trois actions : Apply to PEGs, Create Rig, Create Cameras.

Harmony — export .anm

Même liste que l'export .pvt — une scène, un regroupement — plus Start / End et Scene range.


Ce qu'OTS lit dans un peg

Pour chaque peg exporté, OTS enregistre :

  • Son path dans le node graph, et son ancêtre exporté le plus proche comme parent.
  • Son pivot, en mètres canoniques.
  • Sa transform, évaluée par frame keyée sous forme de world matrix et rendue relative à cet ancêtre.
  • Ses modes d'authoring — position séparée, rotation en quaternion-path, scale séparé, 3D activé — enregistrés comme indication.
  • Si un nœud CAMERA y est accroché, la configuration de caméra.

Les keyframes sont collectées à partir des points de contrôle réels du peg, plus la première et la dernière frame de la plage d'export. Les handles bezier sont lus nativement quand le type de colonne le permet, et reconstruits par échantillonnage de la courbe quand il ne le permet pas.

L'échelle field ↔ OGL

Harmony travaille en fields, pas en mètres, et la conversion entre les deux n'est pas une constante — elle dépend de la résolution de la scène, du field of view et du ratio d'aspect. OTS la demande à la scène vivante au moment de l'export et de l'import plutôt que de coder un nombre en dur, ce qui explique pourquoi l'adaptateur Harmony a besoin d'une scène ouverte pour travailler.

Les clip planes de la caméra de Harmony sont aussi en fields. Leurs valeurs d'origine en fields sont conservées dans le fichier à côté des distances converties, si bien qu'un aller-retour Harmony → n'importe quoi → Harmony vous rend exactement les nombres de départ.


Le « faux quaternion »

Harmony possède un type de colonne appelé QUATERNIONPATH, et ce n'est pas un quaternion.

C'est une sous-classe de la colonne 3D-path, et elle stocke un path de trois composantes d'angles Euler plus une vélocité — pas un quaternion (w, x, y, z). Le lire comme un quaternion produit n'importe quoi.

Donc OTS lit et écrit toujours la rotation d'un peg en degrés Euler XYZ, dans tous les modes de peg. En interne, le format d'échange transporte aussi un vrai quaternion pour la rotation, calculé à partir de la world matrix bakée ; celui-là est indépendant de l'ordre et contourne entièrement l'ambiguïté d'ordre Euler, et c'est ce que les autres applications préfèrent à l'import.

Vous n'avez rien à faire à ce sujet. C'est ici parce que ça explique pourquoi la rotation d'un peg est traitée ainsi, et pourquoi une lecture naïve en quaternion d'une scène Harmony part de travers.


Importer sur des pegs existants

Apply to PEGs écrit l'animation sur les lignes correspondantes et cochées.

Apply réécrit le mode d'authoring du peg

Avant d'écrire, OTS délie toute colonne 3D-path ou quaternion-path du peg cible, force des canaux séparés position / rotation / scale avec 3D activé, et écrit de nouvelles courbes bezier.

Les valeurs obtenues sont correctes et les courbes entièrement éditables. Mais un peg qui était authoré sur un 3D path ne l'est plus après, et ça ne se défait pas en réimportant.

C'est un compromis délibéré : une courbe entrante arbitraire ne peut pas être représentée dans les colonnes de path de Harmony autrement. Si le peg est quelque chose que vous avez façonné à la main et que vous voulez garder tel quel, appliquez plutôt sur un résultat de Create Rig et fusionnez à la main.

Les source_modes enregistrés dans le fichier sont une simple indication — ils décrivent comment le peg était authoré à la sortie, et ne changent jamais aucune valeur à l'entrée.


Ce que construit Create Rig

Create Rig assemble un sous-graphe complet et propre plutôt qu'un tas de pegs en vrac :

  • Un group enveloppe nommé d'après le fichier, avec un Multi-Port-In.
  • Un peg externe pour tout le groupe, pour que vous puissiez déplacer le résultat comme un seul objet.
  • Un peg par élément, avec le pivot au repos écrit dans ses attributs de pivot.
  • Des links parent-enfant suivant la hiérarchie du fichier.
  • Un composite alimenté par les feuilles, et un Multi-Port-Out.
  • Le groupe relié au composite principal du groupe parent.

Toute la construction tient en un seul pas d'undo.

Create Cameras ajoute un peg plus un nœud CAMERA par caméra, relie la caméra sous son peg, et keye le peg à partir du fichier.


Notes et limites

Les suffixes sont retirés pour la correspondance. Un peg Harmony nommé hip-P et un joint Maya nommé hip sont traités comme le même élément, donc les conventions habituelles -P / -G / -C ne cassent pas un aller-retour.

Harmony lit les fichiers un peu plus souplement. Les readers de l'adaptateur Harmony n'exécutent pas la même vérification stricte de version que ceux de Maya et Blender, donc un fichier de mauvaise version y remonte sous forme d'une erreur différente. Réexportez depuis l'application source et le problème disparaît.

La scène doit être ouverte. Tout ce que fait l'adaptateur Harmony — l'échelle field, le bake de matrices, les écritures dans le node graph — s'exécute contre la scène vivante.


Voir aussi