このシリーズの第7回チュートリアルでは、Blender 4.5 の Fluid シミュレーターを使った fire と smoke の simulation において、前回解説した Voxel Attribute を利用し、レンダリング用の fire と smoke の Material を変更する方法を見ていきます。


このチュートリアルは、Blender 4.5 における炎と煙の基礎に関する全10回のミニシリーズの一部です。エピソードの完全な一覧を見るには、ここをクリックしてください。


動画の書き起こし

皆さん、こんにちは!このシリーズの第7回チュートリアルでは、Blender 4.5 の Fluid シミュレーターを使った fire と smoke の simulation において、前回解説した Voxel Attribute を利用し、レンダリング用の fire と smoke の Material を変更する方法を見ていきます。

今回の最初の例で使うシーンでは、fire の emission は Inflow Fire に設定した Fluid コンポーネントを持つオブジェクトの Vertex Group から発生しています。

simulation の Domain はバーナーの上部だけを囲んでおり、そこで flame が発生します。

Vertex Group からの emission に関して、もし flame が表示されない場合、その原因は Domain の resolution にあるかもしれません。

解像度が低すぎて Voxel が大きい場合、emission 頂点を含む Voxel が空とみなされ、flame を放出できなくなることがあります。その場合は Domain の resolution を上げてみてください。

デフォルト設定では flame の高さは非常に低く、横からはほとんど見えません。しかし flame の見た目を調整する方法はいくつも学んできました。例えば、Inflow オブジェクトの Initial Velocity を操作して炎に上向きの勢いを与えたり、Domain の反応速度を変えて炎を高くしたりできます。今回のバーナーで生成される flame の種類は乱流や色によって変化します。ほとんど乱流のない flame を得るために、Domain の Fire セクションの Vorticity 値を 0 に下げました。

Material の定義に進む前の最後の変更として、emission Vertex Group に頂点を追加し、Timeline のアニメーションを simulation の最後の 100 フレームに限定しました。つまり flame がすでに安定してよく発達した状態です。

では、Material の定義に移りましょう!3D 側面ビューを直接 Rendered モードにし、World の Background Strength を 0 に設定したので、最初はプレビューが真っ黒です。左側の Image Editor に参照画像を置き、中央には Domain を選択した Material Editor を配置し、Principled Volume ノードを設定しています。

これまでのチュートリアルで見たように、Emission Strength を上げて Emission Color に均一な色を割り当てても、結果はがっかりするものでした。Blackbody の使い方は学びましたが、ここからはいよいよ Emission モードの使い方を習得していきます。

前回のエピソードから分かるように、Fluid シミュレーターは各 Voxel に情報を保存しています。これらのデータは Attribute ノードを使い、フィールドに属性名を入力することで取得できます。

しかし Volumetric Material には Volume Info という専用ノードがあり、これらの属性を出力ソケットとして提供してくれます。

Flame 出力や Temperature 出力を Emission Strength 入力に接続すると、flame の見え方が劇的に変わります!Flame 出力は Temperature 出力よりも補間された値が良く、Domain の解像度もより明確に反映されます。このため、ここでは Flame を使います。

Flame と Temperature の出力は Emission Color にも利用できます。特に Color Ramp ノードを間に挟むことで、Domain Voxel に含まれる情報に基づいて flame の色をポイントごとに変化させられます。

私は Flame の情報を Color Ramp に接続し、それを Material の Emission Color パラメータに使用しています。ここでの作業は、Color Ramp のストップに色と透明度を設定することです。

そのために Blender の Color Picker を使って参照画像から直接色をサンプリングすることもできます。

ストップの色には透明度を含めることもでき、これは flame の外側部分で特に有用です。境界より少し内側には半透明の領域があり、その外側がより不透明になるのをよく見かけます。

また、Color Stop 間の補間も慎重に選ぶ必要があります。中でも最も極端なのは Constant で、ひとつの Color Stop から別の Color Stop に突然切り替わります。

現実的ではありませんが、よりアーティスティックな表現には使えます。

今回の Material に関するチュートリアルが短く感じるのは、これまでのチュートリアルで学んだ情報とパラメータを基にしているからです。

この時点ですでに、Domain と Flow オブジェクト両方の Fluid パラメータを通じて flame の形を定義し、さらに Blackbody や Emission と Blender が提供するさまざまなノードを使って flame の見た目を決定できる知識が揃っています。

ここで紹介したセットアップに限定する必要はありません。他の Material ノードも試してみてください。例えば、Math ノードを Multiply や Power に設定して Emission Strength を変更し、Flame から来る情報を加工することができます。さらに、これらのノードのパラメータにはキーフレームを設定できるので、Material を通じて flame の強さをアニメーション化することができます。これなら、simulation の Fluid コンポーネントのフィールドを直接変更する必要はありません。

このチュートリアルを締めくくる前に、ひとつの Domain 内に3つの Inflow オブジェクトを作成し、それぞれ異なる色を持たせた方法をお見せします。結果は完璧ではありませんが、ノードの別の使い方、特に Color Ramp の応用を示す例として取り上げます。

ご存じのとおり、Material は Domain レベルで定義する必要があります。なぜなら、それは Domain の Voxel から生成されるからです。つまり、Domain 内の Inflow オブジェクトに Blackbody ノードを個別に割り当てることはできません。

しかし、Inflow オブジェクトには Smoke Color というフィールドが Inflow パネル内にあります。この色は Volume Info ノードを使って Domain Shader で取得でき、具体的には Color 出力を使用します。

このフィールドを Mix Shader ノードの Factor として使うことで、Voxel ごとに定義された smoke color に応じて異なる Principled Volume ノードを割り当てることができます。

ただし Mix Shader だけでは2つの Shader が単純に 50% ずつ混ざってしまうので、Volume Info から得られる色をはっきり分離するために Color Ramp を使い、その補間方法を Constant に設定します。

ここで、3つの Inflow オブジェクトに白、グレー、黒という3種類の Smoke Color を左から順に割り当てました。最初の Color Ramp では黒とそれ以外の色を分けます。

黒は 0 に対応するので、最初の Mix Shader ノードの1つ目の Shader 入力に送られます。

そこには赤い Blackbody Tint を持つ Principled Volume ノードが接続されています。

さらに 3D プレビューで Denoise を有効にし、Rendered ビューで要素の色をよりはっきり確認できるようにしました。

Mix Shader の2つ目の Shader 入力には青い Blackbody Tint を持つ Principled Volume ノードが接続されています。したがって、この時点で smoke color が黒なら赤い Blackbody が表示され、黒以外なら青い Blackbody が表示されます。

次に、もうひとつの Mix Shader ノードを追加します。これは別の Color Ramp を入力として受け取り、これも Constant に設定し、Color Stop をランプの中央に配置します。

この場合、smoke color が黒からグレーの間であれば、2つ目の Mix Shader の1つ目の Shader 入力が使用されます。この Shader は先ほどの黒とグレーの区別による結果なので、最終的な色は赤か青になります。

一方、smoke color がグレーから白の間であれば、2つ目の Mix Shader の2つ目の Shader 入力が使用されます。ここには緑の Blackbody Tint を持つ Principled Volume ノードが接続されています。したがって、Smoke Color が白のオブジェクトは緑でレンダリングされます。もちろん、2色や3色の炎の球体を作る方法はこれだけではありませんが、ノードの活用例として紹介しました。前述のとおり分離は完全ではないので、もし改善案や別のセットアップを見つけたら、ぜひコメントで提案してください!

チュートリアルを検索

フレーズ、または複数のキーワードをカンマで区切って入力してください。

このウェブサイトは個人サイトであり、販売チャネルではありません。3Dモデルに関するページは、私の作品の一部を記録するためのものであり、販売案内、価格、購入方法、商用リンクは掲載していません。現在、カスタム制作、コンサルティング、その他の業務上の協力依頼は受け付けていません。


プライバシー及びクッキーの使用に関する拡張情報の通知