この項では、有効な式の技法についてまとめました。
この項では、アニメート時にさまざまな状況で役立つと思われる式を紹介します。
[ Radius * cos(360*Time), Radius * sin(360*Time), 0 ]
Time は、NT や S など、定義済みの時間変数の 1 つです。
2 つの Radius に別々の値を指定すると、楕円パスができます。
0 (ゼロ)以外の値を Z コンポーネントに指定すると、パスは平面ではなくなります。
[X, Y, Z] + Position
Position は、2 番目のオブジェクトの位置コントローラです。
ベクトル[X, Y, Z]は、2 番目のオブジェクトからのオフセットです。[0,0,0]の場合、2 つのオブジェクトが同じ位置を占めています。ここにはベクトル式を指定することもできます。その場合は、オブジェクトそのものの動きを指定します。
(Position1 + Position2) / 2
Position1 と Position2 は、2 つのオブジェクトの位置コントローラです。
除数 2 により、オブジェクトは 2 つの他のオブジェクトの間の半分の位置に配置されます。他の値は、オブジェクトを他の位置に配置するための値です。
(1+sin(360*Time))/2 * (Pos1-Pos2) + Pos2
Time は、NT や S などの定義済みの値の 1 つを使用します。Pos1 と Pos2 は、他の 2 つのオブジェクトの位置コントローラです。
補助式(1+sin(360*Time))/2 は、時間を追って 0 と 1 の間で振動する値です。(Pos1-Pos2)は他の 2 つのオブジェクトの間のベクトルです。2 つを掛けて、Pos2 をオフセットとして加算すると、オブジェクトがベクトル沿いに配置されます。
この式では、カメラ距離に基づいて、円柱内のセグメント数を変更します。この値は、円柱の[セグメント](Segments)作成パラメータに割り当てられます。
if ( (length(Camera-Myself) > 35), 3 + (50*Height) / length(Camera-Myself), MaxSegs)
Camera はカメラの位置コントローラ、Myself は円柱の位置コントローラ、Height (= 70)は円柱の高さ、MaxSegs (= 100)はセグメント数の最大値です。
カメラが近い場合、セグメント数が増えるので円柱がスムーズになり、カメラからの距離がある場合はスムージングには重点を置かずに、少ないセグメント数でレンダリング速度を優先します。
if() 関数では、最初の引数が真のとき 2 番目の引数を返し、真でない場合は、3 番目の引数を返します。この例では、カメラから円柱までの距離が 35 単位を超える場合、式でセグメント数を計算します。カメラが 35 単位以内の距離にある場合、セグメント数は MaxSegs 定数になります。
距離がしきい値の 35 に減少したので、2 番目の引数の値が採用されました。セグメント数は MaxSegs まで増加します。「3+」の加算では、たとえ除算で端数処理して 0 (ゼロ)になっても、円柱の最小セグメント数 3 が確保されます(セグメントは整数)。