2011年9月24日土曜日

MayaFluidのnParticleを使った爆発Tutorial



こちらの記事はMayaでnParticleを使ったでFluidの爆発を作る際の設定方法等を記しています。
特別な事は何もしていませんが・・w。

JJさんのhttp://vimeo.com/28931355拝見し、
nParticleの底力知り僕も爆発をnParticleで作ってみよう!と言う事でやってみました。

作ってみた爆発です。


[シーンの概要]
AutoResizeに設定したFluidにnParticleのEmitterから[Heat],[Fuel],[Tubulence]を放出し、
通常のFluidEmitterで出来る爆発をnParticleのアニメーションによってコントロールします。

(どのパラメーターがどんな効果があるのか分からないときは、必ず一つ一つ設定を変える毎に一度再生して、その効果を理解してから次に進むとベストですよ!
Fluidのパラメーターの理解は2DFluidや3DFluidのZ幅を狭めてみるとやりやすいです。)
あくまでこの記事で使っている数値は参考程度に、ケースバイケースデスヨ!

[設定詳細]
  • [Fluidの設定]
    Fluidコンテナを作成し、普段の爆発を作る要領でFluidの設定を行います。
    1. [Dynamicsメニュー]からCreate 3D Containerを実行作成。パラメーターを設定します。
    2. 爆発の規模が大きければFluidの[ContainerProperties]の[Size]を上げ、Gravity値を下げる等。
    3.  [DynamicSimulation(tab)]の[HighDetailSolve]を[AllGrods]にします。
      爆発的な動きをさせるとどうしてもsimが破綻しやすく、あとからオンにすると結果が大きく変わるため、僕は必ず始めに入れています。


    4.  [Substeps]は後にsimの破綻がどうしても回避できない場合に特定のフレームのみに5等に上げて使います。
    5. [SimulationRateScale]を爆発の瞬間だけ2程度に上げて設定します。(単に速くなるだけではないダイナミックな動きや広がり)
    6.  [AutoResize(Tab)]の[AutoResize]と[ResizeToEmitter]をオンにし、
      [ResizeClosedBoudaries]は地面等がある場合に限り[Boudary]と同時に決めます。
      [AutoResizeThreshold]を0.001未満に設定、コンテナサイズを広げやすくなるため低い数値を入力。


    7. [Density],[Velocity],[Turblence],[Tempture],[Fuel]を設定。
  • [nParticleのFluidEmitter設定]
    アニメーションよりParticle一つで放出するTurblenceの値を決定します。
    パーティクル一つや一つのemitter単位で確認する。(この事を仕事で教えてもらいました。)
    1. -1個だけnParticleを作成- 
      [nDynamicsメニュー]から[nParticle]>[CreateEmitter]のCloudのチェックをオンにし[nParticle Tool]を実行。
      Fluidのコンテナ内にパーティクルを一つ配置し、Enterキーで作成  

    2. -不要なアニメーションの削除-
      nParticleを選択し、アサインされている[nudeys]の[Gravity],[AirDensity]の数値を0に設定。不要なアニメーションをなくします。

    3. -設定の確認をしやすくするためnParticleのRadiusを調整-作成したnParticleShapeを選択、アトリビュートエディタから[Shading(tab)]の[Opacity]の値を0にする。
      [Particle Size(tab)]の[Radius]をコンテナ内で確認設定しやすい適切な大きさに上げます。

    4. -作成したnParticleをFluidEmitterに設定-
      FluidコンテナとnParticleを選択し、[Dynamicsメニュー]>[Fluid Effects]>[Add/Edit Contents]>[emit from Object]を実行。

    5. -作成したnParticleのFluidEmitterの設定-
      nParticleのFluideEmitterアトリビュートの[Basic Emitter Attributes(tab)]の[Use Per-Point Radius(radiusPP)]のチェックをオンに。
      [Density]の値を5に、[Heat],[Fuel]を0に設定。
      [Fuluid Dropoff]を1.1程度に。
      [Motion Steak]のチェックオンにし素早い動きのEmitに対応させます。

    6. -注意点-
      Fluidにtransformeアトリビュートのスケール値は1で使う。
      nParticleからFluidに対してradiusPP使いemitすると、スケール前のraidusで放出されます。
      Fluidにスケール値が1以外では放出範囲が大きかったり小さかったりしてしまいます。この点もここで問題ないか確認します。

    7. -[FluidEmissionTurblence(tab)]の設定・確認-
      [FluidEmissionTurblence(tab)]内の[TurblenceFreq]xyz値を0.1~0.5ないで試し望ましい値に決定します。
      [Turblence]を15~132程度に上げる。
      [DetailTurblence]を上げディティールを出す。
      (Fluidコンテナの[Lightng]>[SelfShadow]をオンにすると確認しやすいです)


    8.  -[Tublence Speed]の設定-
       [Tublence Speed]に「=frame/2」や「=sin(frame)」などのエキスプレッションを入れて、乱気流がアニメーションするのを確認します。

    9.  -nParticleのvelocity放出効果の確認-
      [EmissionSpeedAttributes]の[Speed Method]を[Add]し、[InjeritVelocity]の値を0.5~3.0で確認しながら決定します。
      nParticleのRadiusを小さくしたり大きくしたりしながら、
      縦や横にアニメーションさせてこの項で設定した全てのパラメーターを確認・調整します。




      シェイプが単に丸く見えない様に、実際の移動速度なんかで確認しておく良いんじゃないかと思います。(ニョキニョキ)
  • [nParticleアニメーションの決定]
    爆発のアニメーションを模擬的に再現します。前項のラストのパラメーターを参考にしつつ設定します。最後まで比較的少ない50~100程度の数のパーティクルで行います。
    1. -nParticleをFiledや出力設定-
      VelocityやAcclerationを駆使して資料等を確認しながら想いの爆発アニメーションに設定します!(ざっくり)
      複数回爆発させたい場合は、一旦一個だけ爆発させて確認してから追加して行きましょう。
      radiusPPを使っているのでradiusが非常に重要です。次の功に行ってからも修正します。

  •  MainのFluidVolumeEmitterの作成とnParticleFluidEmitter設定と確認。
    MainになるFluidEmitter(Volume)を作成し、[Density],[Heat],[Fuel]を爆発時に放出させます。
    [Density]はこのMainのEmitterからのみ放出します。
    1. -MainになるEmiterの作成-
      Fluidシェイプを選択し[Dynamicメニュー]>[Fluid Effects]>[Emitter]を作成。
      [Density],[Heat],[Fuel]を設定。爆発時に放出される様に値をアニメーションさせます。
      TurblenceをnParticleと同様の方法で調整・設定します。



    2. -nParticleからFluidEmit設定-
      FluidEmitを-2)の項のラストで決めたTurblenceを設定し、
      [Density]値を0、[Heat],[Fuel]を1程度に設定・調整して行きます。

    3.  -注意点、問題回避等-
      simが破綻してしまう場合は、[Substeps], [SimulationRateScale]値を一時的に上げるアニメーションさせる。

      simの始めがFluidコンテナのサイズがうまく広がらない場合はFluidVolumeEmitterを一つ作り、[Density]を0.001などで放出させて最小のコンテナサイズを担保する。

      nParticleの[Density]放出量の値は0が絶対ではないと思いますが少ない方が丸みのあるシェイプになりづらいので良いと思います。

あとはひたすらTry&errorで調整あるのみですw。
大切なパラメーターをいくつか上げると、
  1. MainのEmitterから放出される[Density]の量と[Heat]
  2. nParticleの[Radius]と全体のタイミング
  3. nParticleの[Inherit Velocity],[TublenceFreq]のスケール値。
  4. あとは通常の爆発と同じで、Fluidコンテナの[Velocity(tab)]の[swirl],[Temperature(tab)]の[Turblence]と[Dissipation]、そして[Fuel]の[Reaction Speed]です。



以上で解説終了です。
ーーーーーーーーーーーーーーーーーーーーーーーーー
ちょっと全体的になれてない人向けに書いてみました。
僕自身こう言うのを書くのは不慣れなので説明が足りない所や間違えている点、
質問等も受け付けていますのでドシドシお願いします!