Blenderであそんでみた

3D-CGソフトBlenderの小技や豆知識など。

Blenderの流体シミュレーションで「荒々しい水流/後編」

※記事製作時のバージョン:Blender3.3

 

簡単な見本を作りながら、流体シミュレーションの使い方を紹介していくシリーズ。
第12回は、「荒々しい水流」の作り方・後編です。

今回の記事は長いので、前・後編に分けています。

<前編>

  • 基本の水流を作る
  • 水流に揺らぎをつける

<後編>

  • 水しぶきと泡を追加する
  • 流体の動きを遅くする
  • 参考:さらに細かい水しぶきを作る方法

前編を未読の方はこちらのリンクからどうぞ。

hainarashi.hatenablog.com

 

では、前編の続きから始めます。

 

水しぶきと泡を追加する

1. 水しぶきや泡のパーティクルを生成する

水しぶきや泡は、流体シミュレーションのパーティクル機能で作ります。

※マニュアルでは、水しぶきや泡を作るパーティクルのことを「二次パーティクル(secondary particle)」と表記しています。元々の流体の動きをシミュレーションするパーティクルに対する、追加のパーティクルという意味のようです。

ドメインの物理演算プロパティの[パーティクル]のパラメーターを、次のように設定します。

  • 飛沫・泡沫・気泡:すべてON
  • 波頭パーティクルサンプリング:20
  • 混入空気パーティクルサンプリング:5
  • パーティクル寿命最大:15

各パラメーターについて、ざっくり解説しておきます。

飛沫・泡沫・気泡

追加で生成するパーティクルの種類です。
それぞれ次のような違いがあります。

  • 飛沫(Spray):空中を移動する水しぶき
  • 泡沫(Foam):流体の表面を移動する泡
  • 気泡(Bubbles):流体の内部を移動する泡

これらは個別にON・OFFを切り替えられます。
ここでは3種類とも使用するので、すべてONにしています。

パーティクルサンプリング

パーティクルの発生量を設定するパラメーターです。
初期値のままだと流体が埋め尽くされるほどのパーティクルが発生するので、かなり低めの数値にする必要があります。

なお「波頭」と「混入空気」は、流体の中でパーティクルが発生する場所として判定される部分のこと・・・らしいです。
詳しい仕組みは、まだ私も理解できていません。

パーティクル寿命

名前の通り、パーティクルの寿命です。
この数値が大きいと、消滅する以上にパーティクルが発生してどんどん増えてしまうので、パーティクルサンプリングと合わせて調整します。

 

パラメーターの解説は以上です。
では、見本の作製に戻りましょう。

②[パーティクルをベイク]をクリックします。

これで、水しぶきや泡のパーティクルが生成されます。

パーティクルは、そのままではレンダリングに表示されません。
レンダリングで水しぶきや泡を表示するには、パーティクルをオブジェクトに変換します。

 

2. パーティクルをオブジェクトに変換する

まず、変換用のオブジェクトを用意します。
今回はICO球(Icosphere)を使います。

①編集の邪魔にならない適当な位置に、ICO球を追加します。

  • [追加]>[メッシュ]>[ICO球(Icosphere)]
  • 細分化:1

ICO球の表示を[スムーズシェード]にします。

アウトライナーから、ICO球のカメラマークを[OFF]にします。

ICO球はパーティクルの変換に使用するだけなので、レンダリングは非表示にしておきます。

ICO球のマテリアルを、下の画像のように設定します。

※このマテリアル設定についての詳細は、「コップに水を注ぐ/後編」で解説しています。

これで変換用のオブジェクトが用意できました。
次は、パーティクルをICO球に変換します。

ドメインのパーティクルプロパティを開くと、
[Liquid(流体)、Spray(飛沫)、Foam(泡沫)、Bubbles(気泡)]
の4つのパーティクルシステムが用意されています。

今回は[Spray(飛沫)・Foam(泡沫)・Bubbles(気泡)]の3つを、すべて同じICO球に変換します。
個別に同じ設定をするのは操作性が悪いので、この3つをひとまとめにします。

ドメインの物理演算プロパティから、パーティクルの[統合エクスポート]を[飛沫 + 泡沫 + 気泡]に変更します。

パーティクルプロパティに戻ると、[Spray + Foam + Bubbles]という1つのパーティクルシステムに統合されています。
これで準備はOKです。
※このパーティクルシステムの統合は、他にもいろいろな組み合わせパターンがあり、用途に合わせて自由に切り替えることができます。

⑥パーティクルシステムの[Spray + Foam + Bubbles]を選択し、[レンダー]のパラメーターを次のように設定します。

これで水しぶきや泡がICO球に変換され、レンダリングで表示されるようになります。

以上で、水しぶきと泡を追加する手順は完了です。
この段階での流体の動きは、下の動画のようになります。

vimeo.com

流体の動きは変わりませんが、水しぶきと泡が加わると、より激しい水流の雰囲気が出ます。
これでほぼ完成ですが、最後にもうひと工夫を加えます、

 

流体の動きを遅くする

ダムの放水、巨大な滝、激しい荒波など、スケールの大きい水流は動きがゆっくりに見えます。
そのイメージの応用で、流体の動きを遅くすると、流体のスケールの大きさや重々しさを演出することができます。

流体の動きの速さは、ドメインのパラメーターで設定します。
シミュレーションをベイクした状態ではドメインのパラメーターを変更できないので、一度ベイクを破棄する必要があります。

ドメインの物理演算プロパティから[データを解放]をクリックします。

これで、シミュレーションデータが破棄されます。

では、流体の動きを遅くしましょう。

②[タイムスケール]を[0.5]に変更します。

これで、シミュレーション内の時間がゆっくり進むようになります。

操作する設定はこれだけです。
後は[データをベイク]、[パーティクルをベイク]、[メッシュをベイク]をクリックして、全データを再ベイクすれば完了です。

vimeo.com

流体の動きが遅くなり、重々しく、より荒々しい感じになりました。

以上でシミュレーションの設定は完了。
マテリアルや背景などの設定をしたら完成です。
(この見本ではすでに設定していますが。)

 

なお、Cyclesでレンダリングすると下のようになります。

vimeo.com

 

参考:さらに細かい水しぶきを作る方法

コンポジットを使って、水しぶきや泡の周囲にノイズを合成すると、さらに細かい水しぶき(水煙)を表現できます。

vimeo.com

ここでは、コンポジットを下の画像のように設定しています。
※Cycles用の設定です。EEVEEでレンダリングする場合は調整が必要です。

私はコンポジットに関してはまだまだ修行中なので、もっと良い手法や設定があると思います。
これはひとつの作例として、参考までにどうぞ。

モーションブラーだとどうなる?

モーションブラーを使えば、コンポジットを使うよりも手軽に水煙を表現できるのでは?
と考えて試した結果がこちらです。
※変化が見えやすいように、床の色とサイズを変えてあります。

よく見ると、ありえない形にモーションの軌跡が伸びています。

どうやら流体シミュレーションのパーティクルは、モーションブラーではうまく処理できないようです。
残念!

 

以上、「荒々しい水流/後編」でした。

 

twitter

灰ならし (@hainarashi) | Twitter