Help us understand the problem. What is going on with this article?

Blenderで流体表現

More than 5 years have passed since last update.

なんだか色々ハマったりしたのでメモ。
ただ、できてくるとテンションあがるw

ちなみに作成に利用したバージョンは2.68aです。

なにはともあれ準備

まず、流体のシミュレーションを行うにあたって最低2つの要素が必要になります。

  1. 流体(液体)
  2. 流体をシミューレションする空間
  3. 障害物などシミュレーションに必要なものを配置

1は当たり前ですね。2がなんとなく「?」となりますが、流体の計算は非常に高価な演算です。そのため、なんでもかんでも計算してしまうとすぐに計算量がとんでもないことになってしまうので、まずは「ここの中は流体の計算をしますよ」という空間を定義しなければなりません。

3については必須ではありませんが、だいたいの場合に置いてなにかしらの障害物や液体をためておくものがあるでしょう。それを準備します。

シミュレーション空間 - Domainを作成

まず最初にシミュレーション空間を作成します。
空間は最終的には立方体になるようなので単純にCubeを利用します。
以下のように比較的大きめなものを準備します。

fluid-sample1.png

流体を準備

次に、流体を準備します。
上記で作成したCube内に視点を移動し、Sphereを追加します。(今回はこれにしましたが特に初期形状はなんでも構いません)

fluid-sample2.png

Sphereを選択した状態で「Physics」から、「Fluid(流体)」を選択します。
さらにTypeもFluidにします。これで流体の準備ができました。

障害物を設置

最後に障害物を設置します。(ちなみに流体シミュレーションではこれ以外にも流体を流し込むオブジェクトや吸収するオブジェクトなど色々なものも配置できますが、今回は基本だけなので割愛します)

fluid-sample4.png

今回は斜めの板を設置してみました。
これを、流体の障害物に設定します。設定は以下のようにしてください。

fluid-setting.png

Type: Obstacleが障害物、という意味です。
今回はVolume InitializeをBoth、Slip Typeを FreeSlipに設定しました。

シミュレーションを実行

さて、これで今回のサンプルに必要なものが揃いました。
これらを利用してシミュレーションを実行します。

実行には、最初に準備した「Domain」の設定項目内にある「Bake」を実行することでキーフレームに計算結果が出力されます。

fluid-sample5.png

計算には結構時間がかかるのでしばらく待ちます。
計算が終わったらAlt+Aでアニメーションさせてみましょう。
初期設定のままだとだいぶポリゴンがあらいですが、しっかりと液体のシミュレーションが行われているのが分かると思います。

背景を透過させる

今回これを作ろうとした理由は、流体シミュレーションを書き出してコンテンツに合成して使おうと思ったためです。
なので、背景とか色々レンダリングされてしまうと合成に使えないので、以下の設定で背景も透過させます。

render-setting.png

Shading内にある「Alpha」を「Transparent」に、書き出しフォーマットをPNGにしてRGBAを選択します。これで背景が透過されてレンダリングされます。

レンダリングを軽くする

流体は大体の場合において透明でしょう。
ただ、レンダリングは注意しないとだいぶ重い処理になってしまうので、色々試したところ、今回のようなケースの場合は「Renderer」の設定の「Shading」にあるRay tracingをオフ、AlphaをTransparentにすることで透過した質感を残しつつだいぶ素早くレンダリングできることに気がついたのでメモ。テスト用にさっとレンダリング結果を確認できるようにしておくことは試行錯誤を繰り返す上でだいぶ重要。

renderer-setting.png

参考記事

以下の記事を参考にさせてもらいました。

edo_m18
現在はUnity ARエンジニア。 主にARのコンテンツ制作をしています。 趣味でWebGL/WebXRもいじってます。 Unityに関するブログは別で書いています↓ https://edom18.hateblo.jp/
http://edom18.hateblo.jp/
unity-game-dev-guild
趣味・仕事問わずUnityでゲームを作っている開発者のみで構成されるオンラインコミュニティです。Unityでゲームを開発・運用するにあたって必要なあらゆる知見を共有することを目的とします。
https://unity-game-dev-guild.github.io/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした