インクが水に落ちる映像を作る【Blender 2.91】

2021-01-11

インクが水に落ちるような効果はBlenderの機能の組み合わせで生成することができる。

blender_ink_sim

目次

完成作品

音楽を入れて次のような映像となった

クイック煙

  • 初期画面の立方体は削除
  • shift + aからメッシュ > UV球を追加
  • UV球を選択しておく
  • 左上からオブジェクト > クイックエフェクト > クイック煙

image-20210107123153176

これにより煙のエフェクトを使うドメインと呼ばれる領域が自動で生成される。

余計な設定がいらないので楽。

image-20210107123545597

ドメインと球を調整

  • ドメイン(立方体の形 - Smoke Domain)のスケールXYZを共に4mに設定
  • 床に密着させたいので位置のZ4mに設定する

球のアニメーション

球は落ちるインクの役割なのでアニメーションを付ける。

  • アニメーションのフレームが1であることを確認

image-20210107124410814

  • 球を選択して位置Zを-3m

image-20210107124501285

  • iキー > 位置 を選択してキーフレームにスタート位置を書き込む
  • フレームを20に移動
  • 同じ要領で球の位置Zを2mにしてiキーで位置を書き込む。
  • キーフレームが2つできていることを確認

image-20210107124815470

  • これら2点をドラッグで両方選択したら右クリック
  • 補間モード > リニアを選択

    image-20210107124850632

    ※これによりアニメーションのスピードが最初から最後まで一定速度になる

ドメインの物理演算

  • ドメイン(Smoke Domain)を選択して物理演算タブを開く

image-20210107125408732

  • キャッシュのタイプモジュールに設定

    image-20210107125452846

    ※ベイクを行う場合はこのモジュールに変更する必要があるそう

  • 少し上に戻って設定 > 分割の解像度256に設定
  • そのすぐ下タイムスケールをアニメーションする

image-20210108025922609

image-20210109100804907

※アニメーションは10フレームで1.0, 30フレームで0.5に設定

タイムスケールにより煙(インク)が水に入ってスピードが落ちる演出ができる。

  • 適応ドメインにチェックを入れる
  • 適応ドメインを展開してしきい値0.001に変更

image-20210108031136070

適応ドメインのチェックで煙が描画される範囲を自動調整して無駄な演算が減るらしい。

ただしここでは煙の根本が消えてしまう効果も現れるのでしきい値を下げてそれを防止しているとのこと。

※1.0に設定してしまうとほぼすべての煙が消える。つまり逆に低くすれば少ない煙も消えない。

  • 密度の浮力0.5に設定(値を低くすると煙の上りが遅く)
  • すぐしたのヒート0.7(こちらも煙の登る速度に影響するらしい)

image-20210109101419623

  • キャッシュ > 終了200フレームに
  • リジューム可能をチェック

image-20210109102219787

リジューム可能はベイクを途中で止めた時に再開できるように追加のデータをドライブへ保存するらしい。高解像度ではデータ量が大きくなるのでチェックしないほうがお勧めとのこと。※英語Docより

球体の物理演算

ここでの球体はフローと呼ばれ、煙を発生する元のオブジェクトとして作用する。

ドメインとは別の設定項目となっている。

  • 球体オブジェクトを選択
  • フローの挙動が「流入口」になっていることを確認※デフォルトのはず
  • 20フレームで「フローを使用」のキーフレームを設定(ONのまま)
  • 21フレームで「フローを使用」をオフでキーフレーム設定(ここでOFF)

image-20210109102922530

これにより21フレーム目で煙を出すのを止める(既に出た煙のシミュレーションは続く)

  • 同じ設定の中の項目初期温度1.5に変更※動画では煙の動きが微妙に変化すると解説
  • 少し下のフローソースを展開
  • 表面からの発生距離 ボリュームからの発生を共に1.0

    image-20210109103818833

    表面からの発生距離:球からどれだけ離れた位置から発生するか

    ボリュームからの発生:内部からも煙が発生するようになる

  • 少し下へいって初期速度にチェック
  • ソースを2.0に設定

この場合発生源の移動速度x2の速度で煙が放出されるようになる。

乱流のフォースフィールドを追加

  • ctrl+aキーフォースフィールド > 乱流を追加
  • 中央あたりにもってくる

image-20210109111449166

image-20210109111846971

こちらも物理演算設定を変更する

  • 強さ 0.6, サイズ1.0, フロー 0.2, ノイズの量 0.5にそれぞれ設定

image-20210109111726617

ベイク

これで一通り完成したのでベイクしていく。

シミュレーションは一旦ベイクという作業を経ないとレンダリングに反映されない

  • ベイクとは関係無いが終了キーフレームを200にしておく

image-20210109112036914

  • ドメイン(箱型のオブジェクト)を選択して物理演算からデータをベイクをクリック
  • かなり時間がかかるのでじっくり待つ
  • 球体のプロパティから可視性 > レンダーをオフ(球体をレンダリングしないように)

ここで言う物理演算のベイクとUVのベイクは別物らしい。

ベイクが終わったらカメラを調整して作品を見てみる。

このあたりからレンダリングが遅いのでかなり時間がかかる。

※いったん解像度を下げて作業して纏まってから再度高解像でベイクしたほうがいいかも?

シェーディング

ドメイン側のシェーディング設定を変更する。

上のShadingタブからノードを変更する

image-20210110075751501

ノードは専門的すぎるのでさらっと解説。

ボリューム情報は煙のドメインオブジェクトのときだけ使える。

ボリューム情報の密度とは煙がある部分とない部分を定義している。

それを乗算することでより濃くしている(?)

ボリュームの吸収は光を「吸収」する。グラスや水などの半透明なものに使うそうだがここでは密度に煙の情報をいれているので、つまり煙部分本体のことを指してそちらを半透明状態の青色に設定。

これをボリュームで出力することで煙の完成。

...だと思うが違ったら申し訳ない。

レンダリング設定

レンダーエンジンはCycles

サンプリングのレンダーを30に下げる。

image-20210110080240726

Eeveeだとレンダリング結果がおかしなことになるので使わない。

レンダリング実行

出力プロパティでファイル形式等をお好みで設定して出力する。

とても長い時間の出力時間になると思われるので覚悟してレンダリングすること。

出力方法はctrl+F12

完成作品

参考動画

こちらの記事は次の動画を参考に制作させていただいた。

さいごに

レンダリング時間がかかるのは良いがBLOG記事作成が滞るのでなんとも言えない。

もっとサクっと終わらせる方法はないだろうか。

今回は音楽を入れてみたがこちらも古いCubaseが動画編集に実質非対応なのもなんとかしたい。

この記事をシェア:

author icon

Ultra-Noob @Neve1074
謎の技術研究部部長。元DTMer。今は何をしている人なのかよくわからない。謎。