Comprenez aussi que je n'ai aucune idée de comment les références externes sont géré dans les autres softs 3d.
Je trouve la gestion des références externes de Maya assez clair, car elles permettent, de par leur fonctionnement (vous allez voir), une certaine latitude qu'il me semble difficile d'avoir avec d'autres softs (l'effet "toolbox").
Cela dis je suis très intéressé (justement parce que je ne vois pas comment il pourrait en être mieux et autrement) par la gestion des ref externes sur les logiciels concurrent.
Je vous invite donc, si vous utilisez un autre logiciel, à laisser un commentaire qui m'expliquerai les différences par rapport à ce que je vais énoncer, merci d'avance! ;)

Le Reference Editor

C'est lui qui nous permet de gérer les références externes de nos scènes:

referenceEdits001.png

referenceEditor001.png

Le Reference Node

Quand vous importez une scène en référence externe dans Maya, celui ci "import la scène" (Les nodes sont donc "lockés" et obtienne le statut de "node référencé". Les connections restent cependant modifiables et cassables à volonté...). Maya créé également un node de type "reference" (qui se fini souvent par RN):

referenceEdits009.png

Quand votre référence est désactivé, les nodes de votre scène qui se retrouve "orphelin" (les nodes de courbe d'animation par exemple) s'y connecte:

referenceEdits011.png

referenceEdits010.png

Ce node est très important dans la gestion de references (il est d'ailleurs locké). Il contiendra une liste de toute les modifications effectué sur les attributs de vos objets en référence externe. Cette liste est appelé l'edit list et est accessible via le Reference Editor:

referenceEdits002.png

referenceEdits003.png

Petit Re-Rappel

Dans Maya, il y a deux façon de changer les valeurs des attributs:

  • Soit en les modifiant directement (à la mains).
  • Soit en les connectant à d'autres nodes.
Exemple concret

Quand vous importez un objet en référence externe et que vous posez une clef, Maya créé le node de clef d'animation (de type animCurveTL) et le connecte à l'attribut sur lequel vous avez posé la clef. Nous avons donc la représentation suivante:

referenceEdits004.png

Et votre edit list ressemblera à ça:

referenceEdits005.png

Vous sauvegardez votre scène, mais que ce passe t'il quand vous la réouvrez?

shemaReferenceEdit001.png

  • La première scène est ouverte, tout les nodes qu'elle contient sont chargés (sauf bien sûr ceux en ref).

referenceEdits006.png

  • Ensuite la scène en ref est importé.

referenceEdits007.png

  • Puis pour finir, l'edit list est appliqué pour refaire les connections.
connectAttr "salle_des_mirroirs:pPlane1_translateX.output" "|salle_des_mirroirs:pPlane1.translateX"

referenceEdits008.png

Ce petit exemple vous aidera, je l'espère à mieux comprendre le fonctionnement de base des references externes (et vous montrera peut être aussi qu'il n'y a rien de magique comme j'ai souvent pu l'entendre).

Passons maintenant à la suite!

Utilisation avancé des edits lists

Si le fonctionnement des references externes est assez clair et relativement transparant (il pourrait l'être encore plus), sachez qu'il peut se révéler puissant combiné à ses deux commandes MEL:

referenceQuery
referenceEdits

Par exemple:

referenceQuery -editStrings blogAssetRN

Permet de récupérer en MEL un array contenant chaque ligne de l'edit list.

On peut donc stocker ses edit list ce qui peut être pratique dans certains cas très précis de débug de scène.

Il est tout à fait possible et envisageable (ça m'a sauvé plus d'une fois):

  • De sauvegarder le contenu de l'edit list dans un fichier texte (ce ne sont, je le rappel que des commandes MEL setAttr disconnectAttr etc...)
  • De vider complètement l'edit list (votre perso redevient comme à son premier import en ref externe, neutre au milieu de la scène)
  • De modifier le contenu du fichier texte à la main (à coup de search and replace)
  • Puis réappliquer son contenu (c'est du MEL) à la scène, ce qui réappliquera exactement comme si ces commandes avait été directement dans l'edit list.
  • A la fin de cette manip, un petit tour dans votre edit list et vous verrez que tout c'est bien appliqué sur votre référence.

Avant les Assets, on lockait et masquait les attributs pour éviter que des erreurs soit faite durant l'utilisation des setups de perso. Mais cette disposition était lourde car:

  • D'une part le "setupeur" devait délocker et/ou réafficher les attributs lorsqu'il intervenait sur la scène.
  • Puis d'autre part car il laissait un coefficient d'erreur humaine trop important (vu le nombre d'attribut).

Une des solutions était que la génération des blasts de validation soit précédé d'un script qui "clean" l'edit list de tout ce que l'animateur n'a pas été supposé modifier. Si l'animateur avait un problème sur son animation à la suite de ce clean c'est qu'il y avait des mauvaises connections quelques part.

On pouvait faire plus simple en faisant un script qui ne faisait qu'afficher les attributs qui ne devaient pas être modifié et qui l'ont été. C'est moins "direct-dans-ta-face-que-jte-pourri-ton-anim".

Le mieux restant d'après moi un message: "Votre scène vas faire un playblast foireux, voulez vous continuer?". En général ça fait tilt! :hehe:

Une fois de plus, ça dépend de la taille de l'équipe. Plus y à de monde, plus on à tout intérêt à être carré.

On peut voir plus loin et carrément créer un gestionnaire de référence "maison" qui, si l'infrastructure du projet est "standardisé" peut se révéler très puissant! (Et éviter les erreurs plus haut) :youplaBoum:

Bref, vous l'aurez compris, ces deux commandes sont LES outils de debug et création de référence externe! Si vous comptez entamer une prod avec une gestion qui peut s'avérer complexe des références externe vous serriez bien avisé d'apprendre à vous en servir pour éviter les gros problèmes. :redface:

En espérant que ce petit "résumé" vous aura aidé à comprendre un peu le système de référence de Maya.

Si vous avez des questions ou des suggestions, n'hésitez pas à laisser un commentaire. Le sujet étant très vaste, suivant vos remarques je pourrai ajouter ou approfondir quelques points.

A bientôt!

Dorian