
Expressions („Ausdrücke") sind mathematische Gleichungen, einfache Verbindungen oder komplexe Scripts für Animationen. Sie berechnen Attribute für Geometrien, Texturen, Lichter oder Partikelsysteme. In den meisten Fällen werden die Werte bei jedem Frame neu berechnet. Einfache Expressions können ohne umfassende Programmierkenntnisse verwendet werden. Bereits einfache Scripts können bei Animationsaufgaben hilfreich sein. Diese Grundlage versucht allgemeine Regeln und Verfahrensweisen softwareunabhängig aufzuzeigen. Die Anwendungsbeispiele zeigen MEL scripting (Maya).
Skriptsprachen für Expressions:
Maya: MEL. MEL script
Cinema: Coffe
3dStudio: Max script.
nurbsSphere1.translationX = time;
Der Kugel wird für den Wert translationX der Wert time zugewiesen. "Time" ist ein programminternes Zählwerk, welches je nach Voreinstellungen (Pal, NTSC) Sekunden ausgibt. So wird bei der Voreinstellung Pal / 25 fps der Nurbs-Kugel bei Frame 25 ein Wert von 1 für den Wert translationX zugewiesen.
![]() |
Die Abbildung zeigt eine einfache Expression in Maya: (a) Hypergraph: Hierarchische Darstellung der einzelnen Verknüpfungen. (b) ScriptEditor in Maya: Scripts und Expressions können in den eigenen Editor oder in externen Editoren geschrieben werden. Der Sekundenzeiger hat bei Frame 25 einen Rotationswert von -6. Mit der Expression -time * 6 bewegt sich der Sekundenzeiger korrekt. Der Minutenzeiger und der Stundenzeiger werden daraus berechnet. Einfache Expression: Uhrwerk | swf | 80 kb |
![]() |
Im folgenden Beispiel wird das Drehen der Räder über eine Expression berechnet. Die Räder werden durch Pfad-Animation bewegt. Der Wert motionPath.uValue erstreckt sich von 0 = Anfangspunkt bis 1 = Endpunkt der Pfad-Animation. Zuerst wird die Variable $pi , $Vradius (Radius des Rades) und $Vlength (Gesamte Weglänge) definiert. Der aktuell zurückgelegte Weg wird durch eine Multiplikation von "Gesamte Weglänge" und motionPath.uValue berechnet. Die aktuelle Rotation wird so berechnet, dass der aktuell zurückgelegte Weg durch den Umfang des Rades dividiert wird. Multipliziert mit -360 ergibt die Rotation des Rades zum aktuell zurückgelegten Weg. |
Expessions sind besonders bei Partikelsimulationen hilfreich. Mit wenig mathematischen Grundkenntnissen lassen sich eine Vielzahl an Parametern berechnen. Im folgenden Beispiel werden Particel-Sprites mit Expressions berechnet.
Bei Partikelsimulationen in Maya werden generell zwei Arten von Partikel-Expressions unterschieden:
Creation Expression / Birthtime Expression: Werden bei der Geburt der Partikel berechnet.
Runtime Expression: Werden Frame für Frame für jedes einzelne Partikel kalkuliert. Eine große Anzahl von Partikel verursacht folglich lange Berechnungszeiten.
![]() |
Im folgenden Beispiel wird ein Rauchwolke für eine Cartoonrakete erstellt. Dabei werden Expressions verwendet, um die Partikel zu Drehen und zu Skalieren. |
![]() | gestreuter Partikelausstoß ohne Expression |
![]() | Die einzelnen Partikel bekommen bei der Geburt für den Wert spriteTwistPP (Sprite - Rotation) einen Zufallswert zwischen -45 und 45. Creation Expression: |
![]() | Im nächsten Schritt werden die Partikel mit einer Runtime Expression gedreht. Beim nächsten Frame wird der Wert 10 hinzugezählt. Dadruch drehen sich alle Partikel mit gleicher Geschwindigkeit in die gleiche Richtung. Runtime Expression: |
![]() | Durch eine if-Schleife wird die Rotation variiert. Da bei der Creation Expression negative und positive Rotationswerte zufällig vergeben werden, drehen sich alle Partikel mit negativen Rotationswerten nach links, und alle anderen Partikel machen eine Rechtsdrehung. Runtime Expression: |
![]() | Alle Partikel bekommen bei der Geburt eine zufällige Sprite-Scalierung zwischen 0 und 0.1. Die Sprite-Skalierung wird in diesem Fall durch die zwei Werte spriteScaleYPP und spriteScaleXPP definiert. Creation Expression: |
![]() | Druch eine Sinus-funktion ändern sich die Skalierwerte periodisch. Runtime Expression: |
![]() | In diesem Beispiel wurde das obere Partikeslsystem 3x dupliziert. Bei den Duplikaten wurde die Phase der Sinuskurve variiert. |