7 days of unlimited AE and Premiere Pro templates & videos - for free!* Unlimited asset downloads! Start 7-Day Free Trial
Advertisement
  1. 3D & Motion Graphics
  2. Maya

Prozedurale Modellierung mit MEL-Skript in Maya - Tag 1

Read Time: 10 mins

German (Deutsch) translation by Władysław Łucyszyn (you can also view the original English article)

In diesem Tutorial werden die aufregenden Möglichkeiten zum Modellieren mit der MEL-Skriptsprache von Maya vorgestellt. In diesem ersten Teil lernen wir die Grundlagen von MEL-Befehlen kennen und erstellen zwei prozedurale Modellskripte, die in Ihren eigenen Arbeitsabläufe nützlich sein können.

Unter die Haube schauen

Die Maya Embedded Language (oder MEL) ist die Befehlsstruktur, mit der Maya nahezu alles erstellt, was Sie auf dem Bildschirm sehen. Jedes Mal, wenn Sie ein Objekt erstellen oder einen Scheitelpunkt verschieben, wird ein MEL-Befehl aufgerufen, um diese Aktion auszuführen. Sogar alle Fenster, Regale, Registerkarten, Menüs und Editoren werden mithilfe von MEL-Skripten generiert und organisiert. Wenn Sie möchten, können Sie die Maya-Benutzeroberfläche nur mit MEL komplett neu erstellen, sodass die Skriptsprache ein unglaublich leistungsfähiges Werkzeug ist, das Sie als Künstler zur Hand haben. Wenn Sie mithilfe von Skripten die zeitaufwändigsten Teile Ihrer Arbeit automatisieren können, können Sie so viel mehr Zeit damit verbringen, Ihre Arbeit hervorzuheben.

Der beste Ort, um mehr über bestimmte MEL-Befehle zu erfahren, ist der Abschnitt Technische Dokumentation der Maya-Dokumente. Der beste Weg, sich mit den Konzepten hinter MEL vertraut zu machen, besteht darin, sie in Aktion zu sehen. Lassen Sie uns in das System eintauchen und mit unserem ersten Skript beginnen.


Skript Eins

Das erste Skript erstellt ein quadratisches Rohr, dessen flache Seiten auf der X- und Z-Achse ausgerichtet sind. Wir werden das Skript erstellen und eine Regalschaltfläche erstellen, um darauf zuzugreifen.


Schritt 1

Schreiben Sie Ihren Pseudocode auf.

Pseudocode ist eine einfache englische Form eines Skripts, in der alle wichtigen Schritte aufgeführt sind. Wenn Sie mit der Arbeit an komplexen Skripten beginnen, ist es sehr wichtig, Ihre Skripte zu skizzieren, bevor Sie beginnen. Für uns könnte der Pseudocode so aussehen:


Schritt 2

Öffnen Sie den Skripteditor, indem Sie auf die Schaltfläche unten rechts im Maya-Hauptfenster klicken.

Im Skripteditor befinden sich zwei Hauptfenster, das Statusfenster oben und das MEL/Python-Fenster unten. Stellen Sie sicher, dass die Registerkarte MEL ausgewählt ist.


Schritt 3

Zeichnen Sie ein "Pipe" -Primitiv in der Maya-Szene.

Ähnliches sollte im Statusfenster des Skripteditorfensters angezeigt werden:


Schritt 4

Kopieren Sie den Befehl polyPipe aus der Statuszeile und fügen Sie ihn in den Skript-Editor ein.

Sie sollten ein genaues Duplikat der ersten PolyPipe erhalten, diesmal genau am Ursprung.


Schritt 5: Aufschlüsselung des Codes

Der gerade verwendete polyPipe-Befehl ist einer von Tausenden von MEL-Befehlen, die Ihnen zur Verfügung stehen. Ihre Struktur (was Programmierer Syntax nennen) ist für jeden Befehl ziemlich gleich:

Der erste Teil ist der Befehl selbst, und die Flags (gekennzeichnet durch das Bindestrichzeichen) definieren bestimmte Attribute des Befehls. Befehle, die bereits vorhandene Objekte bearbeiten, erfordern häufig ein Ziel, das dem Befehl mitteilt, welches Objekt geändert werden soll. Für jeden Befehl ist außerdem ein Semikolon erforderlich, das das Ende des Befehls markiert.

Im Beispiel von polyPipe definieren die drei folgenden Flags den Radius, die Höhe und die Dicke des erstellten Rohrs.

Wir werden später im Tutorial ausführlich auf andere Flags eingehen, wenn wir das Skript zusammenstellen.

Der prozedurale Modellierungsworkflow in MEL ist im Wesentlichen nur eine clevere Verkettung von Befehlen, die in Maya Geometrie erstellen oder bearbeiten.


Schritt 6

Löschen Sie die ursprüngliche Pipe und wählen Sie die gerade erstellte mit dem Befehl MEL aus.


Schritt 7

Stellen Sie die Anzahl der Achsenunterteilungen auf vier ein und wählen Sie einige „schöne“ Ganzzahlen für Höhe, Radius und Tiefe. Wir werden diese später ändern und sie werden das Beispiel einfacher machen.

Diese Einstellungen können mit dem Befehl polyPipe zum Zeitpunkt der Erstellung des Objekts mithilfe von Flags angepasst werden. Machen Sie sich also keine Gedanken darüber, was der Skripteditor Ihnen bietet.


Schritt 8

Drehen Sie das Objekt auf der Y-Achse um 45 Grad

Wenn Sie das Objekt von Hand drehen, sollte das Ergebnis im Skripteditor ungefähr so aussehen:

Wenn Sie das Objekt durch Eingabe des Rotationswerts drehen, lautet das Ergebnis:

Im Moment verwenden wir den Befehl drehen in unserem Skript. In späteren Tutorials verwenden wir setAttr, um mit bestimmten Objektattributen zu arbeiten.


Schritt 9

Bewegen Sie das Rohr so, dass es auf der Gitterebene liegt

Wenn Sie das Objekt von Hand verschieben, sollte der Code im Skripteditor wie folgt lauten:

Wenn Sie das Objekt verschieben, indem Sie den y-Wert eingeben:

Auch hier verwenden wir den Befehl move anstelle von setAttr.


Schritt 10

Drücken Sie auf „Einfügen“ und bewegen Sie den Drehpunkt des Rohrs nach unten zum Ursprung.

Auf diese Weise können Sie das Rohr problemlos von einer Grundebene aus skalieren. Dies ist der Code, den ich im Skripteditor erhalte:

Beachten Sie, dass der Code hier zwei Ziele hat - polyPipe3.rotatePivot und polyPipe3.scalePivot. Dies bedeutet, dass der Code nur verwendet werden kann, wenn das betreffende Objekt den Namen polyPipe3 trägt. In späteren Tutorials werden wir dieses Problem mithilfe von Variablen beheben. Im Moment werden wir es jedoch mithilfe eines anderen Befehls umgehen, der dasselbe tut:


Schritt 11

Frieren Sie die Transformationen für das Objekt ein, indem Sie im Menü Ändern die Option Transformationen einfrieren auswählen.

Der Code im Skripteditor:

makeIdentity ist eine Möglichkeit, die Transformationen einzufrieren, aber es ist kein sehr intuitiv benannter Befehl. Maya verfügt über einige integrierte Skripte, die bestimmte Prozesse automatisieren, einschließlich des Einfrierens von Transformationen.


Schritt 12: Versuchen wir es noch einmal...

Gehen Sie im Skripteditor zu Verlauf und aktivieren Sie Echo Alle Befehle. Dies zwingt den Skripteditor, alle von Maya ausgeführten Befehle zu "echoieren" oder anzuzeigen, selbst wenn der Benutzer sie nicht aktiv aktiviert hat.


Schritt 13

Frieren Sie die Transformationen erneut ein und sehen Sie sich die Ausgabe des Skript-Editors an. Sie sehen den folgenden Code:

FreezeTransformations ist ein Maya-Hilfsskript, ein "Laufzeitbefehl", der makeIdentity aufruft. Im Gegensatz zu normalen Maya-Befehlen beginnen Laufzeitbefehle im Allgemeinen mit Großbuchstaben. Seien Sie vorsichtig, wenn Sie diese Skriptbefehle in Ihrem Code verwenden, da sie möglicherweise nicht bei allen Installationen von Maya auf dieselbe Weise unterstützt werden. Bei FreezeTransformations besteht der Nachteil darin, dass der Befehl die Werte verwendet, die im Dialogfeld Freeze Transform-Optionen festgelegt wurden. Diese können je nach dem letzten Mal, als Sie sie verwendet haben, unterschiedlich festgelegt werden. Ich ändere die Einstellungen selten von den Standardeinstellungen, daher kann ich FreezeTransformations und andere Hilfsskripte problemlos verwenden. Dies ist eine persönliche Präferenz, aber ich bin der Meinung, dass die Bequemlichkeit der Verwendung von Laufzeitbefehlen das Risiko übersteigt, dass ein Skript beschädigt wird. Es ist jedoch wichtig zu verstehen, dass Laufzeitbefehle in komplexen Skripten Probleme verursachen können. Die Verwendung eines Skripts, das auf Maya-Dialogfeldern basiert, ist eine schlechte Praxis, wenn Sie das Skript an andere Personen weitergeben möchten. Abgesehen davon ist die Verwendung von Echo All Commands eine gute Möglichkeit, die Hintergrundskripte und -befehle zu finden, die nicht in der technischen Dokumentation aufgeführt sind.


Schritt 14: Alles zusammenfügen

Bisher haben wir fünf Befehle durchlaufen, die zum Erstellen unseres Objekts zusammengestellt werden können. Lassen Sie uns diese Befehle mit unserem Pseudocode ausrichten und die spezifischen Flags der einzelnen Befehle betrachten. Jede Flagge hat zwei "Modi", einen langen Namen und eine Kurzschrift. Normalerweise besteht die Kurzschrift nur aus einem oder zwei Buchstaben. Ich persönlich bevorzuge es, wenn immer möglich, die Kurzschrift zu verwenden, aber die Verwendung des vollständigen Namens kann für Anfänger hilfreich sein und macht Ihren Code für Nicht-Skripter besser lesbar. Lassen Sie uns die Befehle aufschlüsseln:

Relevante Flags:

  • -radius (-r) definiert den Radius des Rohrs
  • -height (-h) definiert die y-Höhe
  • -thickness (-t) definiert die Dicke des PolyPipe, gemessen von der Außenkante des Radius nach innen
  • -subdivisionsAxis (-sa) definiert, wie viele Seiten das PolyPipe hat

Relevante Flags:

  • -relative (-r) dreht das Objekt relativ zu seiner aktuellen Position
  • -rotateY (-y) stellt die Drehung auf der y-Achse ein

Relevante Flags:

  • -relative (-r) verschiebt das Objekt relativ zu seiner aktuellen Position

Der Befehl move verwendet hier eine etwas andere Syntax als der Befehl rotate. 0 1 0 ist eine Abkürzung für "0 in x übersetzen", "1 in y übersetzen" und "0 in z übersetzen". MEL ist eine sehr flexible Sprache und hat oft mehr als eine Möglichkeit, genau dasselbe zu tun. In diesem Fall hätten wir auch Folgendes tun können:

Sie haben die Wahl, und ein großer Teil der Skripterstellung besteht darin, Ihre eigenen Vorlieben und Stile zu entwickeln.

Relevante Flags:

  • -worldSpace (-ws) bewegt sich zu einer absoluten Position im Weltraum
  • -rotationPivots (-rp) verschieben die Drehzapfen in x-, y- und z-Richtung
  • -scalePivots (-sp) verschiebt die Scale-Pivots in x-, y- und z-Richtung

xform hat eine große Anzahl von Flags und kann für eine große Anzahl von Funktionen verwendet werden. Wir werden diesen auf jeden Fall in zukünftigen Tutorials wiedersehen.
//die Transformationen des Objekts einfrieren
FreezeTransformations;


Schritt 15

Fügen Sie alle Befehle in den Skripteditor ein. Das sollten Sie haben:


Schritt 16

Markieren Sie den Code im Skripteditor und ziehen Sie das Skript mit der mittleren Maus in das Regal "Polygone". Dadurch wird ein benutzerdefiniertes Regalsymbol erstellt, dem Ihr Skript zugeordnet ist. Jedes Mal, wenn Sie auf diese Schaltfläche klicken, wird das Skript ausgeführt.


Schritt 17

Um der Regalschaltfläche eine benutzerdefinierte Beschriftung hinzuzufügen, greifen Sie auf den Regaleditor zu, indem Sie auf den nach unten gerichteten Pfeil ganz links im Fenster klicken und ihn gedrückt halten. Suchen Sie im Regal-Editor Ihre neu erstellte Schaltfläche und fügen Sie eine Bezeichnung und einen Symbolnamen hinzu. Der Symbolname sollte normalerweise weniger als fünf Zeichen enthalten. Herzliche Glückwünsche! Sie haben jetzt Ihr erstes MEL-gesteuertes Modellierungsskript fertiggestellt.


Skript 2

Nachdem wir die Seile gelernt haben, wollen wir ein weiteres ähnliches Beispiel durchgehen. Hier wenden wir das bereits Gelernte an und erstellen ein grundlegendes "abgerundetes Würfel" -Modell.


Schritt 1

Schreiben Sie Ihren Pseudocode auf.


Schritt 2

Erstellen Sie den Befehl Polygonwürfel

Relevante Flags:

  • -width (-w)
  • -height (-w)
  • -depth (-w)
  • -subdivisionsX (-sx)
  • -subdivisionsY (-sy)
  • -subdivisionsZ (-sz)

Schritt 3

Erstellen Sie die Befehle "Zur Grundebene verschieben", "Drehpunkte verschieben" und "Transformationen einfrieren", genau wie im vorherigen Skript.


Schritt 4

Verwenden Sie einen Befehl, um alle Kanten des Würfels auszuwählen. Es gibt verschiedene Möglichkeiten, dies zu tun. Da das Objekt bereits ausgewählt ist, als MEL es generiert, verwende ich dazu gerne eines von Mayas Hilfsskripten.


Schritt 5

Verwenden Sie einen Abschrägungsbefehl, um neue Kanten auf Ihrem Würfel zu erstellen.

Relevante Flags:

  • -offsetAsFraction (-oaf) Wenn true, wird der Abschrägungsbetrag durch einen Bruchteil der Länge benachbarter Kanten bestimmt.
  • -offset (-o) bestimmt die Stärke der hinzuzufügenden Abschrägung
  • -segments (-sg) Die Anzahl der Kanten, die zu den abgeschrägten Kanten hinzugefügt werden sollen
  • -fillNgon (-fn) unterteilt bei true die Ecken, an denen die Abschrägung n-seitige Flächen erzeugt
  • -mergeVertices (-mv) führt bei true die erstellten Scheitelpunkte der gefüllten n-seitigen Flächen zusammen
  • -smoothingAngle (-sa) Legt fest, in welchem Winkel die Abschrägung Normalen härten soll

Schritt 6

Alles zusammen:


Schritt 7

Erstellen Sie Ihr Regalsymbol, benennen Sie es um und wir sind fertig!


Advertisement
Did you find this post useful?
Want a weekly email summary?
Subscribe below and we’ll send you a weekly email summary of all new 3D & Motion Graphics tutorials. Never miss out on learning about the next big thing.
Advertisement
Scroll to top
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.