【Blender】流体シミュレーションで水などの液体を表現する

水を出す手順

シミュレーション用のオブジェクトを配置する

発射口として今回はUVSphearを使う。これにフローのシミュレーションを設定する。

シミュレーションを行う領域を規定する。今回は立方体を伸ばし、発射口を覆うように配置する。

手動でなくても発射口オブジェクトを選択した状態で,Object – Quick Effect – Quick Liquidを実行することで簡単にシミュレーションを追加可能。

フローの設定

発射口オブジェクトを選択した状態でPhysicsPropertiesを開き、Fluidを追加する。
TypeをFlow, FlowTypeをLiquid, FlowBehaviorをInflowに設定する。

ドメインの設定

立方体オブジェクトを選択し(QuickEffectでない場合は自分で用意し)、PhysicsPropertiesからFluidシミュレーションを追加する。

TypeはDomain DomaintTypeはLiquidに設定する。

下にあるMeshにチェックを入れる。

さらにどのフレームから作動させるかをCacheの箇所で指定する(Frame Startで指定した)。

この状況で再生してみて、パーティクルで形作られた水っぽいものが出てくればとりあえずOK。

流体が出てこない場合

対策①

Inflowを割り当てたオブジェクトのサイズが小さすぎるとフローが出てこない。
出てこない場合はサイズを大きくしてみる。

対策②

Typeの箇所をAllにしてBakeAllをしてみる。(これは設定を変えて出てこなくなった場合にも有効だった。FreeAllとなってる箇所を押してBakeし直す)

メッシュとして表示

ドメインオブジェクトのMeshにチェックを入れると、パーティクルでなくメッシュになる。

ベイク

上記の設定でメッシュとして表示はされたが、そのままレンダリングしようとすると下の画像のようにドメインが液体としてでなく箱型のまま表示されてしまうことがある()。

これはCacheの Type を Allに変更し、ベイクすることで解消できるはず。

だめな場合は、ObjectPropertiesのVisibility – Show in の項目から、表示非表示をキーフレームを打って調整する。

具体的な事例

フローの方向をコントロールする

フローオブジェクトのInitialVelocityにチェックを入れて値を入力する(マイナスも可能)。

フローの流量をコントロールする

フローのサイズを変更して調整する

何もしてない状態だとこういうふうに一定量が生成される。
フローオブジェクトのScaleを大きくすれば生成されるフローも大きくなる。
小さくすると小さくなるが、一定サイズより小さくするとそもそもパーティクルが出なくなるので止まってしまうため注意が必要。

フローを止めずに小さく・細くしたい

ドメインオブジェクトMeshの箇所にあるParticleRadiusを調整することでより細くすることができる。
小さくするとメッシュも小さくなる(ただし小さくしすぎると消える?ような気がする)

また同じくドメインオブジェクトのSamplingの数を増やすとより多量のパーティクルが表示されるので、こういうので調整する。

Flowを止める

Flowオブジェクトのサイズを小さくして止める方法

Flowオブジェクトが一定サイズより小さくなると、パーティクルが出てこなくなるので結果的にフローを止めることができる。

Flowオブジェクトを選択し、Scaleのキーフレームを打つ
左はデフォルトの状態で打ったキー。
右はs – 0.5 でフローオブジェクトを半分のサイズにして打ったキー。
途中でフローがとまる。

UseFlowセッティングでコントロールする方法

Fluid – Settings - UseFlowという箇所を開く。
UseFlowの右にある白丸をクリックすると、UseFlowのチェックボックス背景が黄色になり、白丸アイコンが大きめのダイヤに変わり、キーフレームが打ち込まれる。

この状況だとただフローは出続ける。

止めたいフレームにタイムラインの再生バーを移動しする。
そこでUseFlowのチェックを外し、右のダイヤをクリックすると、タイムラインにキーフレームが打ち込まれる。

この状態で再生すると、2個目のキーフレームでフローがとまる。

粘度・Viscosityを調整する

ドメインオブジェクトのViscosityをオンにして調整する。

チェックを入れられない時、下にあるFreeAllを実行して

コリジョン / 障害物を配置する

障害物となるオブジェクトをドメイン領域内に配置する。
そのオブジェクトに 流体シミュレーションを設定する。
Fluid – Effector – Collision

障害物をすり抜けてしまう

画像のようにすり抜けることがある。

一番手っ取り早いのはSurfaceThicknessの値を上げる方法。

流体をメッシュ化してオブジェクトにする

①シミュレーションを作成。
②できたらTypeの箇所をAllに変更し、Bakeする。再生して問題なければOK。問題があるなら、FreeAllを押して再調整し、できたら再度ベイクする

③切り出したいフレームで再生を止める。
④流体なりを右クリックで Convert to – Mesh を実行する

⑤かくかくなので、右クリックで shade Smoothをかける。

こんな感じのオブジェクトになる。

水面を作る

①水面のもとになるオブジェクトを作る

②Modifier - Physics – OceanModifierを割り当てる。

4系

①flow用の発射口となるオブジェクトを出す。
②そのオブジェクトを選択してObjects – QuickEffects – Quick Liquid を 選択。
ドメインのCubeが表示されるので、サイズを変えてシミュレーションしたい範囲を覆う

③発射口オブジェクトを選択し、PhysicsPropertiesを開く

FLowBehaviorをInFlowに変更する。

④流体の受け手になるオブジェクトを用意する。
PhysicsPropertiesを開き、Fluidを追加。TypeをEffectorに設定する

⑤ドメインの箱を選択し、Meshがアクティブになっているか確認。
Frameを指定し、TypeをAllに変更、BakeAllでベイクする。
ベイクが終わったら再生してみる。

タイトルとURLをコピーしました