このシリーズの第9回チュートリアルでは、Blender 4.5 の Fluid シミュレーターを使った fire と smoke の simulation において、Turbulence や Curve Guide といった Force Field を使い、simulation 要素の挙動や軌道に影響を与える方法を見ていきます。
このチュートリアルは、Blender 4.5 における炎と煙の基礎に関する全10回のミニシリーズの一部です。エピソードの完全な一覧を見るには、ここをクリックしてください。
動画の書き起こし
皆さん、こんにちは!このシリーズの第9回チュートリアルでは、Blender 4.5 の Fluid シミュレーターを使った fire と smoke の simulation において、Turbulence や Curve Guide といった Force Field を使い、simulation 要素の挙動や軌道に影響を与える方法を見ていきます。
今回のチュートリアルで使用する開始シーンは非常にシンプルで、Domain と fire と smoke を Inflow モードで放出する sphere だけで構成されています。
シーンに Empty を追加すると、それに Force Field を割り当てて simulation 要素を乱したり誘導したりできます。Force Field は Physics パネルにあり、Mesh オブジェクトの Fluid simulation と同じ場所にあります。ここでは Empty のタイプに Arrows を選びました。一部の Force Field は特定の方向に作用するため、このタイプを使うと視覚的に分かりやすいからです。

その後 Force Field を追加すると、デフォルトでは Force タイプになっています。各 Force Field には、その作用と影響する方向を説明するツールチップが表示されます。Force はデフォルトで Point 形状を持ち、中心から放射状に作用します。しかし simulation を再生しても効果は見られず、Inflow オブジェクトが Force Field の範囲内にあるように見えるにもかかわらず、何も起こりません。
このような場合に有効と思われる手順は次のとおりです。まずプロジェクトファイルを保存し、cache フォルダーを指定します。
次に Domain の Baking モードを All に切り替え、少なくとも数フレーム分の simulation を Blender に計算させます。
この処理が完了したら Play を押して、simulation が正しく計算されたか確認します。
うまくいっていれば、Domain Cache をクリアし、Baking モードを Replay に戻します。
その後、プロジェクトのアニメーションの長さと Domain の simulation フレーム範囲を調整し、Timeline の Play をクリックします。simulation が正常に動作するようになったら、以降は Replay モードでさまざまな効果をテストできます。
効果の強さを制御するには、Force Field に Strength フィールドが用意されており、これは選択した Force Field に適用され、アニメーションも可能です。補足として、フィールドの値を複数のオブジェクトに同時に変更する場合、ALT キーを押しながらフィールドをクリックして編集すれば可能です。

したがって Strength を使えば、個々の Force Field の強さを調整でき、アニメーションで変化させることもできます。しかし Domain に関するチュートリアルで学んだように、シーン内のすべての Force Field、あるいは特定タイプの Force Field の影響力をまとめて制御することも可能です。これらの設定は Domain の Field Weights セクションにあり、多くの場合キーフレームも設定できるため、1つまたはすべての Force Field の効果を時間経過に応じてアニメーション化できます。
Force の Strength フィールドは、他の多くの Force Field と同様に負の値を取ることもできます。Force の場合、これによって fire が Force Field に引き寄せられるようになります。画面では、シーン内で Empty の動きをアニメーションさせ、Force に負の値を設定した例を示しています。ご想像のとおり、これは fire と smoke を制御する興味深い方法です。
Blender に用意されているすべての Force Field のパラメータを解説するには、別のミニシリーズが必要になるでしょう。なのでここでは扱いませんが、ひとつ注目すべきセクションがあります。それが Falloff で、Force Field の影響範囲を設定できます。

現状では、Force Field は減衰なしで仮想空間全体に影響を与えています。より分かりやすい例を示すために、Force を Wind に変更し、Strength を負のままにしました。Wind は Z 軸方向のみに作用し、Inflow オブジェクトからかなり離れた位置に配置されていますが、それでも Inflow は影響を受けています。

Force Field の影響範囲を制限するには、Falloff セクションの Max Distance フィールドを使用します。このパラメータはデフォルトでは無効です。
有効にすると、Force Field の範囲が 3D Viewport に円で表示されます。他の多くのパラメータと同様に、Max Distance にもキーフレームを設定でき、アニメーションで Force Field の効果を制御する方法のひとつになります。この場合、Strength を負にしたままなので、Wind が flame と smoke を引き寄せています。

次に Max Distance を無効にし、Force Field を元の方向に戻して Strength を正の値に設定し、他の Force Field をいくつか簡単に確認してみます。
flame に動きを加えるのに非常に便利な Force Field は、もちろん Turbulence です。導入される乱れは非常に強力で、smoke が flame を見えにくくしてしまうため、Domain の Dissolve オプションを使ってこれを抑えています。
Turbulence は Noise パラメータを増やすことでさらにランダムにできます。この Noise は実際には疑似乱数で、一定のパターンに従っています。Noise Seed パラメータを使ってそのパターンを選ぶことができます。もし flame が Vorticity や Texture を調整してもまだ均一に見える場合、小さな Turbulence Force Field がまさに必要なものかもしれません。
最後に Curve Guide Force Field を見ていきましょう。これは simulation の要素をパスに沿って動かすことができます。この例のために、最初のシーンを一から再現し、新しいファイルにプロジェクトを保存し、Domain 用に新しい cache フォルダーを設定しました。
こうすることで、シーンに配置した Domain と Inflow オブジェクトの初期設定は作成時のデフォルトのものになります。ただし、煙で視界が遮られすぎないように、Dissolve を有効にし、デフォルトより多めのフレーム数を設定しました。また、パスのカーブを配置するスペースを確保するために Inflow オブジェクトを横に移動しました。

Bezier カーブを追加し、それに Curve Guide Force Field を割り当てたところ、結果はかなり残念なものでした。カーブや Curve Guide モディファイアに慣れている方なら、カーブの Origin をパスの始点に設定し、最も重要なのはカーブの向きが正しいことを確認するのが良い習慣であるとご存じでしょう。これは Edit Mode の Curve Overlays で確認でき、向きが間違っている場合は Switch Direction で修正できます。simulation を再起動すると、見た目は少し良くなりますが、まだ完全には正しくありません。
Domain で Gravity を無効にしたり、Field Weights 内の Curve Guide 値を上げたりと、さまざまな設定を試しました。もちろん Vorticity や Reaction Speed を下げたり、解像度を上げたりもしました。何かしらの変化はありましたが、十分ではありません。そこで、私が望む結果を得るために普段使っている方法をお見せします。Inflow を持つオブジェクトに Particle System の Emitter タイプを追加し、パーティクルが正しく放出されるように基本パラメータを設定します。Emitter が Force Field の範囲内にあるため、パーティクルはすぐにカーブパスに沿って動きます。

Force Field の範囲は、そのパネル内の Minimum Distance パラメータで設定できます。
ここで Clumping を 1 に設定すれば、すべてのパーティクルがカーブの終点に収束します。
この時点で、Emitter の Particle System の Render を None に設定します。
これらのパーティクルはレンダリングされるべきではないからです。その後、Inflow パネルに戻ります。
このパネルで Flow Source を Mesh から Particle System に変更し、先ほど作成した Particle System を指定します。こうすることで、カーブに沿って動くパーティクルから fire と smoke が放出されます。
ここから Fuel、Vorticity などのパラメータを調整して、flame に望む見た目を与えることができます。

チュートリアルを終える前に、Hooking と呼ばれるテクニックを使ってカーブの制御点を外部オブジェクトにリンクする方法も紹介します。
これにより、カーブの形を簡単にアニメーション化できます。
まずカーブを選択し、Edit Mode に入り、最後の制御点を選びます。次に Hook オペレーターを使用し、Hook To New Object オプションを選択すると、そのための Empty が作成されます。

Object Mode では、この Empty を動かしてアニメーション化でき、その動きに応じてカーブと flame が変形します。もちろん同じテクニックを使って他の制御点にも Empty を追加し、より複雑なアニメーションを作成することも可能です。

ご覧のとおり、ある時点でパーティクルの放出が止まります。
これは Frame End と呼ばれるパラメータで、Particle System パネル内にあります。同じパネルにある Lifetime パラメータは、パーティクルがカーブに沿って進む速さを制御します。

最後にもう少し考慮すべき点を挙げます。Emitter オブジェクトのサイズは放出面の大きさを決定します。したがって、パーティクルをより細いカーブに集中させたい場合は、このオブジェクトのサイズを調整してください。また、パーティクルの数は flame カーブがどれほど分割されて見えるかに影響するので、炎を滑らかで連続した見た目にするには数を増やす必要があります。この点については、次回のチュートリアルで扱う Motion Blur を使用するのも効果的です。