← Zurück zu Software & Tools
MEL (Maya Embedded Language) und Python sind die zwei Skriptsprachen in Autodesk Maya, mit denen nahezu alle Maya-Funktionen automatisiert, benutzerdefinierte Tools entwickelt und Maya in Studio-Pipelines integriert werden kann.

Rubrik: Animation & VFX · Unterrubrik: Maya · Niveau: Fortgeschritten

Synonyme / Auch bekannt als: Maya Scripting, MEL-Script, maya.cmds (Python), PyMEL


Was ist MEL & Python-Scripting in Maya?

Maya wurde von Beginn an als skriptierbare Software konzipiert. Jede Funktion, die ein Benutzer über die Menüs oder Werkzeuge ausführt, wird intern als MEL-Befehl ausgeführt. Das Script-Editor-Fenster in Maya zeigt diese Befehle in Echtzeit an und ermöglicht so das direkte Nachvollziehen und Wiederholen von Aktionen über Skripte.

MEL (Maya Embedded Language) ist Mayas eigene, C-ähnliche Skriptsprache, die seit Maya 1.0 existiert. Sie bietet direkten Zugriff auf alle Maya-Kernfunktionen.

Python wurde als zweite Skriptsprache in Maya 8.5 (2007) eingeführt und hat MEL in neuen Produktionen weitgehend abgelöst. Der Zugriff auf Maya-Befehle erfolgt über das maya.cmds-Modul sowie über PyMEL, eine objektorientierte Wrapper-Bibliothek, die Mayas Objekte als Python-Klassen repräsentiert.


Erklärung

Der Script Editor

Der Script Editor (Windows > General Editors > Script Editor) ist das zentrale Interface für Scripting in Maya. Er besteht aus:

  • Output-Bereich (oben): Zeigt alle ausgeführten MEL-Befehle und Fehler
  • Input-Bereich (unten): Eingabe von MEL oder Python; Ausführung mit Enter (einzelne Zeile) oder Ctrl+Enter (ganzes Script)

Der Sprachwechsel zwischen MEL und Python erfolgt über Tab-Auswahl im Input-Bereich.

MEL: Grundlagen

MEL ist typsicher, imperativ und für Einsteiger vergleichsweise einfach zu verstehen, da man jeden Befehl direkt aus dem Output-Bereich kopieren kann.

Beispiele grundlegender MEL-Syntax: ```mel // Würfel erstellen polyCube -w 2 -h 2 -d 2;

// Objekt umbenennen rename "pCube1" "meinWuerfel";

// Variable deklarieren int $anzahl = 5; string $name = "Objekt"; float $groesse = 1.5;

// Schleife for ($i = 0; $i < $anzahl; $i++) { spaceLocator -name ("locator_" + $i); }

// Attribut abfragen und setzen float $tx = getAttr "meinWuerfel.tx"; setAttr "meinWuerfel.ty" 3.0;

// Prozedur (Funktion) proc renameAll(string $prefix) { string $sel[] = ls -sl; for ($obj in $sel) { rename $obj ($prefix + "_" + $obj); } } ```

Python (maya.cmds): Grundlagen

maya.cmds ist das Standard-Python-Interface und spiegelt nahezu 1:1 die MEL-Befehle wider:

```python import maya.cmds as cmds

cmds.polyCube(w=2, h=2, d=2)

cmds.rename("pCube1", "meinWuerfel")

cmds.setAttr("meinWuerfel.ty", 3.0) tx = cmds.getAttr("meinWuerfel.tx") print(f"TX Position: {tx}")

for i in range(5): cube = cmds.polyCube()[0] cmds.setAttr(f"{cube}.tx", i * 2.5)

selection = cmds.ls(selection=True) for obj in selection: cmds.setAttr(f"{obj}.visibility", 0) ```

PyMEL: Objektorientiertes Scripting

PyMEL (import pymel.core as pm) ist eine höhere Abstraktion, die Maya-Nodes als Python-Objekte repräsentiert:

```python import pymel.core as pm

cube = pm.polyCube()[0] cube.translateX.set(5.0) print(cube.translateX.get())

locator = pm.spaceLocator() cube.translateX.connect(locator.translateX) ```

PyMEL ist bei komplexen Tool-Entwicklungen bevorzugt, da es pythonischer ist und weniger Fehleranfälligkeit bei Typkonvertierungen aufweist.

Maya Python API (OpenMaya)

Für Performance-kritische Operationen steht die Maya API (import maya.api.OpenMaya as om) zur Verfügung. Sie ermöglicht direkten Zugriff auf Mayas interne C++-Klassen über Python-Bindings. Typische Einsatzfälle:

  • Benutzerdefinierte Deformer- oder Shader-Node-Typen (MPxDeformerNode, MPxNode)
  • Hochperformante Batch-Operationen auf Geometriedaten
  • Maya-Plugins entwickeln

Shelf-Buttons und Hotkeys

Skripte können als Shelf-Buttons in der Toolbar gespeichert werden: Script ausführen, dann per Drag & Drop in die Shelf ziehen. Über das Hotkey-Editor können auch Tastenkürzel mit Skripten belegt werden.

Batch-Rendering & Headless-Ausführung

Maya kann im Hintergrund ohne GUI gestartet werden: ``bash maya -batch -file myScene.ma -command "Render -s 1 -e 100;" ``

Für Python-Batch-Operationen: ``bash mayapy /path/to/script.py ``

mayapy ist ein standalone Python-Interpreter mit Maya-Modulen, ideal für Pipeline-Tools, die außerhalb von Maya ausgeführt werden sollen.

Callback-System und Events

Maya bietet ein Event-System, über das Skripte auf interne Events reagieren können: ```python import maya.cmds as cmds

def onSceneOpen(clientData): print("Neue Szene wurde geöffnet")

cmds.scriptJob(event=["SceneOpened", onSceneOpen]) ```


Beispiele

Batch-Umbenennung: Alle Objekte mit dem Prefix "imported" sollen in "asset" umbenannt werden. Ein 10-Zeilen-Python-Skript selektiert alle Objekte per cmds.ls(dag=True), filtert nach dem Prefix und benennt um.

Asset-Export-Tool: Ein Studio entwickelt ein Python-GUI-Tool (mit maya.cmds.window oder PySide2/Qt), das den Export von Maya-Assets als FBX nach festgelegten Konventionen automatisiert (Pivot-Reset, Freeze Transforms, Delete History, Export).

Automatisches Rigging: Ein Python-Skript platziert Joints entlang einer ausgewählten Kurve, bindet sie an ein Mesh und erstellt IK-Handles – in Sekunden statt Stunden.


In der Praxis

MEL/Python-Scripting ist eine Kernkompetenz für Technical Artists und Pipeline-TDs (Technical Directors) in VFX-Studios. Typische Aufgaben:

  • Pipeline-Integration: Import/Export-Tools, Asset-Validation, Naming-Convention-Checker
  • Rigging-Automatisierung: Rig-Builder-Scripts für Standardkomponenten
  • Render-Farm-Vorbereitung: Szenen-Checks, AOV-Setup, Render-Settings-Automation
  • UI-Tools: Benutzerdefinierte Toolbars und Dialoge mit PyQt/PySide2

In der Industrie ist Python die bevorzugte Sprache; MEL wird hauptsächlich für Legacy-Code und schnelle One-Liner-Operationen direkt im Script-Editor verwendet.


Vergleich & Abgrenzung

SpracheStärkeEinsatz
MELMaya-nativ, alles funktioniert sofortSchnelle Einzel-Befehle, Legacy
Python (maya.cmds)Standard, große CommunityNeue Tools, Pipeline-Skripte
PyMELObjektorientiert, pythonischKomplexe Tool-Entwicklung
OpenMaya APIMaximale PerformanceCustom Nodes, Plugins

Häufige Fragen (FAQ)

Soll ich MEL oder Python lernen? Für neue Projekte eindeutig Python. MEL-Kenntnisse sind hilfreich um bestehende Skripte zu lesen, aber Python ist universeller, wird außerhalb von Maya verwendet und hat eine weit größere Lern-Ressourcen-Basis.

Kann ich externe Python-Bibliotheken (numpy, pandas) in Maya verwenden? Ja, wenn sie für die Python-Version installiert sind, die Maya intern verwendet (prüfen: import sys; print(sys.version) im Script Editor). Autodesk integriert seit Maya 2022 Python 3.

Ist PyMEL langsamer als maya.cmds? Ja, PyMEL hat durch die Objekt-Wrapping einen gewissen Overhead. Für Performance-kritische Loops ist maya.cmds oder die OpenMaya-API vorzuziehen.


Verwandte Einträge


Weiterführend

  • Lanier, Lee (2015): Maya Python for Games and Film. Focal Press.
  • Autodesk Inc. (2025): Maya Python API 2.0 Documentation. Online: help.autodesk.com/maya
  • Gould, Adam (2012): Practical Maya Programming with Python. Packt Publishing.
  • Kalinins, Nathan (2020): The VFX Pipeline: Technical Art & Pipeline Tools. Focal Press.
← 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