【Blender 3.2】FAQ:流体シミュレーションの問題を解決!

URLをコピーする
URLをコピーしました!

こんにちは!

コチラの記事では、フリーの3DCGソフト「Blender」での作品作りのヒントとなる情報をまとめています。

今回は、「流体シミュレーション」に関するFAQ(よくある質問)とその対処法をまとめてみました。

流体シミュレーション(物理演算)がうまくいかなくて悩んでいる方(おもに経験の浅い初心者の方を想定しています)に、ぜひ参考にしていただければと思います!

目次

【最重要】流体シミュレーションの基本を確認しよう!

「流体シミュレーションができない・うまくいかない」場合、そもそも基本を押さえられていない可能性が高いです!

流体シミュレーションは大きく分けて「液体」「煙(火炎)」の2種類ありますが、それぞれについて「クイックエフェクト」を使った基本的なやり方を紹介します。

まずはこちらのやり方とご自身のやり方と比較してみて、問題点がないか確認してみてください!

液体シミュレーションの基本的なやり方

「クイック液体」を使った、液体シミュレーションの基本的なやり方について簡単に紹介します!

STEP
流入口となるオブジェクト(下の例ではICO球)を選択し、ヘッダーの「オブジェクト」→「クイックエフェクト」→「クイック液体」を選択します。

ドメイン(物理演算を行う領域)を示す直方体が追加されます。

STEP
流入口となるオブジェクトを選択して、物理演算プロパティの「フローの挙動」を「ジオメトリ」から「流入口」に変更します。
STEP
ドメインを選択して、物理演算プロパティの「分割の解像度」を32から64程度に大きくします。

マシンスペックに余裕があるようなら、もっと分割の解像度を大きくするとより細かい液体の動きを表現できますが、あまり大きくしすぎるとベイクに時間がかかるため注意が必要です。

STEP
物理演算プロパティの「メッシュ」にチェックを入れておきます。

多少ベイクに時間がかかるようになりますが、ベイク結果をすぐにメッシュとして見れるようになります。

STEP
「キャッシュ」のメニューから以下2点を設定したら、「すべてベイク」を選択してベイクします。
  • 開始・終了フレーム数を設定する。
  • タイプは「リプレイ」から「全て」に変更する。
    • リプレイのままだと、レンダリング結果が表示されない可能性があるので、必ず変更しておきましょう。

ベイク完了後にタイムラインを再生すると、液体が流れます

「クイック液体」を選択すると自動で「Liquid Domain Material」という水のマテリアルが設定されるので、すぐに透明感のある水を表現することができます。

ちなみに、「Liquid Domain Material」のマテリアルノードはコチラです。

「ボリュームの吸収」の色を変えてアニメーションレンダリングすると、コチラのように液体シミュレーションの結果を色付きで動画出力できます。

「アニメーションレンダリング」のやり方については、コチラの記事で紹介しているので、合わせて参考にしてみてください!

CGbox
【Blender2.9】アニメーションレンダリングの方法:フローや設定 | CGbox こんにちは! Blenderでの3DCG制作を勉強中のUEDAです。 Blenderを勉強して、アウトプットの場としてそれぞれの機能をまとめられればと思っています。参考にもなれば嬉しい...

ボリュームマテリアルの一種である「ボリュームの吸収」の説明、および使用例については、コチラの記事を参照してください。

CGbox
【Blender2.9】簡単にリアルなガラスマテリアルを作成! | CGbox こんにちは! Blenderの使い方や機能、ノウハウについてまとめているUEDAです。 自分のためのアウトプットの意味合いもありますが、読んだ方の参考になれば嬉しいです。 今...

以上が、液体シミュレーションの基本的なやり方になります。

流体シミュレーションの設定項目の詳細については、コチラの記事で紹介しているので、あわせて参考にしてみてください。

CGbox
【Blender3.0】流体:リアルな液体の作成方法を紹介 | CGbox こんにちは! Blenderの使い方や機能、ノウハウについてまとめているUEDAです。 自分のためのアウトプットの意味合いもありますが、読んだ方の参考になれば嬉しいです。 今...

煙(火炎)シミュレーションの基本的なやり方

「クイック煙」を使った、煙(火炎)シミュレーションの基本的なやり方について簡単に紹介します!

STEP
流入口となるオブジェクト(下の例ではICO球)を選択し、ヘッダーの「オブジェクト」→「クイックエフェクト」→「クイック煙」を選択します。

液体シミュレーションと同様に、ドメイン(物理演算を行う領域)を示す直方体が追加されます。

STEP
ドメインを選択して、物理演算プロパティの「分割の解像度」を32から64程度に大きくします。

マシンスペックに余裕があるようなら、もっと分割の解像度を大きくするとより細かい煙の動きを表現できますが、あまり大きくしすぎるとベイクに時間がかかるため注意が必要です。

STEP
「ノイズ」にチェックを入れておくと、煙がよりリアルになります。

ただし、計算が複雑になりベイク時間がかかるため、マシンスペックに余裕がない場合はなしでも構いません。

STEP
「キャッシュ」のメニューから以下2点を設定したら、「すべてベイク」を選択してベイクします。
  • 開始・終了フレーム数を設定する。
  • タイプは「リプレイ」から「全て」に変更する。
    • リプレイのままだと、レンダリング結果が表示されない可能性があるので、必ず変更しておきましょう。

ベイク完了後にタイムラインを再生すると、コチラのように煙がたちのぼります

アニメーションレンダリングすることで、コチラのように煙シミュレーションの結果を動画出力できます。

ちなみに、「クイック煙」を使うとコチラの「Somoke Domain Material」というボリュームマテリアルが自動的に追加されます。

「プリンシプルボリューム」のカラーなどを変更することで、煙の色・濃さなどを調節できます。

「プリンシプルボリューム」などのボリュームマテリアルについて、詳しくはコチラの記事を参考にしてみてください。

CGbox
【Blender 3.0】ボリュームを使いこなそう! | CGbox はじめに こんにちは! 今回は3DCGソフトBlenderでの「ボリューム」の使い方を紹介します。 ボリュームを使いこなすことで、「空気感」「雲の形」「半透明なマテリアルの質...

以上が、煙シミュレーションの基本的なやり方になります。

煙シミュレーションの設定項目の詳細については、コチラの記事で紹介しているので、あわせて参考にしてみてください。

CGbox
【Blender2.9】物理演算で煙を実装しよう!~基礎編~ | CGbox こんにちは! Blenderでの3DCG制作を勉強中のUEDAです。 Blenderを勉強して、アウトプットの場としてそれぞれの機能をまとめられればと思っています。参考にもなれば嬉しい...

流体が反映されない/見えない/表示されない!

流体シミュレーションを行った結果が「見れない」「表示されない」「レンダリング結果に反映されない」ことで悩む方は非常に多いと思います。

考えられる原因と対処方法を紹介していきます!

流体が見えない!

「流体シミュレーションの結果が見れない」場合は、以下のような原因が考えられます。

  • 「3Dビューのシェーディング」が「ワイヤーフレーム」ではなく「ソリッド表示」になっている。
  • 「メッシュ」にチェックを入れていない
  • ベイク先のフォルダー名に日本語が含まれている
  • 前回のシミュレーションのキャッシュが残っている

ひとつひとつ具体例を見ていきましょう!

「3Dビューのシェーディング」が「ワイヤーフレーム」ではなく「ソリッド表示」になっている

コチラのようにドメインが不透明な直方体として表示されていて、液体シミュレーションのパーティクル表示が見れない場合は、「3Dビューのシェーディング」がソリッド表示になっていると思います。

ヘッダーの右上のアイコンから「ワイヤーフレーム」を選択すると、液体シミュレーションのパーティクルが表示されるようになります。

「メッシュ」にチェックを入れていない

↑で紹介したとおりワイヤーフレーム表示で、シミュレーション結果をパーティクルとして表示することはできますが、このままだとレンダリング結果に反映されません

「物理演算プロパティ」→「液体」→「メッシュ」にチェックを入れると、パーティクルがメッシュに変換されて「ソリッド表示」や「レンダープレビュー」でもシミュレーション結果を表示できるようになります。

上の例では「キャッシュ」「タイプ」「リプレイ」にしていますが、「基本的なやり方」で説明したようにレンダリング結果に反映されない可能性があるので、レンダリングを行う場合は必ず「全て」を選択してください。

ベイク先のフォルダーに日本語が含まれている

のちほど「ベイクできない!」の項目で詳しく説明しますが、キャッシュの保存先フォルダ(およびその上の階層)に日本語が含まれていると、シミュレーション結果が表示されません。

キャッシュの保存先は必ず(上の階層も含めて)英数字のみで設定しましょう。

前回のシミュレーションのキャッシュが残っている

キャッシュ→タイプを「リプレイ」にした場合、ベイクしなくても結果を見れるので、調整中の結果を見たい場合に便利です。

ただし、パラメータを調整したときに結果が表示されなかったり、コチラの例のように調整前の結果が残っていて変なシミュレーション結果になってしまったりします。

その場合は、いったんタイプを「全て」に変更したあとで「リプレイ」に戻すとキャッシュがリセットされて最新の結果が再生されるようになります。

上の例では「キャッシュ」「タイプ」「リプレイ」にしていますが、「基本的なやり方」で説明したようにレンダリング結果に反映されない可能性があるので、レンダリングを行う場合は必ず「全て」を選択してください。

流体がレンダリング結果に反映されない!

流体シミュレーションの結果が「ビューポートだと表示されるけどレンダリング結果に反映されない」場合は、「キャッシュ」の「タイプ」を「リプレイ」にしていることが原因と考えられます。

「基本的なやり方」で説明したように、「キャッシュ」の「タイプ」を「全て」に設定してベイクしてみてください。

炎が見えない!

先ほど紹介した「基本的なやり方」で煙を作成する際に、こちらのように「物理演算プロパティ」→「フロータイプ」で「火炎」を選択すると、シェーディングプレビューはすぐに炎っぽい見た目に変わります。

ただし、このままだと炎の色がレンダリング結果に反映されません

こちらのように、ドメインのマテリアルを表示し、「プリンシプルボリューム」の「黒体の強度」の数値を上げるとレンダリング結果に反映されます。

レンダリングすると、こんな感じにリアルな炎を表現できます。

流体シミュレーションで炎を作る方法について、詳細はコチラの記事を参考にしてみてください。

CGbox
【Blender3.0】流体:火炎でリアルな炎を作成 | CGbox こんにちは! Blenderの使い方や機能、ノウハウについてまとめているUEDAです。 自分のためのアウトプットの意味合いもありますが、読んだ方の参考になれば嬉しいです。 今...

ベイクができない!

流体をベイクできない場合は、以下の対処法を試してみてください。

  • 「キャッシュ」の「タイプ」をデフォルトの「リプレイ」から「全て」に変更する
  • キャッシュの保存先フォルダは英語を使用

「キャッシュ」の「タイプ」をデフォルトの「リプレイ」から「全て」に変更する

ドメインの「物理演算プロパティ」→「キャッシュ」の「タイプ」が「リプレイ」のままだと、そもそも「ベイク」のメニューが表示されません。

コチラのように「タイプ」を「全て」に設定してベイクしてみてください。

キャッシュの保存先フォルダは英語を使用

キャッシュの保存先フォルダに日本語が含まれていると、ベイク結果が保存されません上の階層に日本語が含まれていてもダメです)。

キャッシュの保存先は必ず(上の階層も含めて)英数字のみで設定しましょう。

試しにドメインの「物理演算プロパティ」→「キャッシュ」のフォルダを日本語にしてベイクしてみましたが、シミュレーション結果が再生されませんでした。

1階層上の日本語が含まれないフォルダを選択し、いちど「すべて解放」でベイク結果を解放してから「すべてベイク」を行うと、コチラのようにベイクしたシミュレーション結果が再生されました。

エフェクター(障害物)をすり抜ける!

コチラのように、オブジェクトに「物理演算プロパティ」→「流体」→「エフェクター」を設定することで障害物を設定することができますが、液体がすり抜けてしまうことがあります。

「すり抜け」を防ぐには以下の方法がありますので、1つ1つ紹介していきます。

  • エフェクターに厚さをつける
  • 「分割の解像度」を上げる
  • 「平面」にチェックを入れる
  • 「表面の厚さ」を上げる

エフェクターに厚さをつける

「エフェクター」が障害物として認識されるためには、基本的に厚みのある閉じたメッシュである必要があります。
(ただし、後で説明するように「平面」にチェックを入れた場合はこの限りではありません)

コチラのように、立方体オブジェクトから作った箱に「ソリッド化モディファイアー」を追加すると、すり抜けなくなります。
モディファイアーの順番は、「Fluid」の上に「ソリッド化」が来るようにしました。)

メッシュを変更することなくオブジェクトに厚みを付けることができる「ソリッド化モディファイアー」については、コチラの記事で紹介しているので、あわせて参考にしてみてください。

CGbox
【Blender2.9】ソリッド化モディファイアー:厚み付けはこれで! | CGbox こんにちは! Blenderでの3DCG制作を勉強中のUEDAです。 Blenderを勉強して、アウトプットの場としてそれぞれの機能をまとめられればと思っています。参考にもなれば嬉しい...

「平面」にチェックを入れる

エフェクターの「設定」→「平面」にチェックを入れると、閉じていないメッシュをコリジョンとして認識させることができるようになります。

コチラのように、チェックを入れると液体は箱の内側にとどまり、すり抜けなくなります。

「分割の解像度」を上げる

障害物の厚さがドメインの分割サイズ(ドメインの隅に表示される小さな直方体)よりも薄いと、液体はすり抜けてしまいます。

その場合は、「分割の解像度」を上げることですり抜けを回避できます。

ただし、上の例のように演算が重くなってしまうため、マシンスペック的にムリな場合は、次に紹介する「表面の厚さ」を使ってみてください。

「表面の厚さ」を上げる

「表面の厚さ」の数値を上げることで、コチラのようにメッシュの表面から離れた部分で衝突判定が行われるため、すり抜けなくなります。

流体の「エフェクター」(障害物)の設定について、詳しくはコチラの記事にまとめているので参考にしてみてください。

CGbox
【Blender2.9】流体:エフェクター ~コリジョンとガイド~ | CGbox こんにちは! Blenderの使い方や機能、ノウハウについてまとめているUEDAです。 自分のためのアウトプットの意味合いもありますが、読んだ方の参考になれば嬉しいです。 今...

動かない・流れない・出ない!

液体シミュレーションで液体や煙が出ない・流れない場合は、以下の対処法を試してみてください。

  • 「ベイクができない」場合の対処法を試す
  • 「フローの挙動」が「流入口」になっているか確認する
  • ドメイン分割サイズが「流入口」オブジェクトより大きいか確認する

「フローの挙動」が「流入口」になっているか確認する

「フローの挙動」が「流出口」になっていると液体は流れ出ません。

「流入口」を選択することで、コチラのように液体が流れ出るようになります。

ドメイン分割サイズが「流入口」オブジェクトより大きいか確認する

コチラのように、流入口オブジェクトがドメイン分割サイズより小さいと、液体が流れ出ません。

流入口オブジェクトを大きくすると、液体が流れ出るようになります。

流体シミュレーションが重い!

流体シミュレーションは、複雑な計算を行うので処理が重くなりがちです。

流体シミュレーションが重い場合は、ドメインを選択し、「物理演算プロパティ」→「分割の解像度」を下げてみてください(以前ビルを作って、生やして…壊そう!」の記事で爆炎の作り方を紹介したように、64程度あれば十分かと思います)。

「物理演算が重い」を含めた、「Blenderが重い!」場合の対処法についてはコチラの記事で紹介したので、あわせて参考にしてみてください。

CGbox
【Blender3.1】FAQ:Blenderが重い時の対処法 | CGbox はじめに こんにちは! 今回は、「Blenderの動作が重い」問題の解決方法を紹介していきます。 Blenderが重くて作業が捗らないと、創作へのモチベーションも下がってしまい...

メッシュ化ができない!

物理演算プロパティに「メッシュ」のメニューがなくメッシュ化ができない場合は、コチラの例のように、ドメインタイプが「液体」になっているか確認してみてください。

流体シミュレーションを行う領域「ドメイン」のタイプや設定方法など、詳しい解説はコチラの記事を参考にしてみてください!

CGbox
【Blender2.9】流体を作成~ドメイン編~ | CGbox こんにちは! Blenderの使い方や機能、ノウハウについてまとめているUEDAです。 自分のためのアウトプットの意味合いもありますが、読んだ方の参考になれば嬉しいです。 今...

まとめ

「流体シミュレーション」に対するFAQとその対処法について紹介しましたが、いかがだったでしょうか?

流体シミュレーションに限らず、物理演算はパラメータ設定が1ヵ所抜けているだけで、うまくいかなくなったりするので、初心者の方は難しく感じるかもしれません。

もし記事を読んで対処法を試してみてもうまくいかない場合は、一緒に考えたいのでお悩みをコメントで教えてください!

また、上に挙げた以外の悩みをお持ちの方もいらっしゃると思いますので、その場合もコメントで教えていただければと思います。

最後に、今回のまとめです!

  • 【最重要】流体シミュレーションの基本を確認しよう!
    • 液体シミュレーションの基本的なやり方
    • 煙(火炎)シミュレーションの基本的なやり方
  • 流体が反映されない/見えない/表示されない!
    • 流体が見えない!
      • 「3Dビューのシェーディング」が「ワイヤーフレーム」ではなく「ソリッド表示」になっている
      • 「メッシュ」にチェックを入れていない
      • ベイク先のフォルダー名に日本語が含まれている
      • 前回のシミュレーションのキャッシュが残っている
    • 流体がレンダリング結果に反映されない!→「キャッシュ」の「タイプ」を「全て」に設定してベイク
    • 炎が見えない!→「プリンシプルボリューム」の「黒体の強度」の数値を上げる
  • ベイクができない!
    • 「キャッシュ」の「タイプ」をデフォルトの「リプレイ」から「全て」に変更する
    • キャッシュの保存先フォルダは英語を使用
  • エフェクター(障害物)をすり抜ける!
    • エフェクターに厚さをつける
    • 「平面」にチェックを入れる
    • 「分割の解像度」を上げる
    • 「表面の厚さ」を上げる
  • 動かない・流れない・出ない!
    • 「フローの挙動」が「流入口」になっているか確認する
    • ドメイン分割サイズが「流入口」オブジェクトより大きいか確認する
  • 流体シミュレーションが重い!→「分割の解像度」を下げる
  • メッシュ化ができない!→ドメインタイプを「液体」にする
よかったらシェアしてね!
URLをコピーする
URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

CAPTCHA


目次
閉じる