エルミートカーブに沿った値を返します。hermite 関数を使用して、たとえば、オブジェクトをカーブに沿ってスムーズに動かすことができます。下記の例で示すように、hermite 関数の引数を変更すると、さまざまなシェイプのカーブを作成することができます。
vector hermite(vector start, vector end, vector tan1, vector tan2, float parameter)
float hermite(float start, float end, float tan1, float tan2, float parameter)
start は、カーブの始点です。
end は、カーブの終点です。
tan1 は、カーブが始点から離れるときに、カーブの方向とシェイプを指示する接線ベクトルです。この接線ベクトルの始点はカーブの始点の位置にあります。
tan2 は、カーブが終点に近づくときの、カーブの方向とシェイプを指示する接線ベクトルです。この接線ベクトルの始点はカーブの終点の位置にあります。
parameter は、0~1 の範囲の浮動小数点数(linstep 関数の戻り値など)です。
2 番目の形式では、引数と戻り値が 1 次元空間にあります。
原点に位置する 1 つの球からなる dust というオブジェクトを作成します。このオブジェクトをアニメーション再生の最初の 4 秒間で短い上向きカーブに沿って動かすため、次のようなランタイム エクスプレッションを作成することができます。
dust.position = hermite(<<0,0,0>>,<<2,2,0>>, <<3,0,0>>, <<0,3,0>>, linstep(0,4,time));
アニメーションを再生すると、オブジェクトが始点 <<0,0,0>> からカーブに沿って終点 <<2,2,0>> まで移動します。接線ベクトル <<3,0,0>> は、カーブが始点から遠ざかるときの方向とシェイプを指示します。接線ベクトル <<0,3,0>> は、カーブが終点に近づくときの方向とシェイプを指示します。
アニメーション時間が 0 秒から 4 秒に延びると、オブジェクトが linstep 関数で定義されるカーブに沿って移動します(詳細については、linstep を参照)。
次の図に、hermite 関数の引数と、生成されたパス カーブを示します。
例 1 のエクスプレッションで、3 番目の引数を <<6,0,0>> に変更します。
dust.position = hermite(<<0,0,0>>,<<2,2,0>>, <<6,0,0>>, <<0,3,0>>, linstep(0,4,time));
tan1 ベクトルが長いため、パス カーブの傾きが大きくなります。
次のようにエクスプレッションを変更すると、dust オブジェクトが S 字形のパターンを描いて移動するようになります。
dust.position = hermite(<<0,0,0>>,<<2,0,0>>, <<0,3,0>>, <<0,3,0>>, linstep(0,4,time));
tan1 ベクトル <<0,3,0>> は、カーブが始点から遠ざかるときの方向を Y 軸の正方向に設定します。tan2 ベクトル <<0,3,0>> は、カーブが終点に近づくときの方向を Y 軸の正方向に設定します。
カーブの始点から終点の間の値が補間され、S 字形のパターンが生成されます。
例 3 のエクスプレッションで、4 番目の引数を <<0,-3,0>> に変更します。
dust.position = hermite(<<0,0,0>>,<<2,0,0>>, <<0,3,0>>, <<0,-3,0>>, linstep(0,4,time));
dust オブジェクトが半円周に近い軌道を描いて移動するようになります。
tan1 ベクトル <<0,3,0>> は、カーブが始点から遠ざかるときの方向を Y 軸の正方向に設定します。tan2 ベクトル <<0,-3,0>> は、カーブが終点に近づくときの方向を Y 軸の負方向に設定します。
例 4 のエクスプレッションで、3 番目の引数を <<0,10,0>> に変更します。
dust.position = hermite(<<0,0,0>>,<<2,0,0>>, <<0,10,0>>, <<0,-3,0>>, linstep(0,4,time));
tan1 ベクトルが長くなったため、始点から上昇するときのパス カーブの傾きが大きくなります。tan2 ベクトルの Y 要素は tan1 ベクトルの Y 要素よりマグニチュードが小さいため、終点に近づくにつれて、パス カーブの傾きが小さくなります。tan1 ベクトルの Y 要素が 3 から 10 に増加しているため、パス カーブの Y 方向への上昇度合いが前の例よりも大きくなっています。