最小値と最大値の区間で引数をリニア補間した結果を表す、0 ~ 1 の範囲に写像した比例値を返します。この関数を使用して、特定の時間範囲内で不透明度(Opacity)などのアトリビュートの値を 0 から 1 までリニアに大きくすることができます。
float linstep(float start, float end, float parameter)
start と end には、最小値と最大値を指定します。
parameter はリニア補間の対象となる値です。
parameter が start より小さい場合、linstep 関数は 0 を返します。
parameter が end より大きい場合、linstep 関数は 1 を返します。
パーティクル ツール(Particle Tool)を使用して、複数のパーティクルからなるパーティクル オブジェクト(名前は Cloud)を作成します。
さらに、オブジェクト単位のダイナミック不透明度(Opacity)アトリビュートをクラウド(Cloud)に追加します(パーティクル アトリビュートを操作するを参照)。次のランタイム エクスプレッションを作成します。
CloudShape.opacity = linstep(0,5,age);
このエクスプレッションが実行されると、パーティクルが出現した後の最初の 5 秒間で CloudShape の不透明度(Opacity)アトリビュートが 0 ~ 1 までリニアに増加します。Cloud オブジェクトはパーティクル ツール(Particle Tool)を使用して作成したため、アニメーションの 1 番目のフレームでパーティクルが出現します。
したがって、Cloud オブジェクトのすべてのパーティクルは、アニメーションの最初の 5 秒間で透明から不透明に変わります。
再生される 1 番目のフレームでは、パーティクルの存在時間(age)が 0 なので、linstep 関数は 0 を不透明度(Opacity)アトリビュートに代入します。0 という不透明度(Opacity)は、完全に透明な状態を表します。
2 番目以降のフレームでは、不透明度アトリビュートの値が比例的に増加します。パーティクルの存在時間が 5 に達すると、linstep 関数は 1 を不透明度アトリビュートに代入します。1 の値は完全に不透明な状態を表します。
存在時間が 5 を超えると、linstep 関数は 1 を返します。不透明度は 100% 不透明のままです。次の表に、不透明度アトリビュートに代入される値の例を示します。
存在時間(Age) | 不透明度(Opacity) |
---|---|
0.0417 | 0.0083 |
0.0833 | 0.0166 |
0.125 | 0.025 |
0.1667 | 0.0333 |
0.2083 | 0.0417 |
2.5 | 0.5 |
1.0 | 0.2 |
3.75 | 0.75 |
5 | 1 |
5.041 | 1 |
5.083 | 1 |
10 | 1 |
この表で分かるとおり、パーティクルが出現した後の最初の 5 秒間で不透明度の値はリニアに大きくなります。指定された 0 ~ 5 秒の age 範囲の中間地点では、不透明度は 0.5 で、3/4 地点では 0.75、5 秒の地点では 1 です。5 秒を過ぎると不透明度は 1 のままになります。
ランタイム エクスプレッションを次のように変更します。
CloudShape.opacity = linstep(5,10,age);
パーティクルの存在時間が 5 秒から 10 秒に増えると、不透明度(Opacity)アトリビュートが 0 から 1 にリニアに増加するようになります。
ランタイム エクスプレッションを次のように変更します。
particleShape1.opacity = 1-linstep(0,5,age);
パーティクルが出現した後の最初の 5 秒間で、不透明度(Opacity)アトリビュートは 1 から 0 にリニアに小さくなります。1 から linstep (0, 5, age)を引くことによって、パーティクルは不透明から透明に変わるようになります。