Blenderであそんでみた

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

Blenderの流体シミュレーションで「初速にノーマルを使う」

f:id:hainarashi:20210427174113j:plain

※記事製作時のバージョン:Blender2.92

 

簡単な見本を作りながら、流体シミュレーションの使い方を紹介していくシリーズ。
第7回は、「初速にノーマルを使う」やり方です。

 

これまでの記事で触れた手順やパラメーターなどは、詳しい説明を省略します。

未読の方はこちらからどうぞ。

流体シミュレーション(液体) カテゴリーの記事一覧 - Blenderであそんでみた

 

実践「初速にノーマルを使う」

今回作るのは、こちらのアニメーション(180フレーム)です。

vimeo.com

 

では、さっそく作ってみましょう。

 

まずはシミュレーションの前準備。
今回の前準備は、いつもよりやることが多いです。

 

1. 適当な場所にblendファイルを保存。

f:id:hainarashi:20201105101742j:plain

blendファイル保存

 

2. 追加 > メッシュ > 円柱

  • 頂点 > 8

今までの見本ではフローにICO球を使ってきましたが、今回は円柱を使用します。

f:id:hainarashi:20210422155716j:plain

円柱を追加

 

3. 編集モード > 上下の面を削除

f:id:hainarashi:20210422162144j:plain

上下の面を削除

 

4. 編集モード > 辺選択 > Ctrl + Alt を押しながら縦方向の辺をどれか一つクリック(リング選択になり、縦方向の辺がすべて選択される) > V キー(分割) > Esc キー

見た目は変わりませんが、これですべての面がお互いに切り離され、独立した状態になります。

f:id:hainarashi:20210422163147j:plain

面を切り離す

 

5. モディファイアーを追加 > ディスプレイス

f:id:hainarashi:20210422164919j:plain

ディスプレイスモディファイアー

 

6. モディファイアーを追加 > シンプル変形

  • テーパー
  • 座標軸 > Z

f:id:hainarashi:20210422170822j:plain

シンプル変形モディファイアー(テーパー)

 

7. ディスプレイスの強さ > 20

8. シンプル変形の係数 > 0

9. 円柱のスケールを、 X : 0.1 , Y : 0.1 , Z : 0.05 に変更

f:id:hainarashi:20210428104134j:plain

強さ・係数・スケールを変更

 

10. 円柱を選択した状態で
 オブジェクト > クイックエフェクト > クイック液体

11. ドメイン > キャッシュ

  • シミュレーション終了フレーム > 180
  • タイプ > モジュール
  • リジューム可能 > ON

12. アニメーション終了フレーム > 180

f:id:hainarashi:20210425204340j:plain

クイックエフェクト、フレーム数設定

 

13. フロー > 設定 > フローの挙動 > 流入

f:id:hainarashi:20210425204854j:plain

フローを流入口に

 

以上で前準備は終了。
ここからが今回の本題です。

 

14. ドメインの位置を、 X , Y , Z すべて 0.0 に変更

15. ドメインのスケールを、 X : 4.0 , Y : 4.0 , Z : 2.5 に変更

16. ドメイン > 設定 > 分割の解像度 > 96

f:id:hainarashi:20210425205333j:plain

ドメインのトランスフォームと分割の解像度を変更

 

17. フロー > フローソース > 平面 > ON

これでフローの各面から液体が発生するようになります。

f:id:hainarashi:20210425205934j:plain

平面にチェックを入れる

 

18. フロー > 初期速度 > ON

19. フロー > 初期速度 > ノーマル > 15

これでフローの各面が向いている方向に、液体の初速がつきます。

f:id:hainarashi:20210425210334j:plain

初期速度をノーマルで設定する

 

20. フローのディスプレイスの強さに、下記のキーフレームを打つ

  • 30フレーム > 20
  • 48 , 64フレーム > -50
  • 84フレーム > 20

これで30フレームから84フレームにかけて、フローの各面が一度内側方向に移動し、また元に戻る動きをするようになります。

f:id:hainarashi:20210425210952j:plain

ディスプレイスの強さにキーフレームを打つ

 

21. フローのシンプル変形の係数に、下記のキーフレームを打つ

  • 96フレーム > 0.0
  • 120フレーム > -0.2

これで96フレームから120フレームにかけて、フローの各面が斜め上を向くようになります。
それに伴い、液体の初速方向も斜め上になります。

f:id:hainarashi:20210425212136j:plain

シンプル変形の係数にキーフレームを打つ

 

22. フローのZ軸回転に、下記のキーフレームを打つ

  • 96フレーム > 0.0
  • 120フレーム > 180

これで96フレームから120フレームにかけて、フローが反時計回りに半回転するようになります。

f:id:hainarashi:20210425212925j:plain

Z軸回転にキーフレームを打つ

 

23. ドメイン > 液体 > メッシュ > ON

f:id:hainarashi:20210425213615j:plain

メッシュ

 

以上でシミュレーションの設定は完了。
マテリアルや背景などの設定をしたら完成です。

f:id:hainarashi:20210427174113j:plain

完成

 

今回使用した機能の解説

初期速度 > ノーマル

面の法線方向に、流体の初速をつけます。
オブジェクトが複数の面を持つ場合、異なる向きの面それぞれに対して初速がつきます。

 

X , Y , Z による初期速度とは、次のような違いがあります。

  • 初期速度をノーマルで設定した場合
    ⇒ 面の向きを変えると、初速の方向も変わる。
  • 初期速度を X , Y , Z で設定した場合
    ⇒ 初速の方向はドメインのローカル座標系に基づくため、フローオブジェクトの向きを変えても、初速の方向は変わらない。

f:id:hainarashi:20210427181028j:plain

ノーマルとXYZの違い

 

ノーマルと X , Y , Z を同時に使うこともできますが、その場合、両方の合計値が最終的な初速になります。
制御がややこしくなるので、基本的にどちらか片方で設定するのが良いと思います。

 

ノーマルによる初速は、ドメインの「分割の解像度」の影響を受けます。
初速の値が同じでも、分割の解像度が大きいほど、実際に発生する流体の勢いは弱くなります。

f:id:hainarashi:20210426173005j:plain

分割の解像度の影響

 

通常、流体シミュレーションは試行錯誤段階でのベイク時間を短縮するため、

  1. 分割の解像度が低い状態で流体の動きを調整して、
  2. ある程度決まったら分割の解像度を高くして仕上げる。

という手順で作成します。
しかし、初速にノーマルを使う場合は、初速の勢いが分割の解像度の影響を受けてしまうので、この手順は使えません。
そのため、最初から分割の解像度を仕上げの値にしておく必要があり、試行錯誤段階でのベイクに時間がかかることになります。

 

フローソース > 平面

フローオブジェクトを「平面かつ閉じていないメッシュとして処理する」スイッチです。
フローが平面の場合、これをONにすることで、最も正確なシミュレーション結果が得られるようになる・・・という感じの事がマニュアルに書いてあります。

詳しい意味は私も分かりませんが、とりあえず「面をフローとして使う場合はONにする」と覚えておけば良いと思います。

 

モディファイアーの順番について

流体シミュレーションは、最終的にモディファイアーのひとつとして処理されます。
なので、処理の順番はモディファイアータブでの並び順に従います。
並び順を間違えると、意図した結果が得られないので注意してください。

f:id:hainarashi:20210426210030j:plain

モディファイアーの順番

 

 

以上、「初速にノーマルを使う」でした。

 

※添削・構成アドバイス:相方

 

twitter

灰ならし (@hainarashi) | Twitter

 

参考サイト

Flow — Blender Manual