smoothstep
 
 
 

最小値と最大値の区間で引数をリニア補間した結果を表す、0 ~ 1 の範囲に写像した比例値を返します。smoothstep 関数を使用すると、不透明度(Opacity)などのアトリビュートの値を 0 から 1 までノンリニアに大きくすることができます。

smoothstep 関数は linstep 関数と機能が似ていますが、最小値と最大値の間の中央付近で値がす速く大きくなります。smoothstep 関数では、最小値と最大値の間でエルミート(hermite)の補間アルゴリズムが使用されます。

float smoothstep(float start, float end, float parameter)

start と end には、最小値と最大値を指定します。

parameter は、ノンリニア補間の対象となる値です。

parameter が start より小さい場合、linstep 関数は 0 を返します。

parameter が end より大きい場合、linstep 関数は 1 を返します。

次の図に、時間の経過に伴う smoothstep と linstep の戻り値の違いを示します。

パーティクル ツールを使用して、複数のパーティクルからなるパーティクル オブジェクト(名前は Cloud)を作成します。

さらに、ダイナミックなオブジェクト単位の不透明度(Opacity)アトリビュートをクラウド(Cloud)に追加します( パーティクル アトリビュートを操作するを参照)。次のランタイム エクスプレッションを作成します。

CloudShape.opacity = smoothstep(0,5,age);

このエクスプレッションが実行されると、パーティクルが出現した後の最初の 5 秒間で CloudShape不透明度(Opacity)アトリビュート値が 0 ~ 1 までノンリニアに大きくなります。このため、Cloud オブジェクトのすべてのパーティクルは透明から不透明に変わります。0 ~ 5 秒の間の中央である 2.5 秒付近で、変化の度合いが急に大きくなります。

linstep 関数の説明も参照して、同様の例と比較してください。