パーティクル サンプラ(Particle Sampler Info) ノードの使用例

パーティクル サンプラ(Particle Sampler)ノードを簡単に使えるように、パーティクル サンプラ ノードを使用して一般的なエフェクトを実現する例を示します。パーティクル サンプラ ノード アトリビュート(Particle Sampler Info)の詳細については、パーティクル サンプラ ノード アトリビュートを設定するを参照してください。

テクスチャ配置ノードの駆動にパーティクル サンプラ(Particle Sampler Info)ノードを使用する

第 1 の方法の例を示します。パーティクル サンプラ(Particle Sampler Info)ノードを使用してテクスチャ配置ノードを駆動します。テクスチャ配置ノードはシェーダ カラーにテクスチャを配置します。この例では、パーティクルの存在時間を使用してパーティクルにカラーを設定します。

例: パーティクルの存在時間を使用してパーティクルのカラー設定する

  1. 円錐エミッタをスピードを 8 で上向きにして、パーティクルのライフスパン モード(Lifespan Mode)を 2 の定数(Constant)に設定し、そのレンダー タイプをクラウドに設定します。

    これを行うには、次の MEL コマンドを Maya ヘルプ(Maya Help)からコピーして、それをスクリプト エディタ(Script Editor)にペーストします。

    emitter -pos 0 0 0 -type volume -r 100 -vsh cone -alx 8; particle; connectDynamic -em emitter1 particle1; setAttr particleShape1.lifespanMode 1; setAttr particleShape1.lifespan 2.0; setAttr particleShape1.particleRenderType 8;
    
  2. particleShape を選択して、アトリビュート エディタ(Attribute Editor)を表示します。
  3. particleCloud タブを選択し、ライフ白熱光(Life Incandescence)の隣りにあるマップ ボタンを押してレンダー ノードの作成(Create Render Node)ウィンドウを表示します。
    ヒント:

    白熱光はカラーと同じですが、発光して見えるので、ライトを加える必要がありません。

  4. 右パネルで をクリックします。

    新しいランプ、テクスチャ配置ノード、および パーティクル サンプラ(Particle Sampler Info) ノードが作成されます。ライフ カラー(Life Color)は実際にはアトリビュートではありません。カラーへの接続をこのようにセットアップするように指示するコントロールに過ぎません。

  5. シーンを再生してレンダーします。

    ランプによってカラーがパーティクルの存在時間に従って色付けされます。

    次に、パーティクル サンプラ(Particle Sampler Info) ノードのコントロールのいくつかを変更します。

  6. particleShape を選択して、アトリビュート エディタ(Attribute Editor)を表示します。particleSamplerInfo1 のタブをクリックします。
  7. 逆出力 UV (Inverse Out Uv)をオンにして再レンダーします。

    カラーが変わる順序が逆になります。パーティクルが赤から緑、そして青に変わるかわりに、青から緑に、そして赤に変わります。

    次に、テクスチャ ノードのコントロールを変更します。

  8. particleShape のアトリビュート エディタ(Attribute Editor)で、particleCloud タブをクリックします。
  9. ライフ白熱光(Life Incandescence)の隣りにある入力接続(Input Connection)ボタンをクリックします。
  10. place2DTexture1 タブをクリックします。
  11. ノイズ UV (Noise UV)の値をそれぞれ 1.0 に設定して再レンダーします。

    ノイズがランプに適用され、赤、緑、および青のパーティクルがランダムになります。

  12. ノイズ UV (Noise UV) の値をそれぞれ 0.0 に戻します。
  13. アトリビュートのロード(Load Attributes)をクリックして、particleShape のアトリビュート エディタ(Attribute Editor)を表示します。
  14. ライフスパン モード(Lifespan Mode)不滅(Live forever)に変更します。
  15. パーティクル サンプラ(Particle Sampler Info) ノードのタブを選択します。
  16. 出力 UV タイプ(Out Uv Type)絶対存在時間(Absolute Age)に変更し、正規化の値(Normalization Value)を 1 に設定します。
  17. 巻き戻し、100 フレームほど再生して、レンダーします。

    パーティクルの色がランプを 2 回以上サイクルすることに注意してください。

パーティクル単位のアトリビュートを持つパーティクル サンプラ(Particle Sampler Info)ノードを使用する

第 2 の方法の例を次に示します。これは、rgbPP で直接カラーを駆動する方法です。この方法は、存在時間(age)以外のアトリビュートをエクスプレッションまたはランプで使用するときに用います。

例: rgbPP を持つパーティクル サンプラ(Particle Sampler Info)ノードを使用する

  1. 円錐エミッタをスピードを 8 で上向きにして、パーティクルのライフスパン モード(Lifespan Mode)を 2 の定数(Constant)に設定し、そのレンダー タイプをクラウドに設定します。

    これを行うには、次の MEL コマンドを Maya ヘルプ(Maya Help)からコピーして、それをスクリプト エディタ(Script Editor)にペーストします。

    emitter -pos 0 0 0 -type volume -r 100 -vsh cone -alx 8; particle; connectDynamic -em emitter1 particle1; setAttr particleShape1.lifespanMode 1; setAttr particleShape1.lifespan 2.0; setAttr particleShape1.particleRenderType 8;
    
  2. パーティクル シェイプを選択し、フィールド > 重力(Fields > Gravity)を選択します。
  3. パーティクルが選択された状態で、アトリビュート エディタ(Attribute Editor)を表示します。
  4. ダイナミック アトリビュートの追加(Add Dynamic Attributes)の下で、カラー(Color)をクリックします。

    パーティクル カラー(Particle Color) ウィンドウが表示されます。

  5. パーティクル単位のアトリビュートを追加(Add Per Particle Attribute)をクリックし、アトリビュートの追加(Add Attribute)をクリックします。
  6. アトリビュート エディタ(Attribute Editor)で、particleCloud1 タブをクリックします。
  7. カラー(Color)アトリビュートの隣にある、マップ ボタンを押して、レンダー ノードの作成(Create Render Node)ウィンドウを表示します。
  8. レンダー ノードの作成(Create Render Node)ウィンドウで Maya の下のユーティリティ(Utilities)をクリックします。
  9. 右パネルで をクリックします。

    新しいパーティクル サンプラ(Particle Sampler Info) ノードが作成され、そのカラー出力が color attribute に接続されます。すでにパーティクル サンプラ(Particle Sampler Info)ノードを作成していれば、それを使用して、接続エディタ(Connection Editor)で直接接続することができます。

  10. アトリビュート エディタ(Attribute Editor)で particle shape タブを選択します。パーティクル単位(配列)アトリビュート(Per Particle (Array)Attributes)の下で RGB PP を右クリックして、ダイナミクス エクスプレッション前のランタイム(Runtime Before Dynamics Expression)またはダイナミクス エクスプレッション後のランタイム(Runtime After Dynamics Expression)を選択します。
  11. エクスプレッション エディタ(Expression Editor)で、次のエクスプレッションを入力します。
    particleShape1.rgbPP = << mag(particleShape1.velocity) /
    	10, 0.0, 1 -mag(particleShape1.velocity)/10 >>;
    

    これにより、Maya は速度が増加するとパーティクル カラーを青から赤に変えます。

    ヒント:

    この例ではエクスプレッションを使用して特定のエフェクトを実現しました。しかし、パーティクル サンプラ(Particle Sampler Info) ノードでエクスプレッションを使わなくてもかまいません。異なるエフェクトをもたらすランプを使用することもできます。

  12. シーンにライトを追加します。ディレクショナル ライトをお勧めします。
  13. 75 フレームほど再生してレンダーします。

    パーティクル サンプラ(Particle Sampler)ノードの outIncandescence 出力は、RGB PP アトリビュートがあれば、それを自動的に使用することに注意してください。RGB PP がなければ、colorRed/colorGreen/colorBlue を使用します(これらのアトリビュートが存在する場合)。

    RGB PP を使用する利点は、パーティクル単位のアトリビュートに使用できる方法で、その値を設定またはアニメートして、結果をソフトウェア レンダリングで表示することができることです。その後で、同じカラー アトリビュートを使用して、ハードウェアとソフトウェアの両方のレンダリングで使用することもできます。

    ただし、RGB PP はエクスプレッションとランプ(またはコンポーネント エディタ)でしかアニメートすることはできません。ライフ カラー(Life Color)を使用することの利点は、テクスチャ配置ノードを使用して、そのコントロールを利用できることです。特に、u と v のコントロールがあるのでランプだけでなく任意のテクスチャを使用できるのは便利です。必要があれば、パーティクル サンプラ(Particle Sampler Info) ノードは互換性のあるどのアトリビュートでも接続できます。

パーティクル サンプラ(Particle Sampler Info)ノードへ透明度を設定する

カラーの場合と同様に、ライフ透明度(Life Transparency)も使用できます。パーティクル透明度マッパや存在時間マッパの代わりに、パーティクル サンプラ(Particle Sampler Info)ノードの outUvCoord アトリビュートとテクスチャ配置ノードを使用します。

カラーの場合と同様に、不透明度 PP (Opacity PP)などのパーティクル単位のアトリビュートを使用できます。パーティクル サンプラ(Particle Sampler Info) ノードの outTransparency アトリビュートを使用します。

例: フェード アウトするパーティクルの作成

  1. 平らな円筒状のエミッタを、軸から遠ざかる(Away From Axis)を 1 に設定し、他のスピードを 0 に設定して作成します。

    これを行うには、次の MEL コマンドを Maya ヘルプ(Maya Help)からコピーして、それをスクリプト エディタ(Script Editor)にペーストします。

    emitter -pos 0 0 0 -type volume -r 100 -sro 0 -spd 1 -vsh cylinder -afx 1; scale -r 5 0.5 5 ; particle; connectDynamic -em emitter1 particle1;
    
  2. レート(パーティクル/秒)を 50 に減らします。
  3. パーティクルのレンダー タイプをクラウド(Cloud)に設定します。アトリビュートを追加(Add Attributes For)の現在のレンダー タイプ(Current Render Type)をクリックして、半径(Radius)を 1.5 に設定します。
  4. アトリビュート エディタ(Attribute Editor)ダイナミック アトリビュートの追加(Add Dynamic Attributes)で、不透明度(Opacity)をクリックします。パーティクル単位のアトリビュートを追加(Add Per Particle Attribute)をオンに設定し、アトリビュートの追加(Add Attribute)ボタンをクリックします。
  5. パーティクル単位アトリビュート(Per Particle Attributes)の下で不透明度 PP (Opacity PP)を右クリックして、ダイナミクス エクスプレッション前のランタイム(Runtime Before Dynamics Expression)またはダイナミクス エクスプレッション後のランタイム(Runtime After Dynamics Expression)を選択します。
  6. エクスプレッション エディタ(Expression Editor)で、次のエクスプレッションを入力して作成(Create)をクリックします。
    opacityPP = 1 / (0.01 + mag( position ));
    

    (パーティクルが原点にあるときに 0 で割るのを防ぐため、分母に 0.01 を加えます。)

  7. particleCloud タブを選択して、透明度(Transparency)(ライフ透明度(Life Transparency)ではない)のマップ ボタンをクリックします。

    レンダー ノードの作成(Create Render Node)ウィンドウが表示されます。

  8. レンダー ノードの作成(Create Render Node)ウィンドウで Maya の下のユーティリティ(Utilities)をクリックします。
  9. 右パネルで をクリックします。

    新しいパーティクル サンプラ(Particle Sampler Info)ノードが作成され、その outTransparency がシェーダの透明度(transparency)に接続されます。カラーや白熱光の場合と同様に、outTransparency 出力は不透明度 PPアトリビュートがあればそれを使用し、なければ不透明度を使用します。

    不透明度と透明度は逆の関係にあります。ある物の不透明度が高くなると、その透明度は低くなります。パーティクル サンプラ(Particle Sampler Info)ノードの outTransparency 出力を接続すると、このノードは自動的に不透明度を透明度に変換して、正しい結果が得られるようにします。

  10. ライトを追加し、シーンを 50 フレームほど再生して、レンダーします。トップから y 軸を見下ろすカメラ ビューがベストです。パーティクルが原点から離れれば離れるほど、その透明度が増します。

パーティクル単位でのノイズの制御

任意のパーティクル単位のアトリビュートを、制御したいシェーダ内のアトリビュートに接続することができます。そうすれば、パーティクル単位のアトリビュート上にエクスプレッションを作成し、好きなように制御できます。

例: 煙の作成

  1. パーティクルを上方に放出する単純なカーブ エミッタを作成します。

    これを行うには、次の MEL コマンドを Maya ヘルプ(Maya Help)からコピーして、それをスクリプト エディタ(Script Editor)にペーストします。

    curve -d 3 -p -6.861087 0 7.36723 -p -2.43128 0 2.685247 -p 2.685247 0 -2.43128 	-p 6.968851 0 -6.714884 -k 0 -k 0 -k 0 -k 1 -k 1 -k 1 ; emitter -type curve -r 100 -sro 0 -nuv 0 -cye none -cyi 5 -spd 6 -srn 0 -nsp 0 	-tsp 0 -mxd 0 -mnd 0 -dx 0 -dy 1 -dz 0 -sp 0 ; particle;
    connectDynamic -em emitter1 particle1;
    
  2. パーティクルのライフスパン モード(Lifespan Mode)をランダム範囲(Random range)に設定します。ライフスパン(Lifespan)を 2 に、ランダム ライフスパン(LifespanRandom)を 2 に設定します。
  3. パーティクルのレンダリング タイプをクラウドに設定します。アトリビュートを追加(Add Attributes For)の現在のレンダー タイプ(Current Render Type)をクリックして、半径(Radius)を 1.5 に設定します。
  4. particleCloud タブを選択して、カラーを薄灰色または他の好きなカラーに設定します。

    次に、使用していない任意のパーティクル単位のアトリビュートを使用します。たとえば、ここでは親 U (Parent U)親 V (Parent V)は必要ないので、それらのアトリビュートを使用します。

    注:

    ここでは、説明を簡単にするために親 U と親 V を使用しましたが、これらは簡単に追加でき、しかも使用されていないためです。ただし、ユーザ定義アトリビュートならどれでも使用できます。自分で定義するアトリビュートでも使用できます。

  5. アトリビュート エディタを表示して、アトリビュート > アトリビュートの追加(Attributes > Add Attributes)を選択します。アトリビュートの追加(Add Attribute)ウィンドウでパーティクル(Particle)タブをクリックします。
  6. parentU を選択して追加(Add)をクリックします。parentV を選択して追加(Add)をクリックします。OK ボタンをクリックします。
  7. 親 U (Parent U)または親 U (Parent V)のどちらかを右クリックし、ダイナミクス エクスプレッション前のランタイム(Runtime Before Dynamics Expression)またはダイナミクス エクスプレッション後のランタイム(Runtime After Dynamics Expression)を選択して、次のエクスプレッションを追加します。
    parentU = 0.7 + 2*(age/finalLifespanPP); parentV = age /(1.5*finalLifespanPP);
    

    煙のように、パーティクルが時間の経過とともに密度が薄くなりノイズが多くなるようにしたいとします。

    ヒント:

    この例ではエクスプレッションを使用して特定のエフェクトを実現しました。しかし、パーティクル サンプラ(Particle Sampler Info) ノードでエクスプレッションを使わなくてもかまいません。異なるエフェクトをもたらすランプを使用することもできます。

  8. particleCloud のアトリビュート エディタ(Attribute Editor)で、ノイズの隣にあるマップ ボタンをクリックします。

    レンダー ノードの作成(Create Render Node)ウィンドウが表示されます。

  9. レンダー ノードの作成(Create Render Node)ウィンドウで Maya の下のユーティリティ(Utilities)をクリックします。
  10. 右パネルで をクリックします。

    接続エディタ(Connection Editor)が表示されます。

  11. パーティクル サンプラノードの parentUNoise に接続し、parentVDensity に接続します。
  12. ライトを追加します。シーンを 60 フレームほど再生してレンダーします。