Blender-Eeveeのレンダリングパス

３Dソフトではレンダリングの最終出力画像だけでなく
「奥行き」「色のみ」「陰影のみ」といった情報を画像として主力する機能があります。
この情報のことを **「レンダーパス(Render Pass)」** と言います

３Dに馴染みがない人は 機能としてあることを知らなこともあるようなので
[このテスト用ファイルで](https://www.dropbox.com/s/o8dw57msrlfycz8/render_pass_test.blend?dl=0)
BlenderのEeveeどういったものを出力できるのか見てみます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151493/795feafd-d980-fe7b-d446-7468271bf9a6.png)
猿はメタリック調のマテリアルを設定し　目には「放射」を設定してあり
「ブルーム」をオンにすることで発光効果を加えてあります。
円錐には「クイック煙」のボリュームを発生させてあります
また右手に白色光のポイントライト　左手に赤色の光のポイントライトを置いています
# レンダーパスの一覧
まずはBlenderのプロパティエディタのビューレイヤプロパティの項目と出力された画像を並べてみます
ビューレイヤプロパティの「パス」の下に並んでいるのが利用可能なレンダーパスです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151493/67ee28c4-d2dd-cc3e-cc19-7a9bda346cb4.png)

3Dビューポートでも オンになっているレンダーパスの出力を確認できます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151493/9a972724-0a79-8b95-3ec6-6fe5e3414231.png)
マテリアルプレビュー　または　レンダープレビューのシェーディングの設定の中から選択できます。
# 各パスの解説
ここでは各パスについて簡単に説明しておきたいと思います
- 統合
通常レンダリング結果として扱う画像データです
Eeveeでは各レンダーパスの情報を合成することで最終的なレンダリング画像になっていると言えます。
- Z
画像ではなく　カメラを基準にした奥行が数値として出力されています
OpenEXR以外の画像フォーマットでは何かしらの画像処理をしないと ほぼ真っ白な画像になります
- ミスト
上記のZの値を　設定に従って0～1.0（0-255）の範囲に収めたものです
ミストのレンダーパスをオンにすると　ワールドプロパティのミストの項目に設定が現れます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151493/c0527d79-dfb9-a818-c750-3df7c3cf9e69.png)
開始より手前を黒　開始＋深度より奥を白になるように奥行きに応じた値が出力されます

:::note 
Z　ミストともに　カメラでレンダリングされる範囲内のみ計算されます。
デフォルトの100ｍより遠い範囲で値を利用したい場合
レンダリングに使用するカメラのオブジェクトデータプロパティで終了の数値を変更する必要があります
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151493/f8e0df1f-9575-1bfd-ebc7-c1375a38fb02.png)
:::

- ノーマル
日本語に訳すと法線　レンダリングされたものがどちらの方向を向いているかを表すデータです
画像として表示すると　X軸方向が赤　Y軸向きが緑　Z軸向きが青で表現されていますが
各軸の方向に　-1.0～1.0の値が出力されているので　画像処理ソフトで使いたい場合には多少の処理が必要になります
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151493/aca4e778-e6a7-a87a-8cb7-ac08280c1b64.png)

- ディフューズ　ライト　カラー
ライトに　ライトやワールドの影響を受けた直接光の陰影が
カラーに　マテリアルのベースカラーで設定した色やテクスチャの画像が出力されます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151493/255cd2a4-be92-3a5b-aab2-12cf584b7af9.png)

- スペキュラー　ライト カラー
スペキュラーライトには　鏡面反射した画像が出力されます
スペキュラーのカラーには　スペキュラ反射に指定した色が出力されますが　スペキュラーのシェーダ以外では設定項目がなく、大抵は白色です
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151493/115ea5fa-f532-4d12-ddd0-34e32e7118cb.png)
- ボリューム　カラー
煙等のボリュームがシーン内にある時には画像が出力されます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151493/14c322fe-5dea-6660-971b-c7f1522214db.png)

- 放射
放射で設定した**色**が出力されます（強さの設定では変化しない様子です）
- 環境
環境（ワールド）の画像です
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151493/397deae9-ff5f-d355-97e7-ed43d3f661a3.png)
レンダープロパティのフィルムの透過で背景を透明にレンダリングするようにしている場合でも背景画像を取得できます
- 影
落ち影の成分のみを画像として出力されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151493/757b9ca3-d9a7-83df-db32-94cf8de65112.png)
ディフューズ　ライトのパスにもこの成分は加えた状態で出力されているようです。
- アンビエントオクルージョン
奥まった部分を暗く描くことで リアルな感じにする成分の画像です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151493/d7e93536-1275-0d35-68f3-c47f1e3f29e1.png)
レンダープロパティのアンビエントオクルージョン(AO)を有効にすることで出力されます。
ディフューズ　ライトのパスにもこの成分は加えた状態で出力されているようです。
シェーダーのノードにアンビエントオクルージョンがありますが　そちらの値とは違ったもののようです。

- エフェクト　ブルーム
ブルームとは　光り輝いているように見せるために
一定以上の明るさの部分の色をぼかして重ねて描画することで周囲を明るくする効果です
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151493/1ce871de-9819-6947-113c-726a381a90ed.png)
ブルームのパスでは　効果を加えるために重ねたぼかし画像が出力されます

# 任意の出力パス（AOV）
Blenderでは レンダリングの統合画像に使用される画像とは別に
シェーダーAOV（Arbitrary Output Variables）という任意なシェーディングデータをレンダーパスとして出力する仕組みがあります
これを使えばレンダリングとは別のテクスチャを設定したものを同時に出すこともできます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151493/b09d22a3-9957-8e16-169c-a6077babac5e.png)
キャプチャではキューブに別のUVで画像をマッピングしたものを並べて表示しています

シェーダーAOVは　レンダープロパティのシェーダーAOV横の+ボタンを押して項目を追加して
マテリアルやワールドのシェーダーノードに　AOV出力のノードを追加することで利用できます
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/151493/c14cb14f-1120-e430-5ae0-5117745878c1.png)
ノードのAOV出力の名前と　シェーダーAOVの項目の名前は同じにする必要があります
複数のマテリアルがある場合　同じ名前を指定したAOV出力があればその名前のAOVのレンダーパスに出力されます
一方で　全体にこの設定を適用したい場合には全てのマテリアルにAOVを追加する必要はあります。


長くなってしまいましたが　今回はここまでで。
次にはファイルとして出力する話を書きたいと思います