💥

(EmberGen)爆発-作り方から出力まで-

2022/01/25に公開

*概要
EmberGenで爆発を一から作成、出力する方法

*作業環境
EmberGen:v0.7.5.2
OS:Windows10
GPU:GeForce RTX3090

EmberGenとは

JangaFX Softwareの提供するボリュメトリック流体シミュレーションソフトです。
主に爆発や炎、煙のエフェクトを得意としています。

特徴的なのはシンプルなノードグラフとレンダリングの速さです。
ノードベースのワークフローで、パラメーターでシミュレーションを調整します。
また、リアルタイムでレンダリングされ続けるため、計算結果をいち早くプレビュー出来ます。

起動にはライセンスが必要ですが、13日間の無料トライアルも利用可能です。

レンダーパス

UI

プレビュー

シミュレーション結果を表示します。

ノードグラフ

ここで様々なノードを組み合わせ、シミュレーションのシステムを構築します。

ノード設定

各ノードの設定を行います。
数値を指定して、パラメーターの設定等、環境や加減をカスタムできます。

タイムライン

キーフレームでアニメーションをつけることが可能です。


基本的なパネルは上記の4つになり、
大抵の作業はこれらのパネルで完結します。

それでは、爆発を作成してみます。

爆発を作る

今回の完成系はこちらになります。

それでは作成していきます。


まずEmberGenを立ち上げ、ホーム画面から新しいプロジェクトを作成しましょう。

するとすでに何かしら燃えているものが現れますが、
今回は一から爆発を作るので、ノードグラフを全て消しまっさらな状態にしましょう。

ノード

EmberGenのシミュレーションはノードを組むことで計算が行われます。
各ノードはノードグラフ上から右クリックで選択、追加できます。

必要なノード

  • Emitter
  • Shape
  • Simulation
  • Volume
  • Shading
  • Light
  • Scene
  • Render

Emitter(エミッター)


これは発生源となるもので、エミッターのいる座標からシミュレーションが行われます。
しかしこのノードだけではエフェクトを発生させることはできず、
エミッターをどのような形で生成するか指定する必要があります。

Shape(シェイプ)


シェイプノードは、エミッターの形状を決めることができます。

Simulation


実際にシミュレーションを行うノードです。

Volume(ボリューム)


EmberGenはボリュームレンダリングをベースとしています。
ボリュームはボクセルと呼ばれる3次元画像から構成され、
ボクセルからピクセルに変換し2次元画像としてレンダリングします。

ボリュームノードを繋ぐことでボクセルを生成します。

Scene(シーン)


プレビュー上の空間をシーンと言い、シミュレーションが行われる舞台を意味します。
シーンノードでプレビューのルックをカスタムできます。

Light(ライト)


シーン上の光源を設定します。
光がないと暗すぎて何も映りません。

ライトノードは以下の種類があります。

  • Ambient
  • Directional
  • Point
  • Spot

Shading(シェーディング)


ライトの設定を元に陰影処理を行います。

Render(レンダー)


シミュレーション結果をプレビューに表示するためのノードです。
シーン上にカメラを追加し、インプットにつないでカメラ視点をプレビューすることも出来ます。


これらのノードを、とりあえず全て繋げてみましょう。
 
プレビュー上にシミュレーション結果が表示されました。

このままでは燃え続ける炎の玉なので、
これを一回限りの爆発にしようと思います。

タイムライン

EmberGenで爆発を作るには、燃焼を一瞬だけシミュレーションさせる方法があります。
つまり、エミッターを操作して炎の生成を開始/停止と素早く切り替えます。

そのためには、切り替えのアニメーションを実装する必要があります。

キーフレーム

今回実装するのは、Emitterノードをアクティブ/非アクティブにするアニメーションです。

各ノードをクリックすると、Node Details(ノードの詳細)が表示されます。

Activityタブに、Emitter activityという項目があります。
これをオフにするとエミッターが動作を停止し、何も生成されなくなります。

この項目にキーフレームを打ち、オン/オフを切り替えます。
キーフレームを設定できる項目には、以下のようなボタンがあります。

押してみましょう。

緑のひし形になりました。
キーフレームが有効化された印です。
タイムラインパネルを確認すると、

Emitter activityが新しく追加されています。
これでキーフレーム操作が可能になりました。

それでは、これに以下のような動作を設定しましょう。

スタート時は"無効"→1秒後に"有効"→直後に"無効"

まず、デフォルトの状態を"無効"にします。

シークバーをタイムラインの先頭に移動しましょう。

この枠にフレーム数を入力すれば、指定した位置に移動できます。
スタート時に移動するため、0と入力します。

ではこの位置で、ではこの位置で、Emitter activityのEnableをオフにします。

キーフレームが打たれました。
これで、スタート時はEmitter activityが"無効"の状態で開始します。

次に、1秒後に"有効"に切り替えます。

タイムラインのシークバーを1秒後に移動します。
フレームレートは60fpsなので、60と入力しましょう。

移動したら先程と同様に、Emitter activityをEnableにします。

スタートして1秒後にEmitter activityが"有効"に切り替わる動作が実装されました。

そして、その直後に再び"無効"に切り替えます。

70fに移動し、Enableをオフにしましょう。

この状態でタイムラインを再生してみます。 

一瞬だけ燃焼し、その後すぐ消えるようになりました。

ここから各ノードを調整して、爆発っぽい見た目にします。

ノードの調整

現状、爆発のスケールが小さいので、ノードを調整して大きな爆発にしたいと思います。

今回は以下の項目を調整しました。

エミッターノード

Emission(エミッション/放出)

Fuel Rate →300.000

燃料の量

Smoke Rate →300.000

発煙の量

ちなみに、Temperatureは燃料の温度です。

Pressure(プレッシャー/圧力)

Additional pressure rate →400.000

爆発にかかる圧力の力を追加します。

シミュレーションノード

Force(フォース/力)

Buoyancy →150.000

爆発が上昇する浮力を指定します。

以上の調整を終えたら、一度確認してみましょう。

より大きな爆発になりました。
しかし、このままでは一つ問題があります。

よく見ると、拡散した煙が見えない壁に阻まれているのが分かるでしょうか。

Bounding Box(バウンディングボックス)

プレビューパネルの[view]から[Bounding Box]にチェック、またはキーボードのBを押してみましょう。

プレビューがこのようになったでしょうか。
これは、バウンディングボックスの範囲が表示されている状態です。

EmberGenのシミュレーションはこのバウンディングボックス内で行われます。
大きな爆発等はバウンディングボックスの壁にぶつかると跳ね返ってしまい、
不自然な動きに見えることがよくあります。

バウンディングボックスは、シミュレーションの規模に合わせてリサイズしましょう。

バウンディングボックスのサイズは、
シミュレーションノードの[Simulation Size]から変更できます。

[Voxel Count]という項目を見ると、
128 × 128 × 256
となっています。これがバウンディングボックスの面積になります。

ここを
256 × 256 × 512
に変更してみましょう。

数値を入力した段階ではまだリサイズはされません。
変更後、下の方に[Appry New Resolution]というボタンが表示されるのでクリックします。


[Voxel Count]が更新され、Baunding Boxが大きくなりました。
この状態で再生してみます。

これでのびのびと爆発できるようになりました。

ただし、バウンディングボックスのサイズが大きい程に、
プレビューの処理が重くなってしまうので気をつけましょう。

クオリティに関してはまだ詰める余地大ありですが、これで爆発らしきものができました。
それでは、完成したシミュレーションを出力してみましょう。

出力

最後に出力の手順です。
ですが、その前にまずカメラを設定しましょう。

出力の際、シミュレーションをどの角度からレンダリングするか決めなければなりません。
そのために、シーン内にカメラを置く必要があります。

Camera(カメラ)

カメラを設置するには、カメラノードを追加します。

このノードを、レンダーノードにつなげましょう。

続いて、プレビューの表示設定をカメラアングルにします。
プレビューパネルのツールバーにある、このようなマークをクリックしましょう。

Defaultを選択すると、シーン内を移動できます。
Cameraを選択すると、カメラからみたシーンをプレビューします。
アングルはカメラノードの詳細から調整しましょう。

Export(エクスポート)

出力には、エクスポートノードを使います。
種類は、ImageとVDBがあります。

VDBはシミュレーションをボリュームごと出力する方法で、
BlenderやMaya等のモデリングソフトで読み込むことができます。

静止画で出力する場合はImageの方を使います。

まず先に、RenderノードのCapture Typesより、
シミュレーションの何をレンダリングするか決めます。

EmissiveやScattering等、様々なレンダーパスごとにレンダリングが可能です。
今回は完成系の全体を出力する為、Render Allを選択しましょう。

すると、RenderノードにRGBで分かれたピンが出現するので、
ExportノードのRGBピンにそれぞれ接続しましょう。

接続したら、Exportノードから出力できるようになります。

Export ModeにはSequenceとFlipbookがあります。
Sequenceは連番、Flipbookはテクスチャシートです。

Flipbook(8×8=64フレーム)
Flipbookについては、こちらの記事でまとめております。

今回はSequenceを選び、出力した連番をAEでレンダリングしました。

結果

完成した爆発がこちらです。

爆発としてのクオリティはまだまだですが、
これほどのシミュレーションをかなり簡易的に作成できることがわかりました。
使い方次第でもっとユニークに爆発させることも出来るので、是非お試しください。


参考

EmberGen Tutorials

Discussion