In 3ds Max können Sie Parameterwerte durch mathematische Ausdrücke (statt durch konstante Werte) festlegen. So könnten Sie beispielsweise zur Darstellung der Zahl 144 den Ausdruck "24*6" verwenden.
Sie können mathematische Ausdrücke zur Steuerung der folgenden Objekteigenschaften verwenden:
Die Parametervernetzung, der Ausdruck-Controller und die numerische Ausdrucksauswertung arbeiten alle mit Ausdrücken, die in diesem Thema erläutert werden.
Ein Ausdruck ist eine mathematische Funktion, die einen Wert zurückgibt. Ausdrücke können Sie zur Steuerung der folgenden Szenenelemente verwenden:
Szenenelement | Berechenbare Eigenschaft |
---|---|
Erstellungsparameter | Jedem numerischen Erstellungsparameter |
Transformationen | Position [X, Y, Z] X-Rotation Y-Rotation Z-Rotation Skalierung [X%, Y%, Z%] |
Modifikatoren | Jedem numerischen Modifikatorparameter (einschließlich Erstellungsparametern) |
Materialien | Farben [R, G, B] Jedem numerischen Materialparameter |
Die folgenden Links führen zu den verschiedenen Abschnitten dieses Themas:
Welche Art von Wert von einem Ausdruck zurückgegeben wird, hängt von der Art des Controllers ab:
Enthält der Parameter einen Ganzzahlwert, rundet der Ausdruck den Gleitkommawert auf die nächste Ganzzahl.
In den folgenden Tabellen stehen p und q für Skalarwerte oder -ausdrücke, während V und W Vektorwerte oder -ausdrücke repräsentieren. (Das Zeichen "x" wird als Operator für das Vektor-Kreuzprodukt verwendet.)
Hierbei handelt es sich um die arithmetischen Operatoren für Skalarwerte:
Operator | Verwendung | Verwendung |
---|---|---|
+ | p+q | Addition |
- | p-q | Subtraktion |
- | -p | Vorzeichenänderung |
* | p*q | Multiplikation |
/ | p/q | Division |
^ | p^q | Potenz (p hoch q); |
** | p**q | ^ und ** sind die gleiche Rechenoperation |
Sie können auch logische (boolesche) Operatoren im Zusammenhang mit Skalarwerten verwenden. Alle diese Operatoren geben 1 zurück (falls wahr) und 0 (falls nicht wahr):
Operator | Verwendung | Verwendung |
---|---|---|
= | p=q | gleich |
< | p<q | kleiner als |
> | p>q | Größer als |
<= | p<=q | kleiner als oder gleich |
>= | p>=q | Größer als oder gleich |
| | p|q | Logisches OR: gibt 1 zurück, falls p oder q ungleich 0 ist; ansonsten gibt es 0 zurück |
& | p&q | Logisches AND: gibt 1 zurück, falls p und q ungleich 0 ist; ansonsten gibt es 0 zurück |
Für Vektoren mit einem variablen Namen können Sie einen speziellen Komponentenoperator (.) verwenden, um die drei Skalarkomponenten des Vektors anzugeben:
Verwendung | Verwendung |
---|---|
V.x | Erste Komponente (X) |
V.y | Zweite Komponente (Y) |
V.z | Dritte Komponente (Z) |
Die Operatoren für die Vektorarithmetik lauten wie folgt:
Operator | Verwendung | Verwendung |
---|---|---|
+ | V+W | Addition |
- | V-W | Subtraktion |
* | p*V | Skalarmultiplikation |
* | V*p | Skalarmultiplikation |
* | V*W | Punktprodukt |
X | VxW | Kreuzprodukt |
/ | V/p | Skalardivision |
Ausdrücke arbeiten mit acht Prioritätsstufen. Je höher der Operator in der Liste steht, desto früher wird die Auswertung dieses Operators durchgeführt.
Operator | Prioritätsstufe |
---|---|
- + | Monadische Operatoren wie beispielsweise in -8, +25 |
. | Komponenten-Operator, wie in V.x |
** ^ | |
X | Kreuzprodukt |
* / | |
+ - | |
= < > <= >= | |
| & |
Runde Klammern stellen einen Sonderfall dar. Es handelt sich hierbei um einen Gruppen- oder Unterausdrucks-Operator, der Ihnen das Überschreiben der Prioritätsreihenfolge der anderen Operatoren ermöglicht.
In Ausdrücken, die Sie für Ausdruck-Controller schreiben, werden Variablen durch symbolische Namen dargestellt. Sie erstellen diese, um konstante oder variable Werte in Ihre Ausdrücke aufzunehmen. Außerdem werden mehrere vordefinierte Variable bereitgestellt. Einige davon weisen einen konstanten Wert auf, andere können verschiedene Werte annehmen.
In Ausdrücken, die mit der Parametervernetzung und der numerischen Ausdrucksauswertung verwendet werden, können vordefinierte Variablen mit konstanten Werten verwendet werden.
Bei folgenden Variablen handelt es sich um vordefinierte Variable, die einen konstanten Wert haben (bei Variablennamen ist die Groß-/Kleinschreibung zu beachten):
Variablenname | Konstanter Wert | Verwendung |
---|---|---|
pi | 3.14159 | Verhältnis des Kreisumfangs zum Kreisdurchmesser |
e | 2.71828 | Basis von natürlichen Logarithmen |
TPS | 4800 | Ticks pro Sekunde. Ein Tick ist die Grundeinheit der Zeit für Animationen in 3ds Max. |
Dies sind die vordefinierten Variablen, die einen variablen, zeitbezogenen Wert haben (bei Variablennamen ist die Groß-/Kleinschreibung zu beachten):
Variablenname | Verwendung |
---|---|
F | Frame-Nummer. F entspricht für jedes Frame der laufenden Frame-Nummer (von null aufwärts). Der Frame-Bereich kann je nach Anzahl von Frames im aktiven Zeitsegment variieren. |
NT | Normalisierte Zeit. Gemäß Definition bewegt sich die normalisierte Zeit (NT) in einem Bereich von 0 bis 1 über das aktive Zeitsegment, und zwar unabhängig von der Frame-Anzahl im Segment. Wenn Sie einen Ausdruck auf NT basieren, wird sein Effekt genau einmal über den ganzen Bereich angewendet. Sie können NT auch mit einem Faktor multiplizieren, damit der Effekt des Ausdrucks so oft wie durch den Faktor angegeben wiederholt wird (z. B. bewirkt 2*NT, dass der Effekt zweimal auftritt). Auf NT basierende Ausdrücke werden schneller oder langsamer, wenn Sie die Länge des Zeitsegments ändern. |
S | Sekunden (verstrichene Zeit in Sekunden). Verstrichene Zeit wird vom ersten Frame bis zum aktuellen Frame gemessen. Der Sekundenbereich kann je nach Gesamtzeit des aktiven Zeitsegments variieren. |
T | Ticks (verstrichene Zeit in Ticks). 4800 Ticks entsprechen einer Sekunde. Verstrichene Zeit wird vom ersten Frame bis zum aktuellen Frame gemessen. Der Tick-Bereich kann je nach Gesamtzeit des aktiven Zeitsegments variieren. |
In der folgenden Liste sind die verfügbaren Funktionen für Ausdrücke aufgeführt. In dieser Liste stehen p, q und r für Skalarwerte oder Skalarausdrücke. V und W stehen für Vektorwerte oder Vektorausdrücke.
Zur Verwendung einer Funktion in einem Ausdruck geben Sie den Namen der Funktion und die dafür erforderlichen Argumente ein.
Sinus-, Kosinus- und Tangentenfunktionen nehmen einen Winkel in Grad und geben einen Gleitkommawert zurück. Bogenfunktionen nehmen einen Gleitkommawert und geben einen Wert in Grad zurück.
Funktion | Verwendung |
---|---|
sin(p) | Sinus |
cos(p) | Kosinus |
tan(p) | Tangens |
asin(p) | Arcussinus |
acos(p) | Arcuskosinus |
atan(p) | Arcustangens |
Hyperbolische Funktionen nehmen einen Gleitkommawert und geben einen Gleitkommawert zurück.
Funktion | Verwendung |
---|---|
sinh(p) | hyperbolischer Sinus |
cosh(p) | hyperbolischer Kosinus |
tanh(p) | hyperbolischer Tangens |
Funktion | Verwendung |
---|---|
radToDeg(p) | Winkel p gemessen als Bogenmaß wird in Grad umgerechnet |
degToRad(p) | Winkel p gemessen in Grad wird in Bogenmaß umgerechnet |
Funktion | Verwendung |
---|---|
ceil(p) | kleinste Ganzzahl, die größer als oder gleich p ist |
floor(p) | größte Ganzzahl, die kleiner als oder gleich p ist |
Funktion | Verwendung |
---|---|
ln(p) | natürlicher Logarithmus (Basis e) |
log(p) | allgemeiner Logarithmus (Basis 10) |
exp(p) | Exponentialfunktion exp(p)=e^p |
pow(p,q) | p hoch q (p^q) |
sqrt(p) | Quadratwurzel |
abs(p) | absoluter Wert |
min(p,q) | Minimum gibt den jeweils kleineren Wert von p und q zurück |
max(p,q) | Maximum gibt den jeweils größeren Wert von p und q zurück |
mod(p,q) | Rest der Teilung von p durch q |
Funktion | Verwendung |
---|---|
if(p then q else if r then s) | Basiert auf der üblichen "if/then/else"-Struktur (wenn/dann/andernfalls). Beispiel: if (X_Position<0) then 0 else if (X_Position>=0 and X_Position<=10) then X_Position*3 else 100 Dieser Ausdruck gibt 0 zurück, wenn der Wert der X-Position kleiner als 0 ist, sein Dreifaches, wenn er zwischen 0 und einschließlich 10 ist, und 100, wenn er größer als 10 ist. Die Ausdruckskomponente "else if" ist optional und kann ggfs. wiederholt werden, um mehrere verschiedene Bedingungen festzulegen. |
vif(c,V1,V2) | "Vektor-If" (wenn c wahr ist, wird V1 zurückgegeben, andernfalls V2). |
Funktion | Verwendung |
---|---|
length(V) | Länge von V |
comp(V,i) | i'te Komponente (I=0,1,2): comp([5,6,7],1)=6 |
unit(V) | ergibt einen Einheitsvektor in Richtung V |
Funktion | Verwendung |
---|---|
noise(p,q,r) | 3D-Rauschen: gibt eine zufällig generierte Position zurück. |
Die willkürlich gewählten Werte p, q und r werden als Ausgangszahlen für die Zufallsgenerierung verwendet. Sie können diese Werte erneut verwenden, um sicherzustellen, dass Noise() denselben Wert zurückgibt.