さまざまなパーティクル モーションを生成するには、位置(position)、速度(velocity)、加速度(acceleration)の各アトリビュートにベクトル値を代入します。これらのアトリビュートの操作例については、ランタイム エクスプレッションを記述するを参照してください。
運動物理学を明確に把握している場合を除いて、位置、速度、加速度の各アトリビュートを操作することは避けてください。
ランタイム エクスプレッションを使用してスムーズでランダムなモーションをパーティクルに与えるには、sphrand などの乱数関数を使用してパーティクル シェイプ(particle shape)の加速度アトリビュートに乱数を代入します。加速度の変化が急激な場合でも、常にスムーズなモーションが実現されます。
ランタイム エクスプレッションを使用して細かく揺れるランダムなモーションをパーティクルに与えるには、sphrand などの乱数関数を使用してパーティクル シェイプ(particle shape)の速度アトリビュートまたは位置アトリビュートに乱数を代入します。
乱数関数の使用方法の詳細については、乱数関数の基礎知識を参照 してください。
オブジェクトの位置、速度、加速度がエクスプレッションとダイナミック フィールドによって制御される場合は、エクスプレッションによる効果が最初に適用された後、ダイナミック フィールドのエフェクトが追加されます。
エクスプレッションをダイナミック フィールドの前後どちらで実行するかを設定するには、パーティクル オブジェクトを選択し、アトリビュート エディタ(Attribute Editor)を表示し、ダイナミクス後のエクスプレッション(Expressions After Dynamics)をオンまたはオフに設定します。
既定の設定の重力(gravity)フィールドに制御されて下降するパーティクルを想定します。重力フィールドによって、各パーティクルには Y 軸方向に 9.8 単位 / 秒の下方加速度が適用されます。すなわち、重力フィールドの既定の加速度は <<0,-9.8,0>> です。
さらに、このパーティクル用に次のようなランタイム エクスプレッションを作成します。
velocity = velocity + <<1,0,0>>;
各フレームを再生すると、最初にエクスプレッションの文に基づいてパーティクルの速度が計算されます。パーティクルの速度は X 軸方向に 1 単位 / 秒の割合で増加します。次に、重力加速度が速度に加算され、その結果に基づいてパーティクルの位置が計算されます。
もちろん、この計算過程はユーザには見えません。計算が完了して初めて、パーティクルが計算結果の位置に表示されます。
アニメーションを再生すると、エクスプレッションによってフレームごとに、定数 <<1,0,0>> がパーティクルの速度に加算されます。このため、時間の経過に伴って、X 軸方向の移動速度が増加します (増加する速度は加速度と呼ばれます)。
加速度アトリビュートの作用は、位置アトリビュートまたは速度アトリビュートの作用とは、重要な点で異なります。各フレームの前に、加速度アトリビュートは <<0,0,0>> に初期化されます。オーバー サンプル レベルが 2 以上である場合は、各タイムステップの前に加速度が初期化されます。
重力の影響を受けないパーティクル オブジェクト(5 つのパーティクルを含む)について次のランタイム エクスプレッションを作成したと仮定します。
acceleration = acceleration + <<0,1,0>>;
このエクスプレッションでは、フレームごとに加速度の値に <<0,1,0>> が加算されるのではなく、各パーティクルの加速度は一定の <<0,1,0>> に留まります。これは各フレームの前に加速度が <<0,0,0>> に初期化されるからです。
既定の設定の重力フィールドをパーティクル オブジェクトに適用した場合は、パーティクルの加速度が <<0,1,0>> + <<0,-9.8,0>> = <<0,-8.8,0>> になります。すなわち、上のエクスプレッションによって設定される加速度は、重力による下方加速度を減少させます。
上のエクスプレッションを次のように変更します。
acceleration = acceleration + sphrand(3);
各フレームの前に加速度が <<0,0,0>> に初期化されるため、この文は次の文と同じ結果になります。
acceleration = sphrand(3);
各フレームを再生すると、最初にエクスプレッションの文に基づいてパーティクルの加速度が計算され、各パーティクルの加速度に sphrand (3)関数の戻り値が代入されます。
sphrand (3)関数はベクトルを提供します。このベクトルの、ランダムに選択されたコンポーネントは、原点を中心にした半径 3 の球状の領域内に存在します。パーティクルはそれぞれ、異なるベクトル値を受け取ります。
最後に、重力フィールドの加速度がエクスプレッションの加速度(sphrand 関数の戻り値)に加算され、各パーティクルが計算結果の位置に表示されます。
エクスプレッション内の sphrand 関数によってランダムな値が生成されるため、各パーティクルの加速度は、重力加速度の方向やマグニチュードとは少しずつ異なります。sphrand 関数は各パーティクルについてフレームごとに実行され、各パーティクルの加速度はフレームごとに異なる値になります。
この例では、加速度アトリビュートとフィールドを組み合わせて新しいカスタム エフェクトを生成する方法を紹介しました。
パーティクル シェイプ(Particle Shape)ノードのアトリビュートに対する全フィールドのエフェクトを無効にするには、各フィールドのダイナミクス ウェイト(Dynamics Weight)アトリビュートを 0 に設定します。