Eddyのシミュレーションは、Eddyエレメントを使用して作成されます。シミュレーションエレメントは、広範囲の物理特性を表現することができる非常に汎用的な構成モデルです。現在、Eddyは、2つのタイプのシミュレーションエレメントに対応しています。
- Smokeエレメントノードは立ちのぼる煙をシミュレーションします。
- Combustionエレメントノード は炎のような燃焼プロセスをシミュレーションします。
Eddyチャンネルデータ
シミュレーションエレメントは、Eddyのチャンネルセットを操作し、出力します。チャンネルセットは、チャンネル の集まりで、各チャンネルは、特定の物理的要素、例えば圧力や速度、距離、煙濃度などを表す値が含まれた3Dボリュームです。Eddyには、3つの異なるチャンネルのValueTypesがあり、そのうちのいくつでもEddyチャンネルセットに含めることができます。
- スカラーチャンネルは、空間の各ポイントに1つの浮動小数点小数値を格納します。シミュレーションのスカラーチャンネルの例は、温度や圧力、密度などです。
- ベクトルチャンネルは、空間の各ポイントに3つの浮動小数点小数値を格納します。シミュレーションのベクトルチャンネルの例は、速度および渦度です。
- 整数チャンネルは、空間の各ポイントに1つの整数値を格納します。このタイプのチャンネルは、通常、シミュレーションエレメントにより内部的にのみ使用されます。
チャンネルは、Nukeで直接可視化したり、レンダリング することができるほか、Eddyや他のツールでの後処理用にOpenVDBボリュームとしてエクスポートおよびインポートすることができます。
シミュレーションの制御
シミュレーションエレメントは、特定現象の物理学のためのコンテナです。エミッターおよびコライダーは、シミュレーションしたいシナリオの詳細をエレメントに伝えるために使用されます。
エミッターがチャンネルデータの作成や修正を担当し、コライダーはシミュレーションの空間でコリジョンオブジェクトを表現し、エレメントが相互作用できるようにします。
効率的なシミュレーションワークフロー
新しいシミュレーションのセットアップや調整は、時間のかかるプロセスになることがあります。しかし、Eddyのインタラクティブな性質により、このプロセスを大幅にスピードアップすることができます。一般的に、シミュレーションの反復が速くなればなるほど、希望するルックアンドフィールにすばやく到達することができます。Eddyでシミュレーションを行う場合に、効率と生産性を上げるための推奨事項は以下の通りです。
エミッターおよびコライダーに注意する
新しいシミュレーションをセットアップする場合、常に、エミッターとコライダーに少し時間をかけてください。これらは、シミュレーションの全体的な外観と挙動に対して非常に重要な役割を果たします。かなり正確なエミッターとコライダーをモデリングすることは、よい結果をもたらす基本です。一度、この作業が完了すると、シミュレーションのパラメータを調整して、シミュレーションを最大限に取得することができますが、エミッターとコライダーが適切にモデリングされていないと、良いシミュレーション結果を得ることは、まったく不可能ではないにしても、困難を極める場合が多いです。
メッシュからボリュームへの変換はパフォーマンスを制限することがある
メッシュ(またはパーティクルシステム)をコリジョンまたはエミッションボリュームに変換すると、比較的時間がかかる場合があります。ジオメトリが静的であるか、動きが遅い場合は、これらのボリュームを事前に計算してOpenVDBキャッシュとして保存するというオプションがよく使われます。これらのキャッシュは、その後、シミュレーション中に読み戻して使用し、パフォーマンスを向上させることができます。最後の手段として、E_MeshToVolumeノードの解像度を下げることも選択できます。シミュレーションのエレメントで使用されるコリジョンオブジェクトの解像度は、見た目にあまり影響を与えずに下げることができる場合が多いです。しかしながら、最良の結果を得るには、コリジョンオブジェクトは、可能な限り常に、シミュレーションと同等の詳細レベルにしてください。
低解像度のシミュレーションから始める
最初から高精細のシミュレーションを行う必要はありません。新しいシミュレーションをセットアップする場合、基本的なエミッションやコリジョンの挙動を評価できる範囲で、できる限り低い解像度を探してください。多くの場合、時間のかかる高精細なシミュレーションを実行する必要なく、エミッターとコライダーがシミュレーションと相互作用する様子を確認できます。
シミュレーションの細部が欠如している点は、後ほど対応するため考慮する必要はなく、大まかなストロークだけに集中し、正確に動作するようにしてください。ディテールの荒いシミュレーションとビューアーを使用することで、初期設定ですばやく反復を行い、希望するアーティスティックなルックアンドフィールに到達するために適切な設定を確認できるまで、いろいろな発想を取り入れながら試してみることができます。
この時点で、必要に応じて解像度を上げはじめ、パラメータを微調整して、最終の品質に近づけることができます。微調整を行う場合は、シミュレーションで得られるようになり、追加された詳細レベルに一致させるため、エミッターとコライダーの詳細レベルも上げる必要があるかもしれないということに留意してください。一般的に、最終の解像度では反復を数回以上行わないように心がけてください。ほとんどのパラメータやアーティスティックな選択は低解像度でも可能です。最高品質のシミュレーションは、最終の仕上げにのみ使用してください。
反復時に高品質なビューアーを使わない
Eddyのデータを可視化するには、シミュレーションを行うのと同様、時間がかかります。チャンネルを表示するときは、そのチャンネルが可視化されたものを見ているのみとなります。つまり、ビューアーの詳細レベルを変更しても、根本的なデータの精度に影響を与えることはありません。シミュレーションの結果を変えずに、いつでもビューアーの解像度を増減することができます。インタラクティブにEddyを使用している場合は、低解像度のライブビジュアライゼーションを使用するだけで、全体的な反復速度を上げることができます。さらに、シミュレーションの最大限の詳細レベルを判断するために、いつでもシミュレーションを一時停止させて、より高い精度で可視化したり、フレーム(または必要であればシーケンス全体)をレンダリングすることができます。
反復時にレンダリングの品質を上げない
高品質のレンダリングにも多大な時間がかかります。シミュレーションの全体的な品質や挙動を評価するには、多くの場合、高品質である必要はありません。シミュレーションの全体的な挙動に満足し、最終の外観を調整する準備が整うまで、低品質のレンダリングの使用を検討してください。
燃焼シミュレーションの基本
燃焼シミュレーションは、習得がむずかしい機能です。学習プロセスに役立つように、このセクションでは、燃焼モデルとそのパラメータの基本について説明します。
燃焼モデルの基本原理は、「燃焼の3要素」です。物を燃やすためには、熱、燃料、酸素を必要とします。十分な酸素はすでに大気中に存在していると想定されているため、シミュレーションに酸素を明示的に追加する必要はありません。その代わり、燃料と熱を加えることにより、燃焼プロセスを制御します。
熱は、Combustionのエレメントのtemperatureインプットに接続されたエミッターによりシミュレーションに投入され、燃料は、fuelインプットに接続されたエミッターにより投入されます。
燃料には、燃料が燃えるときに熱として放出されるエネルギーが含まれます。結果として生じる高温のガスと高温のすすにより、黒体放射と呼ばれるプロセスを通して、炎の明るい部分が作り出されます。この発光は、fireシェーダーによって計算されます。
炎は、基本的に同じプロセスですが、非常に異なって見えることがあります。つまり、キャンドルやキャンプファイヤのようなゆっくりとした燃焼は、爆発やブローランプの火炎のような高速燃焼とまったく違って見えます。炎の特定の挙動は、CombustionのエレメントのCombustionパラメータにより制御されます。燃焼プロセスに関連していく順序で、各項目を見ていきましょう。
- Ignition temperature: これは、燃料を着火させるために、ヒートチャンネルが超えなければならない温度です。従って、燃焼プロセスを始めるには、(理想的には燃料の領域の表面に接触している状態で)熱を追加し、この閾値を超過させる必要があります。
- Fuel combustion threshold: 燃焼を発生させるには、燃料と空気を混合する必要があります。シミュレーションの領域に空気だけがある場合は、燃焼する燃料がなく、燃料だけがある場合は、燃料と反応する空気(酸素)がありません。燃料が燃えるのに最低限必要な空気量は、「Fuel combustion threshold」パラメータにより制御します。燃料値がこの閾値よりも高いシミュレーションの領域は、より多くの空気が混合されるまで燃焼しません。なお、この閾値を超える燃料密度を持つ燃料の固まりを発生させたとしても、燃料の領域の外側には燃料と混じり合うことができる空気が十分にあるため、その領域の表面はまだ発火する可能性があります。
- Combustion temperature: 燃料に火がつくと、燃えながら熱を放出します。Combustion temperatureは、使用した燃料の単位あたりの熱の放出量を制御します。
- Fuel burn rate: このパラメータは、燃料が燃える速度、つまり、公称条件下で毎秒何単位の燃料が消費されるかを制御します。
- Fuel expansion: 燃料が燃焼すると、通常、より多くの体積を占める高温ガスになります。このパラメータは、燃料が燃えながら広がる量(消費される燃料の単位あたりの膨張量)を制御します。これは、燃焼領域の拡大につながります。爆発は、非常に高速な燃焼による急速な膨張の一例です。
- Fuel carbon amount: このパラメータは、消費される燃料の単位あたりに生成されるすす(煙濃度)の量を制御します。値が大きくなると、煤煙の多い燃焼になり、値が小さくなるとはっきりした炎になります。
- Cooling rate: このパラメータは、燃焼から生じた高温ガスの冷却速度を制御します。高温ガスは、熱放射により急速に熱を失います。これは、遠くから炎を見ているときに感じる熱です(炎の熱い部分には接触しておらず、空気は熱くありませんが、それでも熱を感じることができます)。大きい値の場合、炎を生成するガスが速く冷え、小さい値の場合は、ゆっくり冷えるということです。これは、炎の外観に影響を与えます。十分温度の高いオブジェクトは、黒体放射と呼ばれるプロセスにより発光します。冷却が速くなると、炎はより速く暗くなります。