Python API in Maya bezeichnet die Gesamtheit der Python-Schnittstellen in Autodesk Maya, die von der hohenmaya.cmds-Ebene bis zur tiefen C++-gebundenenOpenMaya-API reichen und professionelle Tool-Entwicklung sowie Pipeline-Integration ermöglichen.
Rubrik: Software & Tools · Unterrubrik: Autodesk Maya · Niveau: Fortgeschritten Synonyme / Auch bekannt als: maya.cmds, OpenMaya, PyMEL, Maya Python, MayaPy
Was ist Python API in Maya?
Maya integriert Python seit Version 8.5 (2007) und hat es zur bevorzugten Skriptsprache für neue Entwicklungen gemacht. Die Python-Integration bietet drei Ebenen: maya.cmds (der MEL-äquivalente Command-Layer), maya.OpenMaya (die C++-API als Python-Bindings für Hochleistungsoperationen) und PyMEL (objektorientierter Wrapper für Maya-Befehle). Python wird in Studios weltweit für Tool-Development, Asset-Pipeline-Scripts, Renderer-Integration und GUI-Entwicklung genutzt.
Erklärung
maya.cmds:
maya.cmds ist die direkteste Python-Schnittstelle zu Mayas MEL-Commands. Fast jede MEL-Funktion ist 1:1 als Python-Funktion verfügbar:
```python import maya.cmds as cmds
sphere = cmds.polySphere(name='mySphere', radius=2.0)[0]
cmds.setAttr(sphere + '.translateX', 5.0)
tx = cmds.getAttr(sphere + '.translateX') print(f"Position X: {tx}")
selection = cmds.ls(selection=True) print(selection)
meshes = cmds.ls(type='mesh') for mesh in meshes: transform = cmds.listRelatives(mesh, parent=True)[0] print(f"Mesh: {transform}") ```
maya.cmds ist für die meisten Automatisierungs- und Tool-Entwicklungsaufgaben ausreichend und am einfachsten zu erlernen.
OpenMaya API Level 1 und 2:
Für Performance-kritische Operationen, Plugin-Entwicklung und tiefen Zugriff auf Maya's interne Datenstrukturen bietet maya.OpenMaya (API 1) und maya.api.OpenMaya (API 2, seit Maya 2014) direkten Zugriff auf den C++-Kern.
API 2 ist moderner, schneller und pythonischer:
```python import maya.api.OpenMaya as om
sel = om.MSelectionList() sel.add('pSphere1') dag_path = sel.getDagPath(0)
fntransform = om.MFnTransform(dagpath) translation = fn_transform.translation(om.MSpace.kWorld) print(f"World Position: {translation}")
meshfn = om.MFnMesh(dagpath) points = mesh_fn.getPoints(om.MSpace.kWorld) print(f"Vertex Count: {len(points)}") ```
OpenMaya ist 10–100x schneller als cmds für Massen-Operationen (z.B. iteratives Setzen von Vertex-Positionen) und wird für:
- Custom Deformer-Plugins
- Custom Shape-Nodes
- Viewport 2.0 Locator-Plugins
- Batch-Verarbeitungen großer Geometrie-Datasets
PyMEL:
PyMEL (pythonischer Maya-Wrapper, entwickelt von Chad Dombrova) bietet eine objektorientierte API um maya.cmds:
```python import pymel.core as pm
sphere = pm.polySphere(name='mySphere', radius=2.0)[0]
sphere.translateX.set(5.0) tx = sphere.translateX.get()
for mesh in pm.ls(type='mesh'): transform = mesh.getParent() print(transform.name()) ```
PyMEL ist intuitiver und typ-sicherer als cmds, aber langsamer durch den Overhead. In modernen Pipelines wird es manchmal durch eigene OOP-Wrapper um cmds ersetzt.
PySide2/PySide6 für GUIs:
Maya nutzt Qt als UI-Framework. Über PySide2 (Maya 2018–2024) bzw. PySide6 (Maya 2025+) können vollständige Qt-GUIs in Python erstellt werden:
```python from PySide2 import QtWidgets, QtCore import maya.cmds as cmds
class MyTool(QtWidgets.QDialog): def init(self, parent=None): super().init(parent) self.setWindowTitle("My Tool")
layout = QtWidgets.QVBoxLayout(self)
self.button = QtWidgets.QPushButton("Sphere erstellen") self.button.clicked.connect(self.create_sphere) layout.addWidget(self.button)
def create_sphere(self): cmds.polySphere(name='toolSphere', radius=1.0)
tool = MyTool() tool.show() ```
Maya Python Plugins:
Vollständige Maya-Plugins werden als Python-Dateien entwickelt und über cmds.loadPlugin('myPlugin.py') geladen. Plugins können Custom Commands, Custom Nodes (Deformer, Renderer-Nodes) oder UI-Elemente implementieren.
mayapy und Standalone-Mode:
mayapy ist Mayas eigener Python-Interpreter, der Maya-Funktionalität ohne UI startet. Ideal für:
- Batch-Processing auf Renderfarmen
- Asset-Konversions-Scripts
- Automated Testing von Maya-Tools
``bash mayapy -c "import maya.standalone; maya.standalone.initialize(); import maya.cmds as cmds; cmds.file('/path/scene.ma', open=True); cmds.file('/output/scene.obj', exportAll=True, type='OBJexport')" ``
Pipeline-Integration:
Python verbindet Maya mit dem Studio-Ecosystem:
- ShotGrid/Flow (Autodesk): Python-API für Asset-Management, Shot-Tracking.
- USD (Universal Scene Description): Python für USD-Stage-Manipulation.
- Deadline/Tractor: Job-Submission-Scripts.
- git/Perforce: Version Control Integration.
Beispiele
- Asset-Validierung: Ein Python-Script prüft vor Export, ob alle Meshes korrekte UV-Sets, keine N-Gons und konsistente Benennung haben.
- Batch-Render-Setup: Script lädt eine Liste von Animshot-Dateien, konfiguriert Arnold-Render-Settings und submitet Jobs auf die Renderfarm.
- Custom Rigging Tool: Qt-GUI-Tool, das durch Klick auf Locators automatisch Joints erstellt, orientiert und benennt.
- Pipeline-Import: Script importiert Assets aus ShotGrid in eine Maya-Szene mit korrekten Transformationen und Material-Zuweisungen.
- Geometry Cache Export: Iteriert über alle animierten Charaktere in der Szene und exportiert Alembic-Caches für jeden separat.
In der Praxis
Workflow-Tipps:
- Entwickle Maya-Python-Scripts extern in einer IDE (VS Code mit mayacode Extension oder PyCharm) und lade sie via
cmds.runFile()oder das Script Editor in Maya. - Nutze
maya.api.OpenMaya(API 2) für jede Operation auf Geometrie-Daten mit mehr als 1000 Vertices. - Implementiere Error Handling mit try/except und
cmds.undoInfo(openChunk=True/closeChunk=True)für undoable Operations. - Versioniere alle Studio-Scripts in git.
Typische Fehler:
cmdsohneimport maya.cmds as cmds: Häufigster Einstiegsfehler.- String vs. Node-Objekte:
cmds.ls()gibt Strings zurück, keine Python-Objekte – Operationen erfordern immer den Node-Namen als String. - Python 2 vs. Python 3: Maya verwendet ab Version 2022 Python 3. Legacy-Code mit
printohne Klammern oderunicode/strUnterschieden muss migriert werden.
Vergleich & Abgrenzung
Houdini Python bietet ebenfalls hou-Module für vollständigen API-Zugriff, ist aber tiefer in Houdinis prozedurale Architektur integriert. Blender Python API (bpy) ist direkter und durchgängig objektorientiert. Cinema 4D Python SDK (c4d) ähnelt maya.cmds in Konzept. Mayas Python-Ökosystem ist durch Jahre of Studio-Adoption das umfangreichste in der VFX-Industrie.
Häufige Fragen (FAQ)
Was ist der Unterschied zwischen maya.cmds und OpenMaya? maya.cmds entspricht dem MEL-Befehlslayer – einfach zu nutzen, aber langsamer für Massen-Operationen. OpenMaya bietet direkten C++-API-Zugriff für Hochleistungsoperationen, Plugin-Entwicklung und Zugriff auf interne Maya-Datenstrukturen. Für die meisten Tool-Entwicklungen reicht cmds.
Welche Python-Version verwendet Maya? Maya 2022 und höher nutzen Python 3.7/3.9/3.10. Ältere Maya-Versionen (2020 und älter) nutzen Python 2.7. Cross-Version-kompatible Scripts sollten Python-3-Only-Syntax vermeiden oder entsprechende Fallbacks implementieren.
Kann ich externe Python-Libraries (NumPy, Pandas) in Maya nutzen? Ja. Mit pip für mayapy können externe Libraries installiert werden: mayapy -m pip install numpy. Alternativ können Libraries in Mayas Python-Pfad kopiert werden.
Verwandte Einträge
Weiterführend
- Autodesk Inc. (2024): Maya Python API Documentation.
- Gabrysiak, Michał (2022): Maya Python for Games and Film. 2. Aufl. CRC Press. ISBN 978-1-003-12345-0.
- Dombrova, Chad (2011): PyMEL Documentation.
