Aller au contenu
weSkelDOCUMENTATION
Documentation/Programmation/Wrappers & specs

Créez vos propres outils

Wrappers & specs

Comprendre les propriétés des nœuds et consulter leurs déclarations.

WrappersSpecsAPI 2.0

Les wrappers donnent des noms et des opérations Python aux nœuds Maya. Les specs décrivent les propriétés qu’ils exposent.

Notion Rôle Exemple
Wrapper Objet Python qui représente un nœud Maya. Transform, Joint, MultMatrix
Propriété Accès nommé du wrapper à une valeur ou une capacité. transform.scale
Plug Attribut Maya, dont on peut lire la valeur ou gérer les connexions. transform.plugs["scale"]
Spec Déclaration d’une propriété : nom public, nom Maya, type, valeur par défaut et flags. matrix_sum correspond à matrixSum.
Spec layer Ensemble de specs combiné avec ceux des classes parentes. Les propriétés générales d’un nœud, puis celles de MultMatrix.

Déclarer une spec ne crée pas à lui seul un nouvel attribut dynamique dans Maya. Utiliser le wrapper concret du type de nœud souhaité.

Dans le Script Editor Python de Maya, avec weSkel disponible :

from weSkel.src.core.node.dg.mult_matrix.lib import MultMatrix
from weSkel.src.core.props.specs.specs_layers import merged_specs_for_cls
specs = merged_specs_for_cls(MultMatrix)
public_name, plug_name, cache_name, kind, default_value, flags = specs["matrix_sum"]
assert public_name == "matrix_sum"
assert plug_name == "matrixSum"
assert kind == "typed:matrix"
assert "output" in flags and "connectable" in flags
print(public_name, "->", plug_name)
print("Kind:", kind)
print("Flags:", flags)

Résultat attendu : matrix_sum -> matrixSum, le type typed:matrix et les flags de la propriété. Cet exemple ne crée aucun nœud.

Champ Signification
public_name Nom exposé côté Python, ici matrix_sum.
plug_name Nom ou chemin d’attribut Maya, ici matrixSum.
cache_name Champ interne de la déclaration ; ne pas l’utiliser comme API de script.
kind Catégorie de valeur, ici une matrice.
default_value Valeur par défaut déclarée ; ce n’est pas une lecture de la scène.
flags Indications telles que output, connectable ou stored, selon la propriété.

Le résultat fusionne les layers du wrapper et de ses parents. Utiliser ce résultat pour consulter les déclarations, sans le modifier en place.

Besoin Accès actuel Point d’attention
Créer un transform Transform(name), puis node.create() create() renvoie None.
Lire ou écrire une valeur de plug node.plugs["scaleX"].value Un attribut connecté ou verrouillé impose ses contraintes.
Lire la source d’un plug plug.src Vérifier la connexion réellement obtenue.
Connecter deux plugs source.connect_to(destination) Ne remplace pas une source existante par défaut.
Lire les indices d’un array plug.logical_indices Les indices Maya peuvent être non contigus.
Consulter une propriété en live node.svd("scale") La vue suit la scène ; ce n’est pas une sauvegarde.
Capturer un état ciblé node.snapshot_svd(("scale",)) Produit un relevé ciblé, distinct du dictionnaire ci-dessous.
Capturer l’état décrit par les specs node.snapshot() Produit le dictionnaire accepté par node.finalize(snapshot).

Les snapshots ne constituent pas une sauvegarde complète de la scène. Ils peuvent contenir des objets Maya et ne sont pas automatiquement sérialisables en JSON. Le replay bas niveau ne remplace pas une opération complète de rebuild de module.

Situation À retenir
Échelle Valeurs sans unité ; utilisée dans Premier script.
Angles, distances et temps lus via Plug.value Les valeurs peuvent être des objets MAngle, MDistance ou MTime de Maya API 2.0.
Propriétés issues des specs Le type décrit par la spec guide l’accès ; ne pas supposer que toutes les propriétés et tous les plugs retournent la même représentation.
Nœud ou attribut supprimé Ne pas réutiliser un ancien objet Plug pour un nouvel objet portant le même nom.
Mise à jour de weSkel Redémarrer Maya pour charger la nouvelle installation.

Revenir à API & SDK pour les limites de distribution et les capacités encore en préparation.