In diesem Thema sind einige hilfreiche Techniken bei der Arbeit mit Ausdrücken zusammengefasst.
Dieses Thema umfasst eine Liste mit Ausdrücken, die Ihnen in verschiedenen Animationssituationen von Nutzen sein können.
[ Radius * cos(360*Time), Radius * sin(360*Time), 0 ]
wobei Zeit eine der vordefinierten Zeitvariablen wie etwa NT oder S ist.
Wenn Sie die zwei Radiuswerte ungleich machen, erhalten Sie einen elliptischen Pfad.
Wenn Sie eine Z-Komponente angeben, die ungleich Null ist, ist der Pfad nicht mehr planar.
[X, Y, Z] + Position
wobei Position der Positions-Controller des zweiten Objekts ist.
Der Vektor [X, Y, Z] kann ein Abstand vom zweiten Objekt sein. (Wenn der Vektor [0,0,0] beträgt, nehmen die zwei Objekte dieselbe Position ein.) Es kann sich auch um einen Vektorausdruck handeln, der Bewegung beinhaltet.
(Position1 + Position2) / 2
wobei Position1 und Position2 die Positions-Controller von zwei Objekten sind.
Der Divisor 2 schränkt das Objekt so ein, dass es genau auf halbem Weg zwischen den beiden anderen Objekten liegt. Mit anderen Werten wird das Objekt auf andere Positionen beschränkt.
(1+sin(360*Time))/2 * (Pos1-Pos2) + Pos2
wobei Zeit für eine der vordefinierten Zeitvariablen wie etwa NT oder S steht; Pos1 und Pos2 sind die Positions-Controller von zwei anderen Objekten.
Der Unterausdruck (1+sin(360*Zeit))/2 ist ein Wert, der sich über einen bestimmten Zeitraum zwischen 0 und 1 hin- und herbewegt. (Pos1-Pos2) ist der Vektor zwischen den zwei anderen Objekten. Durch Multiplizieren dieser zwei und anschließendes Addieren von Pos2 als Abstand wird das Objekt entlang dieses Vektors positioniert.
Durch diesen Ausdruck wird die Zahl der Segmente in einem Zylinder je nach Kameraabstand variiert. Er wird dem Erstellungsparameter "Segmente" des Zylinders zugewiesen.
if ( (length(Camera-Myself) > 35), 3 + (50*Height) / length(Camera-Myself), MaxSegs)
wobei Kamera der Positions-Controller der Kamera ist; Zylinderposition ist der Positions-Controller des Zylinders; Höhe (= 70) ist die Höhe des Zylinders; MaxSegm (= 100) ist die maximale Anzahl von Segmenten.
Ist die Kamera näher, erhält der Zylinder mehr Segmente, damit er nicht zu grob erscheint; ist die Kamera weiter entfernt, ist die Glättung weniger entscheidend, sodass die Zahl der Segmente verringert und somit das Rendern beschleunigt wird.
Die if()-Funktion gibt das zweite Argument aus, sofern das erste Argument wahr ist; andernfalls gibt sie das dritte Argument aus. In diesem Beispiel berechnet der Ausdruck die Zahl der Segmente, sofern sich die Kamera in einem Abstand von mehr als 35 Einheiten zum Zylinder befindet; beträgt jedoch der Abstand 35 Einheiten oder weniger, ist die Zahl der Segmente in MaxSegm konstant.
Die Werte im zweiten Argument werden so gewählt, dass die Zahl der Segmente in Richtung von "MaxSegm" steigt, wenn der Abstand zum Grenzwert 35 hin geringer wird. Durch die Addition "3+" ist gewährleistet, dass der Zylinder mindestens drei Segmente aufweist, selbst wenn die Division auf null gerundet wird (die Zahl der Segmente ist eine ganze Zahl).