Créez vos propres outils
Wrappers & specs
Comprendre les propriétés des nœuds et consulter leurs déclarations.
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.
Les notions utiles
Section intitulée « Les notions utiles »| 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é.
Lire les specs sans modifier la scène
Section intitulée « Lire les specs sans modifier la scène »Dans le Script Editor Python de Maya, avec weSkel disponible :
from weSkel.src.core.node.dg.mult_matrix.lib import MultMatrixfrom 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.
Quelques accès à connaître
Section intitulée « Quelques accès à connaître »| 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.
Valeurs, unités et durée de vie
Section intitulée « Valeurs, unités et durée de vie »| 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.