パーティクルを使用したレイ トレーシング シャドウを作成する
 
 
 

ソフトウェア レンダー タイプのパーティクルをレイ トレーシングして、レイ トレーシング シャドウをレンダーすることができます。

パーティクルを使用したレイ トレーシング シャドウを作成するには

  1. パーティクルを作成して、レンダー タイプ(Render Type)メタボール(Blobby)クラウド(Cloud)、またはチューブ(Tube)のいずれかに設定します。
  2. ディレクショナル、ポイント、スポット、またはエリア ライトをシーンに加えます。
  3. ライトのアトリビュート エディタ(Attribute Editor)を開き、シャドウ アトリビュート(Shadows Attributes)を表示します。
  4. レイ トレース シャドウの使用(Use Ray Trace Shadows)レイ トレース シャドウ アトリビュート(Raytrace Shadow Attributes)の下)をオンにします。
  5. レンダー設定(Render Settings)ウィンドウで、レイ トレーシングの精度(Raytracing Quality)アトリビュートを表示してレイ トレーシング(Raytracing)をオンにします。
  6. 次のいずれかを実行します。

パーティクル サンプラ(Particle Sampler Info)ノードを作成する

ここでは、パーティクル サンプラ(Particle Sampler Info)ノードを作成する一般的な手順を説明します。次の手順ステップは一般的な手順であり、特定のタスクの例については、 パーティクル サンプラ(Particle Sampler Info)ノードの使用例を参照してください。

パーティクル サンプラ(Particle Sampler Info)ノードを作成するには

  1. パーティクルを作成して、レンダー タイプ(Render Type)メタボール(Blobby)クラウド(Cloud)、またはチューブ(Tube)のいずれかに設定します。
  2. どのパーティクル アトリビュートを使用してシェーダ アトリビュートを実行するか指定します。
  3. 必要に応じて使用するアトリビュートを particleShape に追加します。
  4. パーティクルを選択して、アトリビュート エディタ(Attribute Editor)を開きます。シェーダのアトリビュート エディタ タブをクリックして、パーティクル アトリビュートで実行するシェーダ アトリビュートを見つけます。
  5. そのアトリビュートの隣りにあるマップ ボタンをクリックして、レンダー ノードの作成(Create Render Node)ウィンドウを表示します。
  6. レンダー ノードの作成 ウィンドウで、ユーティリティ タブを選択します。パーティクル ユーティリティ(Particle Utilities)の下で、パーティクル サンプラ(Particle Sampler) ボタンをクリックします。

    これによりコネクション エディタ(Connection Editor)が表示されます。パーティクル サンプラ ノードは左側(From)に、シェーダは右側(To)に表示されています。

    カラー、透明度、および白熱光の場合は、パーティクル サンプラ ボタンを押してもコネクション エディタ(Connection Editor)は表示されません。かわりに、Maya は新しいパーティクル サンプラ ノードを作成し、次のようなデフォルト コネクションを自動的に作成します。

    • outColor -> color
    • outTransparency -> transparency
    • outIncandescence -> incandescence
  7. コネクション エディタを使用して、パーティクル サンプラ ノード アトリビュートをシェーダ ノード アトリビュートにコネクトします。

    particleShape とパーティクル サンプラ ノードの間のコネクションは暗黙的です。ユーザが実際にコネクトするわけではありません。実際に作成するコネクションは、パーティクル サンプラ ノードとシェーダの間のコネクションです。

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

パーティクル サンプラ(Particle Sampler Info)ノードを簡単に使えるように、パーティクル サンプラ ノードを使用して一般的なエフェクトを実現する例を示します。パーティクル サンプラ ノード アトリビュートの詳細については、 パーティクル サンプラ(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 を選択して、アトリビュート エディタを表示します。
  3. particleCloud タブを選択し、ライフ白熱光(Life Incandescence)の隣りにあるマップ ボタンを押してレンダー ノードの作成(Create Render Node)ウィンドウを表示します。
    ヒント:白熱光はカラーと同じですが、発光して見えるので、ライトを加える必要がありません。
  4. ランプ(Ramp)ボタンをクリックします。

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

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

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

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

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

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

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

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

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

  12. ノイズ UV の値をそれぞれ 0.0 に戻します。
  13. アトリビュートのロード(Load Attributes)をクリックして、particleShape のアトリビュート エディタを表示します。
  14. ライフスパン モード不滅(Live forever)に変更します。
  15. パーティクル サンプラ ノードのタブを選択します。
  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)をクリックします。

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

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

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

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

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

    ヒント:この例ではエクスプレッションを使用して特定のエフェクトを実現しました。しかし、パーティクル サンプラ ノードでエクスプレッションを使わなくてもかまいません。異なるエフェクトをもたらすランプを使用することもできます。
  11. シーンにライトを追加します。ディレクショナル ライトをお薦めします。
  12. 75 フレームほど再生してレンダーします。

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

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

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

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

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

カラーの場合と同様に、opacityPP などのパーティクル単位のアトリビュートを使用できます。パーティクル サンプラ ノードの 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)の下で opacityPP を右クリックして、ダイナミクス エクスプレッション前のランタイム(Runtime Before Dynamics Expression)またはダイナミクス エクスプレッション後のランタイム(Runtime After Dynamics Expression)を選択します。
  6. エクスプレッション エディタ(Expression Editor)で、次のエクスプレッションを入力して作成(Create)をクリックします。
    opacityPP = 1 / (0.01 + mag( position ));

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

  7. particleCloud タブを選択して、透明度(Transparency)ライフ透明度ではない)のマップ ボタンをクリックします。
  8. レンダー ノードの作成(Create Render Node)ウィンドウで、ユーティリティ(Utilities)タブをクリックし、次にパーティクル ユーティリティ(Particle Utilities)の下でパーティクル サンプラ ボタンをクリックします。

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

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

  9. ライトを追加し、シーンを 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 タブを選択して、カラーを薄灰色または他の好きなカラーに設定します。

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

    注:ここでは、説明を簡単にするために parentU と parentV を使用しましたが、これらは簡単に追加でき、しかも使用されていないためです。ただし、ユーザ定義アトリビュートならどれでも使用できます。自分で定義するアトリビュートでも使用できます。
  5. アトリビュート エディタを表示して、アトリビュート > アトリビュートの追加(Attributes > Add Attributes)を選択します。アトリビュートの追加(Add Attribute)ウィンドウでパーティクル(Particle)タブをクリックします。
  6. parentU を選択して追加(Add)をクリックします。parentV を選択して追加をクリックします。OK ボタンをクリックします。
  7. parentU または parentV のどちらかを右クリックし、ダイナミクス エクスプレッション前のランタイム(Runtime Before Dynamics Expression)またはダイナミクス エクスプレッション後のランタイム(Runtime After Dynamics Expression)を選択して、次のエクスプレッションを追加します。
    parentU = 0.7 + 2*(age/finalLifespanPP); parentV = age /(1.5*finalLifespanPP);

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

    ヒント:この例ではエクスプレッションを使用して特定のエフェクトを実現しました。しかし、パーティクル サンプラ ノードでエクスプレッションを使わなくてもかまいません。異なるエフェクトをもたらすランプを使用することもできます。
  8. particleCloud のアトリビュート エディタ(Attribute Editor)で、ノイズの隣にあるマップ ボタンをクリックします。
  9. レンダー ノードの作成(Create Render Node)ウィンドウで、ユーティリティ(Utilities)タブをクリックし、次にパーティクル ユーティリティ(Particle Utilities)の下でパーティクル サンプラ(Particle Sampler)ボタンをクリックします。

    コネクション エディタ(Connection Editor)が表示されます。

  10. パーティクル サンプラ ノードの parentUノイズ(Noise)にコネクトし、parentV密度(Density)にコネクトします。
  11. ライトを追加します。シーンを 60 フレームほど再生してレンダーします。