チュートリアル / 3ds Maxではじめるエフェクト制作
第6回:Particle FlowとFumeFX
- 3ds Max
- エフェクト
- コラム
- チュートリアル
- 学生・初心者
- 映画・TV
トリプルアディショナル小張です。
前回の記事からだいぶ経ってしまいましたが、今回も引き続きPflowを使用しつつFumeFXについても少々書かせて頂きました。
FumeFXはエフェクトの勉強や仕事をされてる方は殆どご存じかと思いますが、主に火や煙等のためのフルイドシミュレーションを行うプラグインになります。
FumeFXは特に設定を凝らなくても、割とサクッとリアル目な煙等を作成出来てしまいますが、よりリアルな爆発や爆炎、シーンに合わせた理想の形状に近づけていこうとすると非常に時間のかかる作業になってきます。とはいえウェブ等で検索すると、かなりハイクオリティーな設定を公開されてる方も結構いらっしゃるので、とっつき易いプラグインなのではないかと思います。
今回は、ご存じの方も多いかもしれませんがパーティクルフローの色と同様の色を煙につけていく方法を紹介します。
幾つか方法はあると思いますが今回のものが一番ベーシックではないかと思います。
この方法を使用して冒頭の画像のようなカラーパウダーを爆発させたようなイメージを作ってみました。
実際に作っていってみましょう。
まず、パーティクルフローにエミッターの色(テクスチャーの色)を付ける設定をします。
以降青文字部分は何のために作業したかの解説になります。
まずエミッターにするオブジェクトを用意します。
エミッターにテクスチャーを割り当てます。
今回は簡単にカラフルなテクスチャーを用意してみました。
次にParticle Viewを開きEmpty Flowをドラッグ&ドロップします。
Birthオペレーターをドラッグ&ドロップ。PF sourceと繋ぎます。
Birthオペレーターのあるイベント(動画ではEvent 001)にPosition Objectをドラッグ&ドロップ
Position Objectは、シーンのオブジェクトをエミッターにするオペレーターです。
Position Objectのパラメーター>Emitter Objectでエミッターにするオブジェクトを指定します。
パーティクルを視認し易いようにと、この後のエミッターの色を拾えてるか確認出来るように、Shapeオペレーターをドラッグ&ドロップ。DisplayでGeometry表示にしました。
グローバルイベントにMapping Objectをドラッグ&ドロップ
今後全てのイベントで同じマテリアルを割り当てるためにグローバルイベントに入れました。
Mapping Objectは、ヘルプによると「パーティクルごとに、参照ジオメトリ上の最も近いポイントが検出され、そのポイントから取得したマッピング値とマテリアル ID が各パーティクルに割り当てられます。」とあります。
なので、今回は発生した位置から最も近いエミッターの色をパーティクルが拾うようになります。
Mapping Objectのパラメーターでエミッターを指定します。
さらにグローバルイベントにMaterial Staticをドラッグ&ドロップ。
Material Staticのパラメーターでエミッターと同様のマテリアルを割り当てます。
以上で、エミッターと同じ色のパーティクルが発生するようになりました。
次にパーティクルの動きをつけていきます。
エミッターの法線方向にパーティクルを飛ばそうと思うので、
Event001 にSpeed By Surfaceをドラッグ&ドロップし、エミッターを指定しました。
Speed By Surfaceは指定したジオメトリーに基づいて速度方向を付けられるようにするものです。
爆発っぽい感じで最初にバンっと弾けきってしまう感じにしようと思うので、
BirthオペレーターのEmit StartおよびEmit Stopを共に0フレーム目にしました。
さらに弾けた後、割とすぐ消えてなくなるようDeleateオペレーターを追加し調整しました。
これだと真上にしか飛んでいないので、エミッター自体を変形させ飛んでいく方向を調節していきます。
さらに重力やコリジョンを設定し、もう少しだけ複雑な動きになるようにしてみました。
グレースケールを用いて速度を調整していきます。
もう少しランダムな速度感をつけるため、ノイズマップを使用してみます。
一度確認のためエミッターに新規のマテリアルを割り当てノイズマップを適用。
今回の場合、白い部分程速度が速くなります。
何となく用意できたら、マルチサブオブジェクトマテリアルを用意し、色用のマテリアルをID1に、速度用のマテリアルをID2にしました。
パーティクルフローに戻り、Speed By Surfaceのパラメーターにいき、
Speed By MaterialとUse Sub-Materialにチェックを入れ、Mtl IDを2に変更します。
これで先ほどのマテリアルID 2の方を使用して速度を調節することができます。
もう一度、Speed By SurfaceのSpeedも調整して良い感じになるまで微調していきます。
パーティクルの形状を石っぽくしてみます。
次にパーティクルの形状がキューブというのも微妙かと思ったので、石っぽい感じに変えます。
石のモデルに関して、今回はDebrisMakerというフリーのプラグインを使用させて頂きました。
http://www.scriptspot.com/3ds-max/scripts/debrismaker2-procedural-geometry-creation-tool
こちらで用意した5パターンの石のモデルをグループ化します。
Particle Viewに戻り、ShapeをShape Instanceと置き換え
Shape Instanceのパラメーターで、先ほどのグループ化したものを指定してあげます。
さらに、Shape Instanceのパラメーター内のSeparate Particle forにあるGroup Membersにチェックを入れます。これでグループ内のオブジェクトが1つのパーティクルに対して、1つのオブジェクトにセパレートされます。
では次にFumeFXを使用してみます。
FumeFXでパーティクルをエミッターとする場合はParticle Srcを使用するのが通常かと思いますが、パーティクルから色を拾うにはまだ設定が必要になってきます。
Object Srcを使用してシーンのオブジェクトをエミッターとした場合は、非常に簡単にエミッターの色を拾うことができます。
まず、エミッターとなるParticle Fowの動きをカバーしきれるサイズのシミュレーショングリッドを用意します。
Createパネル > FumeFX で作成します。
次にObject Srcを用意します。Obeject Srcではパーティクルを読むことは出来ないので、Mesherを使用して読み込ませます。
Createパネル > Compound Objects > Mesherで作成
MesherのパラメーターでParticle Flow を指定します。
パーティクルフローと同様のマテリアルを割り当て、ちゃんと色があってるか確認しました。
先ほど用意したObject SrcでMesherを指定します。
次にFumeFXのUIを起動し、
obj/srcパネルにいき、ObjectsにObject Srcを指定します。
これで、Mesher(=Particle Flow)から煙等が発生するようになりました。
次にobj/srcパネルで読み込んでいるObject Srcの設定部分、Object Source ParametersにあるColorの
TypeをSet Voxel Valueに、Mapにチェックを入れテクスチャーを割り当てます。
genタブにいき Pathsで任意の保存先を指定します。
simタブにあるColor > Simulate Colorにチェックを入れるの忘れていたのでオンにしました。
renderタブにあるSmoke > Color SourceをGridにすると色を拾えていることが確認できるかと思います。
FumeFXを設定していきます。
特に正解というものが無いので、細かい説明は致しませんが、トライ&エラーや慣れみたいなことは必要かと思います。
FumeFXの精度や、画質というか綺麗さを決定する最もな部分としては、 genタブにあるSpacingになります。小さい値ほど綺麗になりますがシミュレーションにかかる時間も長くなっていきます。
今回はSpacing を0.3にしました。
(用途に応じてさらにWavelet Simulationをかける等してディティールを追加していくのも良いかと思います。)
また、simタブで色々と設定をしました。
大きく動きやディティールにかかわる部分として、
動きが速いものに対してシミュレーションを行う場合は、SimulationのMinimumおよびMaximum Simulation Stepの値は重要になるかと思います。動きに対してステップ数が足りないと直線的かつムラ?みたいなものが出てきます。
次にSystem部分は重力やタービュランスの設定など動きに対してかなり直接的に影響が出てくる部分になります。
諸々FumeFXの設定を終えて、Emitterにするパーティクル量も3000まで上げました。
レンダリング用に別途コピーしてさらに大量のパーティクルを発生させたものを用意。
ライトを用意しShadowsをOn
FumeFXのrendタブでSmokeのCast ShadowsおよびRecive Shadowsにチェックを入れます。
煙がシーンのオブジェクトから影を落とす、影を受ける設定になります。
illumタブにいきレンダリングに使用するライトを指定します。
ライトのパラメーターにいき
Shadow ParametersにあるAtmosphere ShadowsをOnにします。
Offの場合はシーンの環境効果エフェクトに影が入りません。
レンダリングしてみます。
冒頭の絵では FumeFX でさらにWavelet Simulationをかけディティールを追加。
Particle Flow でFumeFX Followを使用して煙に沿うパーティクルを数百万発生させKrakatoaというレンダラーでレンダリングしたものを合成しています。
Vrayでも、Vray プロキシーとしてパーティクルを読み込むことで同様のエフェクトを作成可能ですが、キャッシュの重さやレンダリング時間はかかってくると思います。
FumeFXとパーティクルを一発でレンダリング出来るので、絵自体はよりナチュラルな感じになるかと。
今回のレンダーパスは以下の感じになります。
今回のシーンファイルがダウンロードできます。