Particle Instancer(パーティクルインスタンサー)をランダムに回転させたい
Particle に ParParticle タイプのアトリビュートを追加し、ランダム関数を使った式を与えて制御します。
1. Outliner(アウトライナ)の Display メニュー>Shapes にチェックを入れ、インスタンサーを割り当てたパーティクルのシェイプノードを選択します。
2. メインメニューの Modify メニューから Add Attribute(アトリビュートの追加)を選択します。
3. Add Attribute ウィンドウの Particleタブ>userVector1PP をクリックし、OK ボタンを押します。
ここで追加するアトリビュートは userVector1PP に限らず、任意の PerParticle(Array) タイプの Vector 型アトリビュートで構いません。
4. アトリビュートを追加した particleShape の AttributeEditor(アトリビュートエディタ)を開き、Per Particle (Array) Attributes > userVector1PP をマウス右ボタンクリックします。
Creation Expression...(作成式)を選択すると ExpressionEditor(エクスプレッションエディタ)が開きます。
5.次のような Expression(式)を設定します。
Creation(パーティクル作成時に実行される式):
particleShape1.userVector1PP=<>;
Runtime after Dynamics(ダイナミクス中に実行される式):
$currentVct = particleShape1.userVector1PP;
$rnd = $currentVct + 1 ;
particleShape1.userVector1PP = <<$rnd.x,$rnd.y,$rnd.z>>;
6. ParticleShapeのAttributeEditor(アトリビュートエディタ)>Instancer (Geometry Replacement)セクション>Rotation Options>Rotation を userVector1PP に変更します。
パーティクル発生時に個々のパーティクルの回転が 0-360 度の範囲でランダム化され、
RuntimeExpression によって発生時の回転値に 1frame につき1づつ回転値を追加しています。
回転軸を固定するのであれば RumtimeExpression の乱数の指定を特定の軸のみに設定します。
particleShape1.userVector1PP = <<$rnd.x,0,0>>;
上記の式では回転値はランダムですが、回転速度は一定です。
さらに回転速度をランダムにするには、さらにパーティクルに新しい Vector 型もしくは Float 型のアトリビュートを追加し、式を次のように書き換えます。
Creation:
particleShape1.userVector1PP=<>;
particleShape1.userScalar1PP = rand(10);
Runtime:
particleShape1.userVector1PP = particleShape1.userVector1PP + particleShape1.userScalar1PP;