CGBoxの一部の記事にはアフィリエイト広告が含まれております。
【Blender2.9】物理演算で煙を実装しよう!~基礎編~
こんにちは!
Blenderでの3DCG制作を勉強中のUEDAです。
Blenderを勉強して、アウトプットの場としてそれぞれの機能をまとめられればと思っています。参考にもなれば嬉しいです!
さて今回は、煙の作り方を紹介します。
煙とだいたい同じ要領で液体と火も作ることができます。
なので後半の機能説明はその際にも活用してみてください。
他の物理演算についてもまとめているので、ぜひ読んでみてください。
▼【物理演算の設定】はコチラ!
煙の作り方
煙は、物理演算の〔流体〕の中の一種です。
設定が済んだら”Space”を押すことで、煙のアニメーションが再生することができます。
この記事に沿って設定を行う中で、上手く煙が出ない可能性があります。
その場合は一旦呼び飛ばして、コチラを読んでもらえると解決するかもです!
まず煙を作るためには、煙が発生するオブジェクトの〔フロー〕と煙の発生する領域を決める〔ドメイン〕の2つが必要になります。
因みに立方体以外のオブジェクトでもドメインとすることができます。
ですがそのオブジェクトのバウンドボックスが使用されるので、どちらにせよ長方形になります。
メッシュ オブジェクトの他のシェイプをドメイン オブジェクトとして使用できますが、スモーク シミュレータは、シェイプの境界ボックスをドメイン境界として使用します。つまり、ドメインの実際の形状は、まだ長方形になります。
バウンディボックスについてはコチラの記事で触れているので、ぜひ読んでみてください。
煙の作り方は以下の2通りがあります。
- 通常の方法
- クイックエフェクト
〔クイックエフェクト〕の方が簡単でオススメですが、理解する為にも通常の設定方法も紹介していきます。
通常の方法
煙を発生させたいオブジェクトを追加・選択します。今回は平面を使用します。
このオブジェクトに物理演算を設定することで〔フロー〕を作りましょう。
あらかじめオブジェクトの〔全トランスフォーム〕を適用しておくとよいかと思います
画面右側の物理演算プロパティを開いてください。
〔流体〕を選択して、タイプを〔フロー〕、フロータイプを〔煙〕、フローの挙動を〔流入口〕にしてください。
他の項目に関しては、煙の詳細設定になるので後述します。
次に煙の発生する領域である〔ドメイン〕を作ります。(画像の黄色枠)
立方体を適度な大きさに広げましょう。
この立方体の大きさが煙の移動する範囲になるので、煙の高さ、広さに十分な大きさが必要です。
無駄に大きすぎると、煙が延々と移動してしまうので処理が重たくなるので注意が必要ですね。
今回は大体の大きさでよいですが、レンダリングする場合はその大きさを意識すればOKですよ。
この立方体にも先ほどと同じように、物理演算の〔流体〕を設定してください。
先ほどと違い、タイプを〔ドメイン〕、ドメインタイプを〔気体〕にしてください。
多分デフォルトでこのようになっているかと思うので、特別な変更は必要ないですかね。
この時点で、ドメインは〔ワイヤーフレーム〕に変更されます。
ではこれで準備が整ったので、煙を確認するために”Space”を押してください。
煙が再生されて、ドメインに内に立ち昇りました!
クイックエフェクト
2つ目の〔クイックエフェクト〕について紹介していきます。
クイックエフェクトとは、上記で説明した手順をより簡単な方法で設定できます。コチラの方がオススメ!
まず先ほどと同じように、煙を出したいオブジェクトを追加・選択します。
選択した状態で3Dビューポート内の〔オブジェクト〕→〔クイックエフェクト〕→〔クイック煙〕を実行します。
デフォルトの状態では〔ドメイン〕が大きすぎるので、適宜調整してください。
これで〔ドメイン〕の追加と、2つのオブジェクトの物理演算が自動で設定されました。
煙を出したいオブジェクトを追加するだけなので、かなり簡単に設定を行えますね。
後は、先ほどと同じように”Space”を押せば煙が出るので完了です。簡単。
キャッシュについて
〔キャッシュ〕とは、シミュレーションをベイク処理するための機能です。
シミュレーションを行うにはベイク処理が必要なので、煙を作る際には必須の機能になります。
この他の物理演算でも使うので、しっかりと把握しておきましょう。正確には演算方法が違うようですが。
流体シミュレーションは、独自のキャッシュを使用します。その他の物理シミュレーションでは、一般ベイク処理演算子を使用します。
今までは”Space”を押すとシミュレーションがされていましたが、これはデフォルトの設定で再生と同時にベイク処理がなされていました。
このデフォルトの〔リプレイ〕も含めて以下の3種類があります。
- リプレイ
- モジュール
- 全て
〔モジュール〕に関しては、使わないので出てきた時にまた詳しく触れます。
モジュール
キャッシュはステップバイステップでベイク処理されます: このタイプのベイクオペレータは、ドメイン設定内のさまざまなパネルに分散されます(メッシュのベイク処理ツールは[メッシュ]パネルにあります)。
ドメイン
〔キャッシュ〕はドメイン側のプロパティにあります。
〔タイプ〕からベイクの処理方法を変更することができます。
共通機能
〔リプレイ〕と〔全て〕のどちらにも共通な機能を紹介します。
まずはベイク処理したデータの保存場所です。
赤枠の右端のファイルマークからファイルの場所を決めましょう。
好きな場所でよいですが、名前に関して注意点があります。
ファイル名を日本語にすると上手くベイク処理が行えず、シミュレーションが行われないことがあるようです。
Blenderに共通しますが、日本語を使わずに英語を使うほうが無難ですね。
以降で紹介する上手く煙が発生しない理由の一つなので気を付けましょう。
コチラの記事で紹介していました。
次に〔開始/終了フレーム〕についてです。
これはそのままで、シミュレーションの開始と終了のフレーム数を決めることができます。
必要以上にフレーム数を大きくするとベイク処理に時間がかかり重たくなるので、必要な幅を設定しましょう。
合わせて〔全て〕だけになりますが、〔オフセット〕はどのフレーム数から開始させるかを設定できます。
例えば”50”にすると、”50フレーム”から設定したシミュレーションがベイクされます。
リプレイ or 全て
では長くなりましたが、ここからがこの項の本題になります。
先ほども述べましたがデフォルトの〔リプレイ〕は、再生と同時にベイク処理が行われます。
長所としては簡単で使いやすく、短所は処理の多いシミュレーションには向いていないことですかね。
レンダリングも問題なく行うことができます。
後〔リジューム可能〕に関しては、高解像度でベイク処理する時には使わない方がよいようです。
次に〔全て〕は、ベイク処理を行った後に再生することが可能になります。
煙の設定を変更したら毎回〔すべてベイク〕を押して、ベイク処理を行いましょう。
変更後に〔すべてベイク〕を実行しない限り、前回のベイクが再生されるだけなので注意が必要です
かかる時間は設定によりますが、終わるまで少し待ってから再生してみましょう。
長所はベイクをしっかりと行うので、安定したシミュレーションになります。
短所は、そのために時間が必要ということですね。スペックによってはシミュレーションはかなり重たく感じる作業ですからね。。
また〔リプレイ〕じゃなんだかウマくいかないなんて時はコチラを使用しましょう。
大概これで問題は解決します。
以前のバージョンではベイクボタンを押して使用するのが一般的だったようですが、〔リプレイ〕の安定感もある(主観的には)のでどちらが絶対ってことはなくなってきているのではないでしょうか。
最後にボリューム形式に関しては、〔OpenVDB〕でよいかと思われます。
もう一つの〔Uni Cache〕ではレンダリングに反映されなかったことがあったので。
OpenVDB 高度で効率的なストレージ形式。すべてのシミュレーション オブジェクト(グリッドとパーティクル)は、フレームごとに 1 つのファイルに格納されます。 Uni Cache いくつかの圧縮を備えたブレンダー独自のキャッシュ形式。各シミュレーション オブジェクトは、独自のキャッシュ ファイルに格納されます。
煙が上手く発生しない?!
前述しましたが不具合で上手くいかないことがあったりします。
- キャッシュの保存先ファイルは英語を使用(下層・上層のファイルにも日本語はダメ)
- デフォルトの〔リプレイ〕ではなく、〔全て〕でベイク処理を行い再生
これ以外にも対処法を紹介しておきます。
困ったら一通り試してみてください!
”Uni catche”を使用
先ほど紹介した〔キャッシュの形式〕を〔Uni cache〕にすると上手くいくことが多々ありました。
これで上手くいく理由は分からないのですが(使用PCとの相性?)、試してみてください。
特に問題は起こらないので安心して使用できます。
この場合は〔リプレイ〕でもほとんどの場合上手くいきました。
フローの挙動
フローの設定を間違えている場合があります。
特にうっかり〔フローの挙動〕の設定を忘れていることが多いですね。
デフォルトでは〔ジオメトリ〕になっていますが、〔流入口〕に変更する必要があります。
クイックエフェクトを使用している場合は起こらないですが、手動の場合はしっかりと確認しましょう。
ドメインを2つ使用
フローは3Dビューポート内にいくつあっても処理が重たくなるだけです。
ですが、ドメインは複数個使用することはできないです。
他のドメインを試すために追加するだけでもうまくいかなることがあるので、基本的に1つを使い回していきましょう。
他のファイルにコピペ
最後に無理やりな方法ですが、他のBlenderに丸々コピペという方法もあります。
この時のBlenderファイルというのは新規で立ち上げたものになります
この方法が自分的には確実で早いですかね。大体正常に動き出します。
コピペに便利なアドオンがあるので、ぜひ試してみてください。
コチラの記事で詳しくまとめています。
煙のカスタマイズ
これまでの部分では煙の基礎設定を紹介してきました。
ここからは煙を自分好みにカスタムできるその他の項目についてまとめていきます。
項目については以下の12個になります。
- フロータイプ
- フローの挙動
- フローを使用
- サンプリングサブフレーム
- 煙の色
- 絶対密度
- 初期温度
- 密度
- 頂点グループ
- フローソース
- 初期速度
- テクスチャ
フロータイプ
〔フロータイプ〕は、シミュレーションする流体のタイプを変更します。
先ほどまでは煙を使用していたので〔煙〕をせんたくしていましたが、それ以外にも〔火炎 + 煙〕、〔火炎〕、〔液体〕の3種類があります。
液体については他の記事でまとめようと思うのでお待ちください。
・〔流体:液体〕の記事は準備中。。
火炎についても詳しくはまた別の記事でまとめようかと思います。
火炎のみでも最低限の煙は発生するようです
フローの挙動
以下の3種類があり、先ほどから使用していた〔流入口〕が基本の設定になります。
それ以外も使い方次第だと思うので、覚えておいて損はないでしょう。
〔流入口〕は、流体を放出します。
〔流出口〕は、流体をドメインから除去します。
〔流入口〕と合わせて使うことで、フローが除去される範囲を設定することができます。
上記の動画では、平面(オレンジ枠)に〔流出口〕を設定しています。
〔ジオメトリ〕は、オブジェクトの形状が流出されます。
ジオメトリに関しては分かりにくかったので、公式マニュアルを引用しておきます。
このオブジェクトの領域のうち、ドメイン境界ボックス内にあるすべての領域がシミュレーションの実際の流体として使用されます。ドメイン内に複数の流体オブジェクトを配置できます。また、サーフェス法線が外側を向いているか、正しくシミュレートされないことを確認します。ドメイン オブジェクトとは対照的に、実際のメッシュ ジオメトリは流体オブジェクトに使用されます。
フローを使用
〔フローを使用〕は、フローの有効/無効を切り替えることができます。
チェックマークを外すと無効にできます。
ドメイン内でフローを複数使用する場合に、削除や追加をしなくても一発で切り替えることができます。
試す場合なんかにも便利に使用できますね。
動画では、〔流出口〕を設定した平面を無効にしています。
サンプリングサブフレーム
〔サンプリングサブフレーム〕とは、放出された煙のすき間を埋める機能です。
値を大きくすることですき間がより埋まっていきます。
以下は公式の画像になります。
フローであるモンキーを移動させると、形状通りに連なりギャップが発生しています。
この場合に値を大きくすることで滑らかな形状に変化しています。
煙の色
〔煙の色〕は、そのまま煙の色を変更できます。
ですがこの項目では、レンダリング時の色までは変更できません。
〔3Dビューのシェーディング:ソリッド〕の時の色が変わります。
レンダリングにも反映される色の変更の仕方はコチラのリンクからどうぞ!
・〔煙の色を変更する方法〕の記事は準備中。。
絶対密度
〔絶対密度〕は、以下で紹介する〔密度〕で設定した値を有効にすることができます。
チェックマークを付けることで機能をオンにすることができます。
違いは〔密度〕の項目でまとめています。
初期温度
〔初期温度〕は、煙の速度を設定できます。(デフォルト値は”1.0”)
値を大きくするほどフローは早くなり、小さくするほど遅くなります。
また正と負の値でも動きが異なり、負の値では逆方向にフローが動きます。
大きい負の値であれば、大きいほど下方向に早く動きます。
密度
〔密度〕は、煙の密度を設定できます。
デフォルト値が”1.0000”で青いバーが最大になりますが、一応”0.0000”~”10.0000”までは値が用意されているようです。
値を大きくするほど密度が高くなって、濃くなっていることが分かります。
”0.0000”は密度が無くなるので、全く見えなくなります。
頂点グループ
〔頂点グループ〕は、設定した頂点グループのみから煙を発生させるようにできます。
先ほどまでの煙を発生させていた平面の、手前右側の1頂点を頂点グループとして設定しています。
〔頂点グループ〕について詳しくはコチラの記事を読んでみてください。
フローソース・初期速度・テクスチャ
この3つは基礎的な機能でないですが、使い方次第で便利に利用することができます。
詳しい使い方はそれぞれ具体的な使用方法をまとめた際にします
まず〔フローソース〕は、フローからの煙の出方を設定できます。
主にパーティクルから煙を発生させたい場合に使用します。
次に〔初期速度〕は、フローに沿って煙に運動を与えるまたは、ノーマルに沿って速度を制御することができます。
最後に〔テクスチャ〕は、テクスチャで煙の発生の強度を設定できます(白黒の差によって)。
テクスチャは一から作ることもできますが、〔テクスチャプロパティ〕を利用すると便利です。
〔テクスチャプロパティ〕について詳しくはコチラの記事でまとめているので、ぜひ読んでみてください。
アドオンを使って煙を作ろう
流体は設定項目が多くレンダリングにも時間がかかるため、一から作ろうとすると結構時間がかかります。
アドオンを使用すると効率化できるので、導入するのを検討するといいと思います。以下、いくつかご紹介していきます。
Blaze – 瞬時に炎と煙をセットアップ
見映えのよい炎と煙を瞬時にセットアップすることができます。
ですがこのアドオンを使用すればノードでコントロールできるため、簡単かつ高速な操作が可能になっています。
詳しくは以下の記事を参考にしてみてください。
Real Fire 1.0 – 色んな種類の炎を追加できるアドオン
このアドオンではシーンにリアルな炎や煙を追加することができます。
数十種類のプリセットが用意されており、それらのプリセットをパラメータ調整で形状等を調整できます。
詳しくは以下の記事を参考にしてみてください。
まとめ
まずはこれで煙を発生させる方法は完璧でしょうかね。
作り出すこと自体は簡単でしたが、カスタマイズするにはドメインの方も把握する必要があります。
今回の記事は長くなってしまったので、更なる内容はコチラの記事でまとめています!
・ドメインの記事は準備中。。
- 煙が発生する〔フロー〕
- 煙の発生する領域である〔ドメイン〕
- 〔クイックエフェクト〕が簡単で便利
- キャッシュは〔リプレイ〕と〔全て〕を使い分ける