[Blender 2.9] 流体シミュレーション 『フロー』タイプの機能と使い方のご紹介
今回の記事は、Blenderでの『流体シミュレーション』の[フロー]タイプの設定についてです。
『流体シミュレーション』の基本的な使い方や、どんな機能があるのかをざっくりとまとめたページもありますので、そもそもの『流体シミュレーション』についてという基本的な所を知りたい方には、下記記事から御覧になることをおススメします。
ちなみに、「フロー」とは「流れる」という意味らしいです。
flowとは
(絶え間なく)流れる、流れ出る、わき出る、流れるように動く、流れるように通る、すらすらと流れ出る、流れるように垂れる、風になびく、巡る、通う
引用元: 英語「flow」の意味・使い方・読み方 | Weblio英和辞書
流体[フロー]タイプは、ドメインオブジェクトに流体を追加または削除するために使用されます。

フローオブジェクトが機能するには、『ドメイン』オブジェクトの『バウンディングボックス』内に含まれている必要があります。
『ドメイン』について、詳しくは下記記事をご覧ください。
ちなみに、『バウンディングボックス』とは、オブジェクトの形状を囲むボックスの事。ボックスはオブジェクトのローカルスペースに揃えられます。

『バウンディングボックス』は、[プロパティエディター]>[オブジェクトプロパティ]>[ビューポート表示]>[バウンド]([ボックス]選択状態で)を有効にすると可視化できます。

※2021年1月3日 加筆修正を行いました。
※2021年1月8日 加筆修正を行いました。
目次
フローオブジェクトの作成方法
メッシュオブジェクトをフローオブジェクトとして定義するには、
- 適当なメッシュオブジェクトを用意します。(ドメインオブジェクトと違って、Cube以外のメッシュオブジェクトでも構いません。)

- [プロパティエディター]>[物理演算プロパティ]で[流体]ボタンをクリックして、[流体]物理演算を追加し、流体の[タイプ]として[フロー]を選択します。


これで、デフォルトの流体フローソースオブジェクトが作成されます。
[設定(Settings)]
[フロータイプ(Flow Type)]
- [煙(Smoke)] …煙だけを放出します。
- [火炎 + 煙(Fire + Smoke)] …火炎と煙の両方を放出します。
- [火炎(Fire)] …火炎だけを放出します。ドメインは、燃焼した燃料によって残された煙をシミュレートするために、自動的に煙を生成することに注意してください。
- [液体(Liquid)] …液体を放出します。




[フローの挙動(Flow Behavior)]
フローオブジェクトがメッシュ全体を追加([流入口])、削除([流出口])、または流体に変換([ジオメトリ])するかどうかを制御します。
- [流入口(Inflow)] …このオブジェクトは、水道水や火の土台のように、シミュレーションに流体を放出します。
- [流出口(Outflow)] …このオブジェクトに入る流体全てドメインから削除されます(排水管またはブラックホールを考えてください)。これは、ドメイン全体がいっぱいになるのを防ぐために、流入と組み合わせて使用すると便利です。流出口オブジェクトは、アニメーション化でき、流体が消える領域は、オブジェクトが動き回る時にオブジェクトに追従します。
- [ジオメトリ(Geometry)] …ドメインバウンディングボックス内にあるこのオブジェクトの全ての領域は、シミュレーションで実際の流体として使用されます。ドメイン内に複数の流体オブジェクトを配置出来ます。また、サーフェス法線が外側を向いていることを確認してください。外側を向いていない場合、正しくシミュレートされません。ドメインオブジェクトとは対照的に、実際のメッシュジオメトリは流体オブジェクトに使用されます。





[フローを使用(Use Flow)]
この項目は、[フローの挙動]で[ジオメトリ]を選択した場合は表示されません。
流体の流れを有効または無効にします。
このプロパティは、流体がドメインに追加またはドメインから削除されるときに、アニメーションで選択的に有効または無効にするのに役立ちます。
例えば、流入口用のオブジェクトの[フローを使用]を、フレーム”1″で有効、フレーム”20″で無効にするキーフレームを打ちます。流出口用のオブジェクトの[フローを使用]には、フレーム”1″で無効、フレーム”40″で有効にするキーフレームを打ちます。

シミュレーションさせた結果が↓になります。

[サンプリングサブステップ(Sampling Substeps)]
動きの速いソースからの流体の放出のギャップを減らすために使用されるサブステップの数。
これらの放出サブステップは、フレーム毎ではなく、全てのシミュレーションステップで発生することに注意してください。シミュレーションのステップ数は、適応時間ステッピングによって制御されます。


似たような事が出来る機能もドメインの方で存在します。ドメインの[最大タイムステップ]、[最小]の項もご参照ください。
[煙の色(Smoke Color)]
放出された煙の色。
異なる色の煙が混合されると、それらは混ざり合い、最終的には新しい結合色に落ち着きます。
例えば、下記のような緑色に設定するとします。

シミュレーションすると、下記のように緑色の煙が発生するようになります。

似たような事が出来る機能もドメインの方で存在します。ドメインの[炎のカラー(Flame Color)]の項もご参照下さい。
[絶対密度(Absolute Density)]
このチェックボックスを有効にすると、エミッター領域にスペースがある場合にのみ、エミッターはより多くの煙または火炎を生成します。そうしない場合、煙や火炎が常に発生し、合計されます。


[初期温度(Initial Temperature)]
放出された煙の温度とドメインの周囲温度の差。
この設定の煙への影響は、ドメインの[気体]>[ヒート]によって異なります。
…らしいので、試してみたのですが、違いを目に見える形で出せませんでした。



[密度(Density)]
一度に放出する煙の量。
値が大きい程、生成される密度が高くなります。


[燃料(Fuel)]
1秒間に燃焼される「燃料」の量。
値が大きい程炎が大きくなり、値が小さい程炎が小さくなります。


[頂点グループ(Vertex Group)]
設定すると、指定した『頂点グループ』を使用して、煙が放出される場所を制御します。
『頂点グループ』について、詳しくは下記記事をご覧ください。
例えば、次のような使い方が出来るかと思います。
まず、フローオブジェクトのUV球の全ての頂点に”1″のウェイトを割り当てた頂点グループを作成します。

次に、『頂点ウェイト近傍モディファイアー』を追加し、適当なオブジェクトを[ターゲットオブジェクト]に設定します。今回は立方体にしました。

立方体で[位置]のキーフレームを1つだけ打ったら、後は[グラフエディター]上で[X位置]を『ノイズモディファイアー』でブレさせます。

[頂点グループ]に先ほど作成した頂点グループを設定してシミュレーションした場合、下記のようになります。ムラを出す場合などに良いかもしれません。

ちなみに途中で使用した『頂点ウェイト近傍モディファイアー』について、詳しくは下記記事をご覧ください。
[フローソース(Flow Source)]
[フローソース(Flow Source)]
この設定は、流体を放出するために使用される方法を定義します。



[メッシュ(Mesh)]
オブジェクトのメッシュから直接流体を放出します。
[平面(Is Planar)]
エフェクターを単一次元オブジェクト、つまり平面またはメッシュを非多様体として定義します。これにより、流体シミュレータがこれらのタイプのメッシュに対して最も正確な結果を提供することが保証されます。
[フロータイプ]が[煙]や[火炎 + 煙]、[火炎]の場合はこの項目を有効にしようと無効にしようと動作に違いはありませんでした。
[フロータイプ]が[液体]の場合は、例えば下記の画像のように平面メッシュをフローソースオブジェクトとして設置した時に、この項目が無効になっていると、液体パーティクルが放出されません。

有効にすると、液体パーティクルが放出されます。

[表面からの発生距離(Surface Emission)]
流体が放出されるメッシュの表面からのボクセル単位の最大距離。この設定では、ボクセルを使用して距離を決定するため、結果はドメインの解像度によって異なります。


[ボリュームから発生(Volume Emission)]
この項目は、[フロータイプ]で[煙]か[火炎 + 煙]か[火炎]を選択した場合にしか表示されません。
エミッターメッシュ内で放出される流体の量。”0″は無し、”1″は全量です。メッシュが非多様体の場合、ボリュームに基づいて流体を放出すると、予測できない結果が生じる可能性があることに注意してください。
試してみたのですが、目に見える形で違いが出せませんでした。


[パーティクルシステム(Particle System)]
この項目は、[フロータイプ]で[煙]か[火炎 + 煙]か[火炎]を選択した場合にしか表示されません。
フローオブジェクトの『パーティクルシステム』から煙または火を作成します。これは、データIDで選択できます。煙や火を追加できるのは、エミッタータイプのパーティクルシステムのみであることに注意してください。パーティクルシステムを作成する方法については下記記事の「『パーティクル』の基本的な使い方」を参照して下さい。
[パーティクルシステム(Particle System)]
フローオブジェクトから発生するパーティクルのシステム。


[サイズを設定(Set Size)]
この設定を有効にすると[サイズ]設定で、メッシュソースの[表面からの発生距離]設定と同様に、パーティクルが煙を放出できるボクセルの最大距離を定義できます。
無効にすると、パーティクルは最も近いボクセルを煙で満たします。


[サイズ(Size)]
シミュレーションセル内のパーティクルサイズ。


[初期速度(Initial Velocity)]
有効にすると、流体はフローソースの運動量を継承します。
[ソース(Source)]
継承された速度の係数。値が”1″の場合、ソースと同じ速度で移動する流体が放出されます。



[ノーマル(Normal)]
このオプションは、面法線に沿って与えられる速度流体の量を制御します。初期速度は常に全ての面法線に沿って適用されることに注意してください。したがって、閉じたフローソースメッシュでは、流体は常に複数の方向に放出されます。一方向のみに沿って初速度を設定するには、全ての法線が同じ方向を指す必要があります。これは、平面をフローオブジェクトとして使用する場合に実現できます。



[初期 X(Initial X)]、[Y]、[Z]
ワールド空間のX、Y、Z座標に沿った初期速度。これは、法線に沿った初期速度に加えて使用できます。




[テクスチャ(Texture)]
有効にすると、指定したテクスチャと設定を使用して、メッシュのどこから煙や火を放出できるかを制御できます。これらの設定は、流出フローの動作には影響しません。
[テクスチャ(Texture)]
テクスチャを選択するためのデータIDセレクター。
適当なテクスチャを[プロパティエディター]>[テクスチャプロパティ]で作成します。今回は[クラウド]タイプの下記のような設定をしたテクスチャにしました。


[物理演算プロパティ]に戻って、作成したテクスチャを[テクスチャ]に設定します。

[マッピング(Mapping)]
生成されたUVを使用するか、手動のマッピングを使用するかを制御します。
- [生成(Generated)] …フローオブジェクトを中心とした生成座標。

- [UV] …テクスチャ座標にUVレイヤーを使用します。
[UV]による変化を試すために、『UVワープモディファイアー』とエンプティ2つを使って、UVマップを3Dビューポート上で操作できるようにします。

『UVワープモディファイアー』について、詳しくは下記記事をご覧下さい。
UVマップを操作してシミュレーションした結果、下記のようになりました。

[サイズ(Size)]
[マッピング]で[生成]を選択した場合に表示される項目。
全体的なテクスチャスケール。
[サイズ]の入力フィールドの横の点をクリックすると、キーフレームを打てますので、これでフレーム”1″の時に[サイズ]の値を”0.1″、フレーム”100″の時に[サイズ]の値を”10.0″で打っておきます。

シミュレーション結果は下記のようになりました。

[オフセット(Offset)]
Z軸に沿ってテクスチャを変換します。
フレーム”1″で[オフセット]の値を”0″、フレーム”100″で[オフセット]の値を”5″でキーフレームを打ってシミュレーションしてみました。

参考にさせて頂いたサイト・ページ一覧
- Fluid — Blender Manual
- 英語「flow」の意味・使い方・読み方 | Weblio英和辞書
- Blender Physics -Mantaflow- Chapter 1- Simple Flow – YouTube
- Blender Physics /Mantaflow Chapter 2 -Shading Volumetrics – YouTube
- Cinematic Fire Simulation – Blender Physics / Mantaflow – Chapter 3 – YouTube
- Blender 2.9/ Mantaflow Chapter 4 – Liquid Simulations – YouTube
- Blender Tutorial – Gradient Fire Animation (2.83) – YouTube
- 【Blender2.9】簡単な流体シミュレーションの作り方【チュートリアル】 – YouTube