← Zurück zu Software & Tools
Python API in Maya bezeichnet die Gesamtheit der Python-Schnittstellen in Autodesk Maya, die von der hohen maya.cmds-Ebene bis zur tiefen C++-gebundenen OpenMaya-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

  1. Asset-Validierung: Ein Python-Script prüft vor Export, ob alle Meshes korrekte UV-Sets, keine N-Gons und konsistente Benennung haben.
  2. Batch-Render-Setup: Script lädt eine Liste von Animshot-Dateien, konfiguriert Arnold-Render-Settings und submitet Jobs auf die Renderfarm.
  3. Custom Rigging Tool: Qt-GUI-Tool, das durch Klick auf Locators automatisch Joints erstellt, orientiert und benennt.
  4. Pipeline-Import: Script importiert Assets aus ShotGrid in eine Maya-Szene mit korrekten Transformationen und Material-Zuweisungen.
  5. 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:

  • cmds ohne import 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 print ohne Klammern oder unicode/str Unterschieden 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.
← Zurück zu Software & Tools
Infotag · 13. Mai · 15:00 Uhr · Vor Ort

Sei am Mittwoch dabei.
Bring Eltern oder Freunde mit.

Ein halber Nachmittag, der dir drei Jahre Klarheit bringen kann. Kostenlos, unverbindlich, ehrlich.

  • Rundgang durch Studios, Schnitträume und Tonstudio
  • Echte Absolventenfilme sehen
  • 1:1-Beratung zu Bewerbung & BAföG
  • Studierende direkt fragen
  • Kaffee, kein Sales-Pitch
  • Auch online möglich

Platz beim Infotag reservieren

Dauert 30 Sekunden. Bestätigung per E-Mail.
100 % kostenlos · keine Verpflichtung · jederzeit absagbar