linstep

最小値と最大値の区間で引数をリニア補間した結果を表す、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)を引くことによって、パーティクルは不透明から透明に変わるようになります。