このシリーズの第4回チュートリアルでは、Blender 4.5 の Fluid シミュレーターを使った fire と smoke の物理シミュレーションで使用される3種類の Flow オブジェクトのパラメータを詳しく見ていきます。
このチュートリアルは、Blender 4.5 における炎と煙の基礎に関する全10回のミニシリーズの一部です。エピソードの完全な一覧を見るには、ここをクリックしてください。
動画の書き起こし
皆さん、こんにちは!このシリーズの第4回チュートリアルでは、Blender 4.5 の Fluid シミュレーターを使った fire と smoke の物理シミュレーションで使用される3種類の Flow オブジェクトのパラメータを詳しく見ていきます。
今回使用するシーンには、暖炉の中にいくつかの薪が配置されています。これらはひとつの mesh オブジェクトとしてまとまっており、Inflow として設定します。シミュレーション用の Domain はすでに作成してあり、暖炉のボリュームだけを囲んでいます。
薪に Fluid コンポーネントを追加し、タイプを Inflow に設定します。Fire And Smoke モードには Smoke と Fire の両方のパラメータが含まれているため、両方を確認するためにこの組み合わせを選びます。
後ほど、Smoke のみに関連するパラメータを指摘します。ご覧のとおり、パラメータの数はそれほど多くありません。

デフォルトでは Flow Behavior が Geometry に設定されています。前回までに見たように、このモードでは最初に炎と煙を発生させた後、オブジェクトはそれ以上 fire や smoke を放出しません。爆発や一度きりの煙のパフには便利ですが、今回必要なのは Inflow モードです。いずれにせよ、Use Flow チェックボックスを除けば、Geometry と Inflow は同じパラメータを共有しているため、ここでは Inflow を見ながらすべてを確認していきます。
前回のエピソードで説明したとおり、炎の量を制御するには Fuel パラメータを調整できます。今回の場合、少し下げれば活発だが過剰ではない炎を作れますし、大きく下げれば赤熱した熾火のような表現が可能です。

Domain のサイズを少し小さくして解像度を上げました。Inflow パラメータを確認する前に、Outflow オブジェクトを使って暖炉内の煙を消す方法を見ていきましょう。
Outflow オブジェクトは mesh で、fire や smoke を衝突時に消す役割を持ちます。ここでは単純な Plane を追加して Outflow として使い、暖炉の上部、煙突に煙が上がる位置に配置しました。Outflow オブジェクトは Inflow と同様に、レンダリングで表示される必要はありません。そこで 3D Viewport プレビューと最終レンダリングの両方で Outflow オブジェクトの表示を無効にします。今後は Outliner から選択します。
そのオブジェクトに Fluid コンポーネントを追加し、タイプを Smoke Flow、Behavior を Outflow に設定します。このタイプのオブジェクトにはパラメータがほとんどなく、実際には Geometry や Inflow にも存在するものです。簡単に説明します。Is Planar オプションは、オブジェクトにボリュームがない場合、あるいは閉じていない場合に選択します。Plane はまさにそのようなオブジェクトなので、このオプションを有効にします。Use Flow パラメータは Inflow や Outflow を有効または無効にでき、アニメーション可能なので、断続的または不連続に fire や smoke を発生・除去したい場合に便利です。Sampling Substeps パラメータはフレーム間で追加計算されるシミュレーションステップの数を定義し、シミュレーションの品質を向上させます。特に高速なシミュレーションに有効で、3 などの低い値でも明確な違いが見られます。Surface Emission と Volume Emission は fire や smoke の放出や除去の位置をオブジェクトの surface または volume からどの程度ずらすかを制御しますが、この状況では不要です。
Flow Source については後ほど解説します。
シミュレーションを再生すると、最初は問題ないように見えますが、ある時点で煙が少し上に抜け出してしまうのが分かります。Substeps の数を増やしても状況は変わりません。

Plane を 3D View で再び表示させ、視点を変えてみると解決策が明らかになります。Plane が小さすぎるため、ある時点で煙が外に抜け出して上昇してしまうのです。唯一の解決策は Plane を適切にリサイズして、もう一度試すことです。

では、Outflow で扱ったものを除いて Inflow オブジェクトのパラメータを詳しく見ていきましょう!Smoke Color は実際には 3D Viewport プレビューでの煙の色を指しています。レンダリング時の煙の色は別の場所で定義されます。ここで異なる色を割り当てることで、複雑なシーンで煙を見分けやすくしたり、このオブジェクトの Attribute を Shading で利用して Domain Material の色やその他の要素を変化させたりすることができます。
Absolute Density フィールドはデフォルトで有効になっており、通常はそのままにしておくのが良いです。これにより、Domain 内の fire と smoke の密度に一定の上限が設けられます。無効にすると fire と smoke が極端に増え、制御不能の炎のような結果になることもあります。ここでは Outflow があるので影響は抑えられますが、デモとしてこのオブジェクトを一時的に Domain から外して炎が増える様子を見せています。Absolute Density を無効にするのが有効な場合もありますが、多くのケースではそうではないため、再び有効に戻します。
Initial Temperature と Density パラメータは smoke に関連するもので、Fire のみの simulation では使用できません。Density は放出する煙の量を指し、値が高いほど煙のボリュームが大きくなります。今回のシーンでは煙が多すぎるので、この値を下げます。
Initial Temperature パラメータは、煙の温度と周囲の環境温度との差を定義し、ガスが上昇する速さを制御します。ただし、その効果は Domain のパラメータである Buoyancy Heat に依存しているので、別のエピソードで詳しく解説します。
これまで Inflow オブジェクトは表面全体から flame を放出していましたが、Vertex Group で頂点を選択し、その名前を Flow コンポーネントの専用フィールドに指定することで、放出をオブジェクトの特定部分に限定することもできます。
flame の放出にバリエーションを加えるもうひとつのツールが Inflow パネルの下部にある Texture です。ここで Texture を割り当てられ、特に重要なのは Offset フィールドです。これは procedural Texture のどの「スライス」を使うかを定義します。Clouds や Noise などの procedural Texture は2D イメージではなく、実際には 3D volume です。Offset 値を Timeline に沿ってアニメーションさせることで、Texture が縦方向にシフトし、毎回異なるパターンで放出されます。これにより flame の見た目が均一ではなくなります。ただし、この方法は適切な Texture の種類と Offset の変化の組み合わせを見つけるまでに何度も試行が必要になるのが難点です。

Initial Velocity グループのツールを使えば、flame に初期の方向や速度を与えることができます。
フィールド名は直感的なので説明はこれくらいにして、実際の例は別のシーンで後のエピソードにてお見せします。
最後に Flow Source フィールドです。ここでは Mesh と Particles を選択できます。意味は分かりやすいと思います。これまでは Mesh を使い、オブジェクトから fire と smoke を放出してきました。
必要であれば Vertex Group で放出面を限定することもできます。
しかしオブジェクトには particle system を持たせることもでき、場合によっては emitter ではなく particles から fire や smoke を発生させたいこともあります。
その場合は Flow Source を Particles に設定し、もちろん mesh のどの particle system が simulation を駆動するかを指定する必要があります。ご想像のとおり、Flow コンポーネントはジオメトリに対して、または選択したオブジェクトの特定の particle system に対して割り当てることができます。