Cette rubrique répertorie certaines expressions utiles.
Cette partie répertorie certaines expressions couramment utilisées dans les animations.
[ Radius * cos(360*Time), Radius * sin(360*Time), 0 ]
où Time correspond à l’une des variables temps prédéfinies, telles que NT ou S.
Si les deux rayons sont différents, la trajectoire prend la forme d'une ellipse.
Si vous précisez une composante Z non nulle, la trajectoire n'est plus planaire.
[X, Y, Z] + Position
où Position correspond au contrôleur de position du second objet.
Le vecteur [X, Y, Z] peut être décalé par rapport au deuxième objet. S'il s'agit de [0,0,0], les deux objets occupent la même position. Il peut également s'agir d'une expression vectorielle qui spécifie un certain mouvement.
(Position1 + Position2) / 2
où Position1 et Position2 correspondent aux contrôleurs de position des deux objets.
En divisant l'expression par 2, vous placez l'objet à mi-chemin entre les deux objets. Une valeur différente place l'objet ailleurs.
(1+sin(360*Time))/2 * (Pos1-Pos2) + Pos2
où Time correspond à l’une des variables temps prédéfinies, telles que NT ou S et Pos1 et Pos2 correspondent aux contrôleurs de position des deux objets.
La sous-expression (1+sin(360*Time))/2 produit une valeur oscillant entre 0 et 1 dans le temps. (Pos1-Pos2) représente le vecteur entre les deux objets. La multiplication des deux, puis l'addition du décalage Pos2 place l'objet sur ce vecteur.
Cette expression modifie le nombre de segments d'un cylindre en fonction de la distance de la caméra. Elle est affectée au paramètre de création Segments du cylindre.
if ( (length(Camera-Myself) > 35), 3 + (50*Height) / length(Camera-Myself), MaxSegs)
Caméra désigne le contrôleur de position de la caméra ; Moi-même correspond au contrôleur de position du cylindre ; Hauteur (= 70) est la hauteur du cylindre ; SegsMax (= 100) est le nombre maximal de segments.
Lorsque la caméra est proche, un nombre important de segments contribue à lisser le cylindre; en revanche, lorsque la caméra est éloignée, le lissage est moins important et le rendu des segments (alors moins nombreux) est plus rapide.
La fonction if() renvoie son second argument si le premier argument est vrai; sinon, elle renvoie son troisième argument. Dans cet exemple, si la caméra est distante de plus de 35 unités du cylindre, l'expression calcule le nombre de segments; si elle est distante de 35 unités ou moins, le nombre de segments est égal à la valeur de la constante MaxSegs.
Les valeurs du second argument sont choisies de telle sorte qu'à mesure que la distance est ramenée au seuil de 35 unités, le nombre de segments augmente pour atteindre la valeur de la constante SegsMax. L'addition " 3+ " permet de s'assurer que le cylindre comporte toujours trois segments minimum, même si la division est arrondie à zéro (la valeur du paramètre Segments est un entier).