CGBoxの一部の記事にはアフィリエイト広告が含まれております。
【Blender2.9】流体を作成~ドメイン編~
こんにちは!
Blenderの使い方や機能、ノウハウについてまとめているUEDAです。
自分のためのアウトプットの意味合いもありますが、読んだ方の参考になれば嬉しいです。
今回はフローの発生する領域を決める〔ドメイン〕についてまとめていきます。
フロー側での設定に加えてドメインでも更なる詳細を設定することができます。
つまり、煙や火炎、液体をカスタマイズする上でコチラの機能を把握する必要があります。
流体を実装しよう!
流体つまり、煙や火炎、液体を実装するには今回紹介する〔ドメイン〕と〔フロー〕の2つが必要になります。
- フロー:流体が発生するオブジェクトに設定
- ドメイン:流体の発生する領域を設定
基本的な設定方法については別の記事でまとめているので、まずはコチラを読んでみてください。
流体の実装ができたら以下から詳細な設定を確認してみてください。
流体の色や動き方、解像度などフロー側では変更できない項目がたくさんあるので、コチラも重要ですね。
YouTubeでも流体の中の液体について解説しています。
初心者向けに基礎から順を追ってまとめているので、合わせてチェックしてみてください!
設定
まずは〔設定〕の項目になります。
- ドメインタイプ
- 分割の解像度
- タイムスケール
- CFL数
- 適応タイムステップを使用:最大/最小タイムステップ
- シーンの重力を使用X/Y/Z
- 空の空間
- 障害物内で削除
- ボーダーコリジョン
- 適応ドメイン
流体の動きなどではなく、様々な設定を行える項目になります。
ドメインタイプ
〔ドメインタイプ〕とは、ドメイン内の流体で何を利用するかを設定できます。
〔液体〕と〔気体〕の2種類があるので、その時々によって設定を変更する必要があります。
クイックエフェクトで設定していればあまり関係ないですが。
分割の解像度
〔分割の解像度〕は、流体の解像度を変更することができます。
値を上げれば上げるほど解像度が上がるので、より詳細になります。
その分処理が多くなるので、重くなります。
使っているPCのスペックと相談して設定しましょう。
またドメインの大きさが大きい場合にもより値を大きくする必要があります。
32 | |
128 |
見ての通り同じフレーム数でも全く違うので、注意が必要です。
タイムスケール
〔タイムスケール〕は、シミュレーション全体の速度をコントロールします。
値を倍にすると、速度も倍になる感じですかね。
レンダリング時のフレームの節約に使うとよいでしょう。
1.0000 | |
2.0000 |
CFL数
〔CFL数〕は、高速シミュレーション時の処理の精度を上げることができます。
この値を下げることで、精度を上げることができます。
コリジョンなどと衝突する場合にはこの値を調整することで、理想的なシミュレーション結果を得ることができます。
コリジョンについて詳しくはコチラの記事でまとめているので、ぜひ読んでみてください。
逆に上げると精度が下がる分、処理時間が短くなります。
CFL数を下げる場合は、最大時間ステップ数を増やすことをお勧めします。同様に、CFL数を増やす場合は、最小時間ステップ数を調整する必要があります。
適応タイムステップを使用:最大/最小タイムステップ
〔適応タイムステップを使用〕は、フレーム当たりの処理回数を変更する機能です。
チェックボックスにチェックマークを入れることで使用可能になります。
下部の最大/最小タイムステップの数字によって処理回数を決定します。
試しに数字を上げてみると分かりやすいですが、処理が重たくなってFPSが下がるかと思います。
この機能も先ほどの〔CFL数〕と同じように、精度が上がる機能でしょうかね。
最小の値が最大の値を上回らないように気をつけましょう。
これは、時間ステップの最大数と最小数、現在のフレームレート、およびタイムスケールを考慮に入れます。
シーンの重力を使用X/Y/Z
〔シーンの重力を使用X/Y/Z〕は、ここで設定した重力を使用する機能です。
デフォルトでは通常の重力と同じ設定がなされています。
それぞれの値を変更することで、軸方向に重力を追加することができます。
トリッキーな使い方ができそうな機能ですね。
そのままでは使えず、〔シーンプロパティ〕で〔重力〕を無効にすることで使用が可能になります。
空の空間
〔空の空間〕は、レンダリングを最適化する機能です。
この値以下のボクセルは空の空間と見なされ、レンダリング時に最適化されます。
この値を上げることでレンダリングが短くなります。
キャッシュ内の〔OpenVDB〕を使用していると、キャッシュサイズも削減することに繋がります。
障害物内で削除
〔障害物内で削除〕は、障害物と衝突した流体を除去する機能です。
〔エフェクター〕や〔流出口〕と接触した流体が残らずに消滅する機能だと思われます。
上手くいかなかったので、よい事例が出てくればここにまとめます。
ボーダーコリジョン
〔ボーダーコリジョン〕は、流体がドメインや他のシミュレーションと衝突した際の動作を設定できます。
チェックマークを入れることでそれぞれの方向に有効にすることができます。
有効にすると衝突した流体は反射した後に、別の側面に衝突すると消滅します。
デフォルトでは煙の場合は全部が無効になっているので、循環し続けます。
〔上〕のみ有効 | |
〔上〕以外有効 |
適応ドメイン
〔適応ドメイン〕は、シミュレーションを流体に適応させて処理を軽くする機能です。
チェックマークを付けることで利用することが可能です。
有効にすると、ドメインが流体の変化に合わせて形状変化していきます。
シミュレーションと関係ない箇所の計算を減らすことで、処理が軽くなります。
また〔追加する解像度〕と〔余白〕、〔しきい値〕で更なる変更を加えることができます。
まず〔追加する解像度〕は、元のドメインに対してどの位まで大きさを変更するか設定できます。
値を”1”以上にすると、元のドメインの大きさ以上に流体が動作していきます。
次に〔余白〕は、流体の周辺に追加される余白の大きさを設定できます。
流体が高速の場合はある程度余白を用意しないと、ドメインに当たってしまう可能性があります。
最後に〔しきい値〕は、ボクセル当たりの流体の量がどの位で空とするか設定できます。
例えば”1.000000”にするとすべての量が空となるので、流体が出現しなくなります。
無駄を省くことができるようで、余白と似たような機能でしょうかね。
気体・液体
この項目では〔気体〕と〔液体〕それぞれに特有の詳細を設定することができます。
それぞれの記事で詳しくはまとめていきます。
▼【流体実践編:タバコ】はコチラ!
▼【リアルな炎を再現】はコチラ!
・〔液体〕のチュートリアルは準備中。。
ガイド
〔ガイド〕は、ガイドと呼ばれるオブジェクトを利用して流体に流れをや力を加えることができる機能です。
この機能を使うことで独特な動きを流体に実装できます。
〔ガイド〕の記事で詳しくはまとめているので、ぜひ読んでみてください。
ドメイン側の項目についてもコチラの記事で触れています。
コレクション
〔コレクション〕は、指定したコレクションのみがドメイン内で機能するように設定できます。
〔フロー〕と〔エフェクター〕の2種類があります。
それぞれ指定したコレクション内のフローもしくはエフェクターのみが機能するように制限します。
〔エフェクター〕について詳しくはコチラの記事でまとめているので、ぜひ読んでみてください。
・エフェクターの記事は準備中。。
キャッシュ
〔キャッシュ〕とは、シミュレーションをベイク処理するための機能です。
シミュレーションを行うにはベイク処理が必要なので、煙を作る際には必須の機能になります。
様々な物理演算で使うので、しっかりと把握しておきましょう。正確には演算方法が違うようですが。
流体シミュレーションは、独自のキャッシュを使用します。その他の物理シミュレーションでは、一般ベイク処理演算子を使用します。
詳しい内容については以下のリンクでまとめているので、ぜひ読んでみてください。
また合わせてシミュレーションが発生しない場合の対処法も一応確認しておいてください。
フィールドの重み
〔フィールドの重み〕は、フォースフィールドが流体にどの程度の影響を与えるか設定できます。
一番上の〔エフェクターコレクション〕では、指定したコレクション内のフォースフィールドのみ流体に影響を与えるようにできます。
そこから下は、それぞれの影響力を変更できます。
〔フォースフィールド〕について詳しくはコチラの記事でまとめているので、ぜひ読んでみてください。
ビューポート表示
〔ビューポート表示〕は、ビュポートでの流体の表示方法を変更することができます。
あくまでビューポート表示のみの変更なので、レンダリングには適用されません。
- 幅
- 補間
- ボクセル毎のスライス数
- スライス
- グリッド表示
- ベクトル表示
以上の6項目で変更を加えることができます。
幅
〔幅〕は、流体の厚さを変更することができます。
値を下げると密度が下がるような感じですね。
補間
〔補間〕は、流体の補間方法を変更することができます。
補間方法は以下の3種類があります。
- リニア:スムーズさと速度のバランスが良好
- 三次式:低速だがスムーズで高品質な補間
- 近接:補間なし
基本はデフォルトの〔リニア〕を使っていれば十分でしょう。
〔三次式〕なんかは、レンダリング前などで局所的に使うなら便利に使えそうですね。
ボクセル毎のスライス数
〔ボクセル毎のスライス数〕は、ボクセル当たりのスライスする数を設定できます。
特にいじらないでよいかと思われます。
スライス
〔スライス〕は、流体を軸方向にスライスして表示します。
〔座標軸〕で流体をスライスする方向を、〔位置〕でスライスする位置を設定できます。
〔グリッドライン〕は、スライスの元となるセルが分かりやすいようにグリッドラインを表示することができます。
グリッド表示
〔グリッド表示〕は、カラーマップで視覚的に確認しやすくできます。
以下の様に薄い部分は見ずらいですが、この機能でどのような状態なのか見やすくなっています。
〔フィールド〕で確認したい物に合わせて選択する必要があり、上記では〔炎〕を選択しています。
- ヒート
- 燃料
- 炎
- 密度
- 青
- 緑
- 赤
- Z Force
- Y Force
- X Force
- Z Velocity
- Y Velocity
- X Velocity
- 圧力
- フラグ
その更に下部にあるカラーマップを利用して、好きな色に設定しましょう。
ベクトル表示
〔ベクトル表示〕は、流体をベクトルで表示します。
〔表示方法〕でベクトルの形状を変更できます。
- ニードル
- 流線
- MACグリッド
〔ニードル〕と〔流線〕は、〔ベクトルの長さ〕を使うことでベクトルに合わせて表示ベクトルを拡縮します。
〔MACグリッド〕の場合は、〔MACグリッド〕によってそれぞれの軸毎に表示/非表示を切り替えることができます。
〔フィールド〕は、以下の3種類から表示するベクトルを選択することができます。
- 力
- ガイドの速度
- 流体の速度
〔スケール〕は、ベクトルを拡大縮小します。
流体の色を変更
流体の色は〔ドメイン〕のマテリアルを設定することで変更することができます。
ドメインを選択して、ワークスぺースを〔Shading〕に変更してください。
〔マテリアル出力〕に〔プリンシプルボリューム〕が接続されているはずです。
この〔プリンシプルボリューム〕の〔カラー〕を変更することで、流体の色を変更することができます。
それ以外の項目でも見た目を変更できるので、色々試してみてください。
またノードをいつも通り組んでいくこともできるので、更に複雑な変更も可能です。
マテリアル・ノードに関しての基礎知識についてもまとめているので、ぜひ読んでみてください。
カラー属性
〔プリンシプルボリューム〕内の〔カラー属性〕を使うことで、フロー側で設定した色をレンダリングに反映することができます。
フロー側で色を設定したら、先ほどと同じように〔Shading〕を開きます。
次に〔カラー属性〕が空欄なので、”color”と入力してください。
そうするとレンダーにも反映されていることが分かります。
先ほどの方法ではドメイン内は流体の色が統一されていましたが、この方法であれば複数オブジェクトの色をそれぞれ違う色に設定することが可能です。
またフロー側の色はキーフレームを打つことが可能なので、アニメーションの途中で色を変えるなんてこともできますよ。
まとめ
フローに続いて、ドメインも項目が多いので複雑で大変でしたね。
よく分からない項目もありましたが、とりあえず知っておけば実用的なタイミングで生かせるやもしれません。
更なる流体のチュートリアルは以下のリンクからどうぞ!
- 分割の解像度:デフォルトの”32”から”64”まで上げるのを推奨
- タイムスケール:値を上げて無駄を少なくして節約
- CFL数:高速なアニメーションの場合は値を減少
- CFL数をUp/Down ⇆ 最小を調整/最大をUp
- 適応ドメイン:有効にして処理を軽減
- 色の変更はドメインのマテリアルを設定 → ”color”を利用してより自由に!