from weSkel.src.core.node.abstract.dg.lib import DGNodeDans Maya ou dans un script Python exécuté par Maya / mayapy initialisé, avec weSkel accessible. L’import de om n’est nécessaire que pour manipuler les types OpenMaya dans votre propre code.
Nom, plugs, création et état SVD des nœuds du Dependency Graph.
from weSkel.src.core.node.abstract.dg.lib import DGNodeDans Maya ou dans un script Python exécuté par Maya / mayapy initialisé, avec weSkel accessible. L’import de om n’est nécessaire que pour manipuler les types OpenMaya dans votre propre code.
| Élément | Valeur |
|---|---|
| Classe | DGNode |
| Module | weSkel.src.core.node.abstract.dg.lib |
| Parent direct | Node |
| Descendants directs représentés | ContainerBase, GeometryFilter, MultMatrix, Network… |
| Membres propres | 15 propriétés Python + 6 propriétés de specs ; 7 méthodes définies ou redéfinies ici. |
Les membres des parents restent disponibles. Chaque rubrique propose des tableaux repliables par classe parente, avec un lien vers le contrat complet. Les méthodes privées et les mécanismes standard Python ne font pas partie de cet inventaire.
Signature : DGNode(node) → DGNode ou une sous-classe compatible déjà enregistrée.
| Paramètre | Types acceptés | Défaut |
|---|---|---|
node |
str, om.MObject, om.MObjectHandle, om.MFnDependencyNode |
Obligatoire |
Enveloppe un nœud existant ou prépare un wrapper si le nom est introuvable ; ne crée aucun nœud. Pour un autre wrapper, passer other.mobject. Le registre partagé conserve l’identité et peut renvoyer le wrapper concret existant. Une entrée incompatible peut lever TypeError, et un conflit d’identité RuntimeError.
Propriétés Python définies sur cette classe. om désigne maya.api.OpenMaya. Les propriétés issues des specs sont détaillées dans la section suivante.
| Propriété | Type retourné | Accès |
|---|---|---|
dep_fn |
om.MFnDependencyNode |
L |
uuid |
str | None |
L |
name |
str | None |
L/E |
absolute_name |
str | None |
L |
stripped_name |
str | None |
L/E |
namespace |
str | None |
L/E |
plugs |
Plugs | None |
L |
is_valid_dep_fn |
bool |
L |
is_default_node |
bool |
L |
is_from_referenced_file |
bool |
L |
is_locked |
bool |
L/E |
is_shared |
bool |
L |
plugin_name |
str | None |
L |
affect_animation |
bool |
L |
type |
str | None |
L/E |
Function set live ; objet non attaché si le nœud est absent. Vérifier exists avant ses opérations.
| Élément | Type / comportement |
|---|---|
| Retour | om.MFnDependencyNode |
UUID live, ou dernière valeur mémorisée si elle reste disponible. Ne pas utiliser le nom comme identité.
| Élément | Type / comportement |
|---|---|
| Retour | str | None |
Nom live, sinon nom mémorisé. Le setter renomme le nœud existant ou prépare le nom d’un wrapper absent ; Maya peut ajuster un nom en conflit.
| Élément | Type / comportement |
|---|---|
| Retour | str | None |
node.name = value |
str |
Nom absolu de namespace renvoyé par MFnDependencyNode.absoluteName() ; None sans nœud. Pour un chemin DAG complet, utiliser full_path_name.
| Élément | Type / comportement |
|---|---|
| Retour | str | None |
Nom sans namespace, ou None si aucun nom. Le setter conserve le namespace courant.
| Élément | Type / comportement |
|---|---|
| Retour | str | None |
node.stripped_name = value |
str |
Namespace normalisé comme a:b ; None à la racine. Le setter crée les namespaces nécessaires pour un nœud live. None, "" et ":" demandent la racine.
| Élément | Type / comportement |
|---|---|
| Retour | str | None |
node.namespace = value |
str | None |
Gestionnaire des plugs du nœud live ; None sinon. node.plugs["message"] renvoie un Plug.
| Élément | Type / comportement |
|---|---|
| Retour | Plugs | None |
Compatibilité du function set avec le MObject courant.
| Élément | Type / comportement |
|---|---|
| Retour | bool |
Indique un nœud par défaut de Maya ; False sans nœud.
| Élément | Type / comportement |
|---|---|
| Retour | bool |
Indique un nœud issu d’un fichier référencé ; False sans nœud.
| Élément | Type / comportement |
|---|---|
| Retour | bool |
Verrouillage du nœud, distinct des locks de plugs. Le setter agit sur le nœud live et mémorise la valeur pour une création ultérieure.
| Élément | Type / comportement |
|---|---|
| Retour | bool |
node.is_locked = value |
bool |
État partagé renvoyé par Maya ; False sans nœud.
| Élément | Type / comportement |
|---|---|
| Retour | bool |
Nom du plugin Maya associé, éventuellement chaîne vide ; None sans nœud.
| Élément | Type / comportement |
|---|---|
| Retour | str | None |
Résultat de MFnDependencyNode.affectsAnimation() ; False sans nœud.
| Élément | Type / comportement |
|---|---|
| Retour | bool |
Type natif live ou type mémorisé. Le setter ne fonctionne que sans nœud live ; sinon il lève RuntimeError. Un wrapper concret fixe normalement son type avec NODE_TYPE.
| Élément | Type / comportement |
|---|---|
| Retour | str | None |
node.type = value |
str |
Node10| Propriété | Type retourné | Accès | Description |
|---|---|---|---|
mobject |
om.MObject |
L/E | Objet Maya live, ou objet nul. |
mobject_handle |
om.MObjectHandle |
L/E | Handle associé au nœud. |
api_type |
int | None |
L | Identifiant du type API Maya. |
api_type_str |
str |
L | Nom du type API, par exemple "kTime". |
exists |
bool |
L | Le wrapper possède actuellement un nœud live. |
is_null |
bool |
L | L’objet Maya retourné est nul. |
is_alive |
bool |
L | L’objet existe avec un handle valide et vivant. |
is_valid_handle |
bool |
L | Validité du handle mémorisé. |
is_dag_node |
bool |
L | Compatibilité avec om.MFn.kDagNode. |
hash_code |
int |
L | Hash du handle Maya. |
Les noms Python et Maya sont reproduits exactement. Type déclaré, retour Python et défaut déclaré sont des informations différentes. Le défaut d’une spec n’est pas nécessairement la valeur live d’un nœud, ni une valeur automatiquement écrite à sa création.
Les retours ci-dessous décrivent les descriptors de cette classe ; les observations live utilisent un network, un container, un transform, un mesh ou un skinCluster selon la classe. Certains plugs dépendent du type concret. Une sous-classe peut redéfinir un membre et ses possibilités d’écriture. Les noms de proxies identifient le résultat actuel : ne pas importer leurs classes privées.
| Forme | Utilisation |
|---|---|
_ValuePlugProxy |
.value lit la valeur ; .plug donne un Plug, .mplug un MPlug. |
IndexedPathProxy |
Objet d’accès indexé. Sa résolution présente des limites au checkpoint documenté : les fiches donnent des alternatives vérifiées avec node.plugs[...]. |
| Flags / écriture | stored, input, output, connectable décrivent le contrat de replay. Ils ne garantissent pas qu’un plug natif soit modifiable dans son état courant. |
Pour une écriture dont il faut vérifier l’échec, utiliser explicitement le Plug et contrôler le résultat live : certains setters de descriptors peuvent mémoriser la valeur sans propager une erreur d’écriture Maya.
| Propriété | Plug Maya | Retour |
|---|---|---|
message |
message |
None |
frozen |
frozen |
_ValuePlugProxy · .value: bool |
is_historically_interesting |
isHistoricallyInteresting |
_ValuePlugProxy · .value: int |
bin_membership |
binMembership |
_ValuePlugProxy · .value: str |
caching_enabled |
caching |
_ValuePlugProxy · .value: bool |
caching_node_state |
nodeState |
_ValuePlugProxy · .value: int |
Plug de message du nœud ; sert aux connexions, sans valeur numérique.
| Élément | Type / comportement |
|---|---|
| Chemin Maya déclaré | message |
| Retour de la propriété | None |
| Type déclaré par la spec | message |
| Défaut déclaré | None |
| Flags | output, connectable, hidden |
Le setter du descriptor lève AttributeError. Gérer les connexions avec node.plugs[...] ; cette propriété ne renvoie pas le nœud connecté.
État natif de gel de l’évaluation.
| Élément | Type / comportement |
|---|---|
| Chemin Maya déclaré | frozen |
| Retour de la propriété | _ValuePlugProxy · .value: bool |
| Type déclaré par la spec | numeric:bool |
| Défaut déclaré | False |
| Flags | output, input, connectable, stored |
| Lire la valeur | node.frozen.value |
| Affectation | node.frozen = value |
Niveau d’intérêt du nœud dans l’historique Maya.
| Élément | Type / comportement |
|---|---|
| Chemin Maya déclaré | isHistoricallyInteresting |
| Retour de la propriété | _ValuePlugProxy · .value: int |
| Type déclaré par la spec | numeric:byte |
| Défaut déclaré | 2 |
| Flags | output, input, connectable, stored, hidden |
| Lire la valeur | node.is_historically_interesting.value |
| Affectation | node.is_historically_interesting = value |
Appartenance aux bins Maya.
| Élément | Type / comportement |
|---|---|
| Chemin Maya déclaré | binMembership |
| Retour de la propriété | _ValuePlugProxy · .value: str |
| Type déclaré par la spec | typed:string |
| Défaut déclaré | '' |
| Flags | output, input, stored, hidden |
| Lire la valeur | node.bin_membership.value |
| Affectation | node.bin_membership = value |
Activation du cache natif du nœud.
| Élément | Type / comportement |
|---|---|
| Chemin Maya déclaré | caching |
| Retour de la propriété | _ValuePlugProxy · .value: bool |
| Type déclaré par la spec | numeric:bool |
| Défaut déclaré | False |
| Flags | output, input, connectable, stored |
| Lire la valeur | node.caching_enabled.value |
| Affectation | node.caching_enabled = value |
État d’évaluation natif nodeState.
| Élément | Type / comportement |
|---|---|
| Chemin Maya déclaré | nodeState |
| Retour de la propriété | _ValuePlugProxy · .value: int |
| Type déclaré par la spec | enum |
| Défaut déclaré | 0 |
| Flags | output, input, connectable, stored |
| Lire la valeur | node.caching_node_state.value |
| Affectation | node.caching_node_state = value |
| Méthode | Retour |
|---|---|
create |
None |
delete |
None |
snapshot |
DGSnapshot |
snapshot_svd |
SVDSnapshot |
svd |
SVDView |
finalize |
None |
clear_attr_cache |
None |
Crée le nœud s’il est absent ; ne fait rien s’il existe déjà. Le type doit être défini. Utiliser un wrapper concret pour la création habituelle. Un état mémorisé est rejoué avec valeurs et connexions, en mode strict.
| Élément | Type / comportement |
|---|---|
| Retour | None |
RuntimeError si aucun type n’est défini ; erreurs natives de création ou de replay. Le retour est None, pas le wrapper.
Déconnecte les connexions live, détache le wrapper puis supprime le nœud. Sans nœud live, ne fait rien. snapshot=False évite la capture lorsque l’état sera reconstruit autrement.
| Élément | Type / comportement |
|---|---|
| Retour | None |
snapshot |
bool · défaut True — Conserver un état pour une recréation. |
La recréation produit un nouvel objet Maya : ce n’est pas une conservation d’identité ni une opération Undo globale.
Capture et mémorise un dictionnaire d’identité et d’état SVD selon les specs. Les valeurs natives peuvent contenir des objets API : ce résultat n’est pas garanti sérialisable en JSON.
| Élément | Type / comportement |
|---|---|
| Retour | DGSnapshot |
profile |
str · défaut "rig" — Libellé conservé dans le résultat ; aucun filtre général par profil. |
La capture ne sauvegarde pas toute la scène ni tous les attributs dynamiques arbitraires.
Capture Source / Value / Destinations pour la liste demandée. Renvoie un SVDSnapshot, différent du dictionnaire de snapshot(). Les attributs non résolus lors de la recherche sont ignorés.
| Élément | Type / comportement |
|---|---|
| Retour | SVDSnapshot |
attrs |
Iterable[str] · défaut — — Noms Maya des attributs à capturer. |
RuntimeError sans nœud live. Ne pas passer directement ce conteneur à finalize() comme un DGSnapshot.
Renvoie une vue live en lecture seule de la source, de la valeur et des destinations ; ce n’est pas une capture figée.
| Élément | Type / comportement |
|---|---|
| Retour | SVDView |
plug |
Plug | om.MPlug | str · défaut — — Plug ou nom Maya d’attribut. |
RuntimeError sans nœud live ; vérifier le nom demandé avant utilisation. Les erreurs de résolution dépendent de l’accès au plug.
Applique toutes les sources, puis les valeurs libres, puis les destinations ; le dispatch FSET activé suit ces phases. Préserve les locks des valeurs adressées et ignore les feuilles déjà pilotées. Sans état explicite ou mémorisé, ne fait rien.
| Élément | Type / comportement |
|---|---|
| Retour | None |
snapshot |
Mapping[str, Any] | None · défaut None — Dictionnaire à rejouer ; sinon dernier état mémorisé. |
apply_values |
bool · défaut True — Appliquer les valeurs stockables non pilotées. |
apply_connections |
bool · défaut True — Rejouer les sources et destinations autorisées par les flags. |
apply_fset |
bool · défaut False — Exécuter les entrées fset de forme name, args, kwargs. |
strict |
bool · défaut False — Lever l’erreur originale avec contexte ; sinon avertir et poursuivre. |
Aucun rollback général : une erreur peut survenir après des mutations. Les connexions existantes et indices d’arrays absents du snapshot ne sont pas globalement supprimés. None ne constitue pas un bilan de succès.
Vide le cache d’attributs de cette instance ; ne supprime aucun nœud et ne vide pas le registre global de wrappers.
| Élément | Type / comportement |
|---|---|
| Retour | None |
Structure du DGSnapshot — dictionnaire Python à champs optionnels :
| Champs | Type |
|---|---|
schema_version, profile, type |
str |
uuid, name, long_name, namespace |
str | None |
is_locked |
bool | None |
svd |
tuple[dict, ...] |
fset |
tuple[Any, ...] |
snapshot() utilise schema_version="dg-1.0". Les entrées SVD portent notamment attr, plug, flags et, selon le cas, sources, value, destinations. Les chemins sérialisés ne deviennent pas des références persistantes par UUID.
Node2| Méthode | Retour | Description |
|---|---|---|
has_fn(fn_type) |
bool |
Tester la compatibilité avec un function set Maya. |
clear_node_registry() |
None |
Détacher les wrappers enregistrés et vider leur registre partagé. |
| Attribut | Type | Valeur / rôle |
|---|---|---|
NODE_TYPE |
str | None |
"" |
SPEC_LAYERS |
list[SpecLayer] |
[get_dg_specs_all] |
Attributs définis ou redéfinis ici. NODE_REGISTRY est hérité de Node. COMPATIBLE_MAYA_FN_TYPES est hérité ; pour une classe avec NODE_TYPE explicite, son utilisation dépend aussi de la politique de compatibilité décrite dans le constructeur.
Les types DGSnapshot exportés par ces modules sont des descriptions TypedDict, pas des classes à instancier pour effectuer une capture. Utiliser node.snapshot().
| Point | Comportement |
|---|---|
| Identité | Le wrapper suit l’objet Maya ; un remplacement portant le même nom n’est pas le même nœud. |
| Lecture | Lecture live prioritaire ; vérifier exists avant les opérations natives. |
| Specs | Décrivent les plugs existants ; n’ajoutent pas automatiquement d’attributs Maya. |
| Exemples | La démonstration crée et supprime uniquement ses propres nœuds nommés avec un suffixe aléatoire. |
Exemple autonome pour le Script Editor Python de Maya. Pour l’exécuter depuis mayapy, initialiser maya.standalone avant ce bloc et le fermer ensuite, comme dans la référence Node.
from uuid import uuid4from weSkel.src.core.node.abstract.dg.lib import DGNodefrom weSkel.src.core.node.dg.network.lib import Network
node = Network("api_dg_" + uuid4().hex[:8])try: node.create() assert DGNode(node.dep_fn) is node node.caching_enabled = True assert node.caching_enabled.value is True state = node.snapshot() assert isinstance(state, dict) node.caching_enabled = False node.finalize(state, apply_connections=False, strict=True) assert node.caching_enabled.value is True assert node.snapshot_svd(["caching"]) is not None assert node.svd("caching") is not None print("DGNode: identity, plugs and replay OK")finally: node.delete(snapshot=False)Résultat attendu : DGNode: identity, plugs and replay OK. Les nœuds de démonstration sont supprimés dans le finally.
Référence du checkpoint SDK 87c3486. Inventaire et exemples vérifiés sur les sources sous Maya 2025.3 et 2026.3 ; cela ne valide pas le package compilé.