Aller au contenu
weSkelDOCUMENTATION
Documentation/Programmation/SVD & snapshots

SVD & snapshots

Lire, capturer et restaurer l’état des plugs et des wrappers.

SVDSnapshots

SVD signifie Source / Value / Destinations. weSkel utilise ce modèle pour décrire l’état d’un plug : ce qui le pilote, sa valeur et ce qu’il alimente. Un snapshot capture les données d’un plug, d’une sélection d’attributs ou d’un nœud, dans le périmètre pris en charge par son format. Le snapshot du wrapper peut ensuite être réappliqué au nœud.

Composante Signification
Source Le plug amont qui pilote la valeur, ou aucune source.
Value La valeur lue sur le plug. Une vue live peut lire la valeur évaluée même lorsqu’une source existe ; lors de la restauration, une valeur locale ne remplace pas un pilotage actif.
Destinations Les plugs aval alimentés par ce plug.

La capture du wrapper parcourt ses specs propres et héritées pour relever les valeurs des plugs, connexions entrantes et connexions sortantes, puis ajoute les données spécifiques à sa classe. Elle conserve l’état pris en charge par le wrapper ; certaines entrées runtime sont omises.

Usage Syntaxe et résultat
Vue live node.svd(plug) → SVDView : chaque lecture consulte le plug actuel. La vue ne capture pas de copie.
Capture d’un plug svd_from_plug(plug) → SVDPlug : les données d’un plug au moment de la capture, avec les noms de ses connexions.
Capture ciblée node.snapshot_svd(attrs) → SVDSnapshot : les données SVD des attributs Maya explicitement demandés, regroupées par chemin long. Les attributs introuvables sont ignorés ; vérifier les clés capturées.
État du nœud node.snapshot() → Un dictionnaire d’état propre au wrapper, construit à partir de ses specs et compléments de classe. C’est le format utilisé par finalize(snapshot).

Les deux formats de snapshot ne sont pas interchangeables. Un SVDSnapshot n’a pas de méthode de replay et ne se passe pas directement à finalize(). Une capture ne suit plus les changements de la scène ; elle n’est pas pour autant un objet Python entièrement immuable.

node.finalize(snapshot) applique les opérations sélectionnées au nœud existant. Les flags des entrées participent au choix des opérations. Le socle DG procède dans cet ordre :

Ordre Opération
1 · Sources Rétablir les connexions entrantes demandées.
2 · Valeurs Appliquer les valeurs aux plugs libres ; les entrées déjà pilotées sont ignorées.
3 · Destinations Rétablir les connexions sortantes demandées.

apply_values et apply_connections sélectionnent les valeurs et les connexions. Les opérations par function set sont séparées et désactivées par défaut avec apply_fset=False. Certains wrappers ajoutent leur propre restauration. Le parenting DAG se demande explicitement avec set_parent().

Avec strict=True, le replay DG s’arrête à la première erreur. Par défaut, il émet un avertissement Maya puis poursuit. Les opérations déjà appliquées ne sont pas annulées automatiquement.

Point À retenir
Données couvertes Le périmètre dépend des specs et des compléments du wrapper. Un attribut personnalisé sans spec n’est pas inclus automatiquement dans node.snapshot() ; une capture ciblée peut le demander via snapshot_svd(attrs).
Connexions et indices Le replay ne supprime pas globalement les connexions ou indices d’array absents de la capture, et ne force pas le remplacement d’une source déjà connectée.
Noms capturés Les noms de plugs externes doivent encore désigner les bonnes cibles lors de la restauration. Ils ne constituent pas des références persistantes par UUID.
Sauvegarde sur disque L’export JSON nécessite des données sérialisables et une conversion adaptée des objets OM2. Un snapshot de Transform contient notamment une MTransformationMatrix : json.dumps(snapshot) ne suffit pas. La relecture doit aussi restituer les types attendus par le replay.

Références : SVDView · SVDPlug · SVDSnapshot · DGNode. La déclaration des propriétés est expliquée dans Fonctionnement.