4. Final Renderでの炎表現
目的
Final Renderは、実際に画像や動画として出力される結果です。
Rendered表示で確認していても、最終レンダーでは次の要素で見え方が変わることがあります。
| 影響要素 | 内容 |
|---|---|
| レンダーエンジン | Eevee / Cyclesで表現が異なる |
| 透明設定 | Blend ModeやAlpha設定が影響 |
| ライト設定 | 炎の発光感や周囲の明るさに影響 |
| カラーマネジメント | Filmic / Standardなどで色が変わる |
| Bloom / Glare | 発光の見え方に影響 |
| Sampling | ノイズや透明の品質に影響 |
最終的な炎の品質は、3D Viewだけでなく、必ずFinal Renderでも確認する必要があります。
Solid用炎とRender用炎を分ける場合の問題
炎表現では、次のように2つのオブジェクトを用意したくなることがあります。
Flame_SolidPreview:Solid表示用のメッシュ炎
Flame_Render:Rendered用のShader Node炎
この考え方自体は有効です。
しかし、注意点があります。
Blender標準では、3D Viewの表示モードがSolidかRenderedかによって、別々のオブジェクトを完全自動で出し分ける単純な設定は基本的にありません。
そのため、何もしないと、
- Solid用炎
- Render用炎
が同時に表示されてしまうことがあります。
解決方法1:1つの炎オブジェクトにまとめる
最も単純で安定する方法は、炎を1つのオブジェクトにまとめることです。
Flame_Main
├─ メッシュ形状:Solidで見える
├─ Viewport Display Color:Solid用の色
├─ Shader Node:Rendered用の炎表現
└─ Driver:ScaleやShape Keyを揺らす
この方法では、SolidでもRenderedでも同じオブジェクトを使います。
| 表示モード | 見える内容 |
|---|---|
| Solid | 炎メッシュと表示色 |
| Material Preview | Shader Nodeの炎 |
| Rendered | Shader Nodeの炎 |
| Final Render | Shader Nodeの炎 |
二重表示の問題が起きにくいため、板ポリゴン型の炎には特に向いています。
解決方法2:CollectionやView Layerで切り替える
Solid用炎とRender用炎を別オブジェクトにしたい場合は、CollectionやView Layerで管理します。
Collection: FLAME_SOLID
└─ Flame_SolidPreview
Collection: FLAME_RENDER
└─ Flame_Render
View Layerを分ける場合は、次のようにします。
| View Layer | 表示する炎 | 用途 |
|---|---|---|
| WORK_SOLID | Flame_SolidPreview | 作業・位置確認 |
| CHECK_RENDER | Flame_Render | レンダー確認 |
| FINAL_RENDER | Flame_Render | 最終出力 |
この方法は、標準機能だけで管理できるため安定しています。
View Layerは、コレクションの表示状態を分けて管理できる仕組みとして説明されています。
出典:https://docs.blender.org/manual/en/latest/render/layers/introduction.html
Collectionは、オブジェクトを整理・表示制御する単位として利用できます。
出典:https://docs.blender.org/manual/en/latest/scene_layout/collections/collections.html
解決方法3:Pythonアドオンで自動切替する
より高度な方法として、Pythonで3D Viewの表示モードを監視し、
- Solidなら
Flame_SolidPreviewを表示 - Material Preview / Renderedなら
Flame_Renderを表示
という自動切替を行うことも可能です。
考え方は次の通りです。
if viewport shading == SOLID:
Flame_SolidPreview = 表示
Flame_Render = 非表示
if viewport shading == MATERIAL or RENDERED:
Flame_SolidPreview = 非表示
Flame_Render = 表示
Blender Python APIには、3D ViewのShading Typeに関する情報が用意されています。
出典:https://docs.blender.org/api/current/bpy.types.View3DShading.html
ただし、複数の3D Viewを開いている場合、どのViewの状態を基準にするかという問題があるため、アドオン化する場合は設計が必要です。
Driverで炎の揺らぎを作る
Solid用炎でもRendered用炎でも、driverを使うことで炎の揺らぎを表現できます。
例えば、Solid用の炎メッシュの Scale Z に次のようなdriverを設定します。
1.0 + 0.08 * sin(frame * 0.25)
これにより、炎が上下に伸び縮みします。
左右揺れには Location X を使います。
0.03 * sin(frame * 0.37)
回転揺れには Rotation Z を使います。
0.08 * sin(frame * 0.22)
複数の板ポリゴンに少しずつ異なる式を入れると、より自然な炎の揺らぎになります。


コメントを残す