ジャンル雑多なゲーム・ゲーム制作関連の色々な情報を取り扱っているブログ。最近はBlenderについてが中心。
[Blender 2.9] フロー [流体シミュレーション]

[Blender 2.9] フロー [流体シミュレーション]

[Blender 2.9] 流体シミュレーション 『フロー』タイプの機能と使い方のご紹介

今回の記事は、Blenderでの『流体シミュレーション』の[フロー]タイプの設定についてです。

『流体シミュレーション』の基本的な使い方や、どんな機能があるのかをざっくりとまとめたページもありますので、そもそもの『流体シミュレーション』についてという基本的な所を知りたい方には、下記記事から御覧になることをおススメします。

ちなみに、「フロー」とは「流れる」という意味らしいです。

flowとは

(絶え間なく)流れる、流れ出る、わき出る、流れるように動く、流れるように通る、すらすらと流れ出る、流れるように垂れる、風になびく、巡る、通う

引用元: 英語「flow」の意味・使い方・読み方 | Weblio英和辞書

流体[フロー]タイプは、ドメインオブジェクトに流体を追加または削除するために使用されます。

Blender 流体 物理シミュレーション フロー 3DCG 液体
[フロー]タイプのオブジェクト

フローオブジェクトが機能するには、『ドメイン』オブジェクトの『バウンディングボックス』内に含まれている必要があります。

『ドメイン』について、詳しくは下記記事をご覧ください。

ちなみに、『バウンディングボックス』とは、オブジェクトの形状を囲むボックスの事。ボックスはオブジェクトのローカルスペースに揃えられます。

Blender バウンディングボックス ビューポート 3DCG
バウンディングボックス

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

Blender バウンディングボックス ビューポート 3DCG
バウンディングボックスの可視化

※2021年1月3日 加筆修正を行いました。
※2021年1月8日 加筆修正を行いました。

目次

フローオブジェクトの作成方法

メッシュオブジェクトをフローオブジェクトとして定義するには、

  1. 適当なメッシュオブジェクトを用意します。(ドメインオブジェクトと違って、Cube以外のメッシュオブジェクトでも構いません。)
Blender 流体 物理シミュレーション フロー 3DCG
フローオブジェクト用のUV球を3Dビューポート上に追加し、拡縮、移動
  1. [プロパティエディター]>[物理演算プロパティ]で[流体]ボタンをクリックして、[流体]物理演算を追加し、流体の[タイプ]として[フロー]を選択します。
Blender 流体 物理シミュレーション フロー 3DCG
[プロパティエディター]>[物理演算プロパティ]>[流体]
Blender 流体 物理シミュレーション フロー 3DCG
[流体]>[タイプ]で[フロー]を選択

これで、デフォルトの流体フローソースオブジェクトが作成されます。

[設定(Settings)]

[フロータイプ(Flow Type)]

  • [煙(Smoke)] …煙だけを放出します。
  • [火炎 + 煙(Fire + Smoke)] …火炎と煙の両方を放出します。
  • [火炎(Fire)] …火炎だけを放出します。ドメインは、燃焼した燃料によって残された煙をシミュレートするために、自動的に煙を生成することに注意してください。
  • [液体(Liquid)] …液体を放出します。
Blender 流体 物理シミュレーション フロー 3DCG
[フロータイプ: 煙]
Blender 流体 物理シミュレーション フロー 3DCG
[フロータイプ: 火炎 + 煙]
Blender 流体 物理シミュレーション フロー 3DCG
[フロータイプ: 火炎]
Blender 流体 物理シミュレーション フロー 3DCG
[フロータイプ: 液体]

[フローの挙動(Flow Behavior)]

フローオブジェクトがメッシュ全体を追加([流入口])、削除([流出口])、または流体に変換([ジオメトリ])するかどうかを制御します。

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

[フローを使用(Use Flow)]

この項目は、[フローの挙動]で[ジオメトリ]を選択した場合は表示されません。

流体の流れを有効または無効にします。

このプロパティは、流体がドメインに追加またはドメインから削除されるときに、アニメーションで選択的に有効または無効にするのに役立ちます。

例えば、流入口用のオブジェクトの[フローを使用]を、フレーム”1″で有効、フレーム”20″で無効にするキーフレームを打ちます。流出口用のオブジェクトの[フローを使用]には、フレーム”1″で無効、フレーム”40″で有効にするキーフレームを打ちます。

Blender 流体 物理シミュレーション フロー 3DCG
[フローを使用]の有効/無効を切り替えたキーフレームを打つ

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

Blender 流体 物理シミュレーション フロー 3DCG
[フローを使用]のキーフレームを打ったシミュレーション結果

[サンプリングサブステップ(Sampling Substeps)]

動きの速いソースからの流体の放出のギャップを減らすために使用されるサブステップの数。

これらの放出サブステップは、フレーム毎ではなく、全てのシミュレーションステップで発生することに注意してください。シミュレーションのステップ数は、適応時間ステッピングによって制御されます。

Blender 流体 物理シミュレーション フロー 3DCG
[サンプリングサブステップ: 0]
Blender 流体 物理シミュレーション フロー 3DCG
[サンプリングサブステップ: 4]

似たような事が出来る機能もドメインの方で存在します。ドメインの[最大タイムステップ]、[最小]の項もご参照ください。

[煙の色(Smoke Color)]

放出された煙の色。

異なる色の煙が混合されると、それらは混ざり合い、最終的には新しい結合色に落ち着きます。

例えば、下記のような緑色に設定するとします。

Blender 流体 物理シミュレーション フロー 3DCG
[煙の色]を緑色に変更

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

Blender 流体 物理シミュレーション フロー 3DCG
緑色の煙が発生

似たような事が出来る機能もドメインの方で存在します。ドメインの[炎のカラー(Flame Color)]の項もご参照下さい。

[絶対密度(Absolute Density)]

このチェックボックスを有効にすると、エミッター領域にスペースがある場合にのみ、エミッターはより多くの煙または火炎を生成します。そうしない場合、煙や火炎が常に発生し、合計されます。

Blender 流体 物理シミュレーション フロー 3DCG
[絶対密度]チェック有り
Blender 流体 物理シミュレーション フロー 3DCG
[絶対密度]チェック無し

[初期温度(Initial Temperature)]

放出された煙の温度とドメインの周囲温度の差。

この設定の煙への影響は、ドメインの[気体]>[ヒート]によって異なります。

…らしいので、試してみたのですが、違いを目に見える形で出せませんでした。

Blender 流体 物理シミュレーション フロー 3DCG
[初期温度: -10]
Blender 流体 物理シミュレーション フロー 3DCG
[初期温度: 1]
Blender 流体 物理シミュレーション フロー 3DCG
[初期温度: 10]

[密度(Density)]

一度に放出する煙の量。

値が大きい程、生成される密度が高くなります。

Blender 流体 物理シミュレーション フロー 3DCG
[密度: 0]
Blender 流体 物理シミュレーション フロー 3DCG
[密度: 1]

[燃料(Fuel)]

1秒間に燃焼される「燃料」の量。

値が大きい程炎が大きくなり、値が小さい程炎が小さくなります。

Blender 流体 物理シミュレーション フロー 3DCG
[燃料: 1]
Blender 流体 物理シミュレーション フロー 3DCG
[燃料: 5]

[頂点グループ(Vertex Group)]

設定すると、指定した『頂点グループ』を使用して、煙が放出される場所を制御します。

『頂点グループ』について、詳しくは下記記事をご覧ください。

例えば、次のような使い方が出来るかと思います。

まず、フローオブジェクトのUV球の全ての頂点に”1″のウェイトを割り当てた頂点グループを作成します。

blender 頂点グループ 3DCG
頂点グループを作成し、全ての頂点をウェイト”1″に設定

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

blender 頂点グループ 3DCG  頂点ウェイト近傍モディファイアー
『頂点ウェイト近傍モディファイアー』を設定

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

Blender グラフエディター 3DCG ノイズ
グラフエディターで[X位置]を『ノイズモディファイアー』で編集

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

Blender 流体 物理シミュレーション フロー 3DCG
[頂点グループ]に『頂点ウェイト近傍モディファイアー』で編集した頂点グループを使ったシミュレーション結果

ちなみに途中で使用した『頂点ウェイト近傍モディファイアー』について、詳しくは下記記事をご覧ください。

[フローソース(Flow Source)]

[フローソース(Flow Source)]

この設定は、流体を放出するために使用される方法を定義します。

Blender 流体 物理シミュレーション フロー 3DCG
[フロータイプ: 液体]、[フローソース: メッシュ]
Blender 流体 物理シミュレーション フロー 3DCG
[フロータイプ: 火炎 + 煙]、[フローソース: メッシュ]
Blender 流体 物理シミュレーション フロー 3DCG パーティクルシステム
[フロータイプ: 火炎 + 煙]、[フローソース: パーティクルシステム]
[メッシュ(Mesh)]

オブジェクトのメッシュから直接流体を放出します。

[平面(Is Planar)]

エフェクターを単一次元オブジェクト、つまり平面またはメッシュを非多様体として定義します。これにより、流体シミュレータがこれらのタイプのメッシュに対して最も正確な結果を提供することが保証されます。

[フロータイプ]が[煙]や[火炎 + 煙]、[火炎]の場合はこの項目を有効にしようと無効にしようと動作に違いはありませんでした。

[フロータイプ]が[液体]の場合は、例えば下記の画像のように平面メッシュをフローソースオブジェクトとして設置した時に、この項目が無効になっていると、液体パーティクルが放出されません。

Blender 流体 物理シミュレーション フロー 3DCG
フローオブジェクトとして平面を使用

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

Blender 流体 物理シミュレーション フロー 3DCG
[平面]を有効にしてシミュレーションした結果
[表面からの発生距離(Surface Emission)]

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

Blender 流体 物理シミュレーション フロー 3DCG
[表面からの発生距離: 0.5]
Blender 流体 物理シミュレーション フロー 3DCG
[表面からの発生距離: 10.0]
[ボリュームから発生(Volume Emission)]

この項目は、[フロータイプ]で[煙]か[火炎 + 煙]か[火炎]を選択した場合にしか表示されません。

エミッターメッシュ内で放出される流体の量。”0″は無し、”1″は全量です。メッシュが非多様体の場合、ボリュームに基づいて流体を放出すると、予測できない結果が生じる可能性があることに注意してください。

試してみたのですが、目に見える形で違いが出せませんでした。

Blender 流体 物理シミュレーション フロー 3DCG
[ボリュームから発生: 0]
Blender 流体 物理シミュレーション フロー 3DCG
[ボリュームから発生: 1]
[パーティクルシステム(Particle System)]

この項目は、[フロータイプ]で[煙]か[火炎 + 煙]か[火炎]を選択した場合にしか表示されません。

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

[パーティクルシステム(Particle System)]

フローオブジェクトから発生するパーティクルのシステム。

Blender 物理シミュレーション パーティクルシステム 3DCG
[パーティクルシステム]に設定したパーティクルシステムの動作
Blender 流体 物理シミュレーション フロー 3DCG パーティクルシステム
[パーティクルシステム]を設定してベイクしたシミュレーションの結果
[サイズを設定(Set Size)]

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

無効にすると、パーティクルは最も近いボクセルを煙で満たします。

Blender 流体 物理シミュレーション フロー 3DCG パーティクルシステム
[サイズを設定]チェック有り、[サイズ: 1]
Blender 流体 物理シミュレーション フロー 3DCG パーティクルシステム
[サイズを設定]チェック無し
[サイズ(Size)]

シミュレーションセル内のパーティクルサイズ。

Blender 流体 物理シミュレーション フロー 3DCG パーティクルシステム
[サイズ: 1]
Blender 流体 物理シミュレーション フロー 3DCG パーティクルシステム
[サイズ: 10]

[初期速度(Initial Velocity)]

有効にすると、流体はフローソースの運動量を継承します。

[ソース(Source)]

継承された速度の係数。値が”1″の場合、ソースと同じ速度で移動する流体が放出されます。

Blender 流体 物理シミュレーション フロー 3DCG
[ソース: -5]
Blender 流体 物理シミュレーション フロー 3DCG
[ソース: 1]
Blender 流体 物理シミュレーション フロー 3DCG
[ソース: 5]

[ノーマル(Normal)]

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

Blender 流体 物理シミュレーション フロー 3DCG
[ノーマル: -50]
Blender 流体 物理シミュレーション フロー 3DCG
[ノーマル: 0]
Blender 流体 物理シミュレーション フロー 3DCG
[ノーマル: 50]

[初期 X(Initial X)]、[Y]、[Z]

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

Blender 流体 物理シミュレーション フロー 3DCG
[X: 0]、[Y: 0]、[Z: 0]
Blender 流体 物理シミュレーション フロー 3DCG
[X: 5]、[Y: 0]、[Z: 0]
Blender 流体 物理シミュレーション フロー 3DCG
[X: 0]、[Y: 0]、[Z: -5]
Blender 流体 物理シミュレーション フロー 3DCG
[X: 0]、[Y: 0]、[Z: 5]

[テクスチャ(Texture)]

有効にすると、指定したテクスチャと設定を使用して、メッシュのどこから煙や火を放出できるかを制御できます。これらの設定は、流出フローの動作には影響しません。

[テクスチャ(Texture)]

テクスチャを選択するためのデータIDセレクター。

適当なテクスチャを[プロパティエディター]>[テクスチャプロパティ]で作成します。今回は[クラウド]タイプの下記のような設定をしたテクスチャにしました。

Blender テクスチャ 3DCG
[プロパティエディター]>[テクスチャプロパティ]で新規テクスチャを作成
Blender テクスチャ 3DCG
[クラウド]タイプのテクスチャ

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

Blender 流体 物理シミュレーション フロー 3DCG テクスチャ
[テクスチャ]に作成したテクスチャを設定

[マッピング(Mapping)]

生成されたUVを使用するか、手動のマッピングを使用するかを制御します。

  • [生成(Generated)] …フローオブジェクトを中心とした生成座標。
Blender 流体 物理シミュレーション フロー 3DCG
[マッピング: 生成]
  • [UV] …テクスチャ座標にUVレイヤーを使用します。

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

Blender 流体 物理シミュレーション フロー 3DCG UVワープ モディファイアー
UVワープモディファイアーを追加し、[元オブジェクト]に”from”(球エンプティ)、[送り先]に”to”(十字エンプティ)を設定

『UVワープモディファイアー』について、詳しくは下記記事をご覧下さい。

UVマップを操作してシミュレーションした結果、下記のようになりました。

Blender 流体 物理シミュレーション フロー 3DCG UVワープ モディファイアー
UVマップを操作してシミュレーションした結果

[サイズ(Size)]

[マッピング]で[生成]を選択した場合に表示される項目。

全体的なテクスチャスケール。

[サイズ]の入力フィールドの横の点をクリックすると、キーフレームを打てますので、これでフレーム”1″の時に[サイズ]の値を”0.1″、フレーム”100″の時に[サイズ]の値を”10.0″で打っておきます。

Blender 流体 物理シミュレーション フロー 3DCG
[サイズ]入力フィールド横の点からキーフレームを打つ

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

Blender 流体 物理シミュレーション フロー 3DCG
[サイズ]の数値でアニメーションしたシミュレーション結果

[オフセット(Offset)]

Z軸に沿ってテクスチャを変換します。

フレーム”1″で[オフセット]の値を”0″、フレーム”100″で[オフセット]の値を”5″でキーフレームを打ってシミュレーションしてみました。

Blender 流体 物理シミュレーション フロー 3DCG
[オフセット]の数値でアニメーションしたシミュレーション結果

参考にさせて頂いたサイト・ページ一覧

Blenderに関する記事や作品をまとめたページ作りました!

Pocket