最小値と最大値の区間で引数をリニア補間した結果を表す、0 ~ 1 の範囲に写像した比例値を返します。smoothstep 関数を使用すると、不透明度(Opacity)などのアトリビュートの値を 0 から 1 までノンリニアに大きくすることができます。
smoothstep 関数は linstep 関数と機能が似ていますが、最小値と最大値の間の中央付近で値がす速く大きくなります。smoothstep 関数では、最小値と最大値の間でエルミートの補間アルゴリズムが使用されます。
float smoothstep(float start, float end, float parameter)
start と end には、最小値と最大値を指定します。
parameter は、ノンリニア補間の対象となる値です。
parameter が start より小さい場合、linstep 関数は 0 を返します。
parameter が end より大きい場合、linstep 関数は 1 を返します。
次の図に、時間の経過に伴う smoothstep と linstep の戻り値の違いを示します。
パーティクル ツール(Particle Tool)を使用して、複数のパーティクルからなるパーティクル オブジェクト(名前は Cloud )を作成します。
さらに、オブジェクト単位のダイナミック不透明度(Opacity)アトリビュートをクラウド(Cloud)に追加します(パーティクル アトリビュートを操作するを参照)。次のランタイム エクスプレッションを作成します。
CloudShape.opacity = smoothstep(0,5,age);
このエクスプレッションが実行されると、パーティクルが出現した後の最初の 5 秒間で CloudShape の不透明度(Opacity)アトリビュート値が 0 ~ 1 までノンリニアに大きくなります。このため、Cloud オブジェクトのすべてのパーティクルは透明から不透明に変わります。0 ~ 5 秒の間の中央である 2.5 秒付近で、変化の度合いが急に大きくなります。
linstep 関数の説明も参照して、同様の例と比較してください。