Blenderでマテリアル用のテクスチャを作成するとき、通常は「ベイク」機能を使って1枚ずつ画像に焼き出します。
しかし、複数のノード出力を何度もベイクするのは手間がかかります。微調整が必要で何度かやり直すと本当に嫌になります…。
そんなときに AOV Outputノードが使えるというのを知ってやってみました。
AOV Outputノードを使えば、マテリアル内の好きな情報を「カスタムレンダーパス」として一度に出力できます。
ベイク不要で、Compositingを使ってまとめて画像ファイルに保存することも可能です。
一回のレンダリングで複数テクスチャ作成できる仕組みを作ることが可能で、何度も調整しながらテクスチャを作りたいというときにとても便利で時短になってオススメです!
この記事は、BlenderでAOV Outputノードを使ってテクスチャ素材をまとめて出力する方法を解説している中級者向けの記事です。
難易度
準備
カラーの他にノーマルやディスプレイスメントも焼いていきたいと思いますので、
少しレリーフ状になるように板ポリゴンの上に平べったくしたスザンヌやオブジェクトを置いておきます。
真上から見た様々な情報を書き出していくため、平面に垂直にカメラを配置し、Orthographic(平行投影)にして撮影します。
出力解像度は作りたいテクスチャの解像度に合わせます。(例:2048×2048など)
レンダーエンジンはEEVEEです。

スザンヌと右下のトーラスにはサブディビジョンサーフェス、Shade Smoothをかけています。
AOV Output ノードの使い方
マテリアル設定でAOV Outputノードを使い、様々な情報をレンダーパスで抽出できるようにします。
AOV Outputノードとは、
レンダー時に任意の情報を追加のパスとして出力できる仕組みです。
つまり、通常のカラー、ノーマル、Zなどのパス以外に、自分でカスタムした「特定の情報」を作って出力できるということです。

使い方
例えばノーマル情報を書き出したいとき。(Normal情報はレンダーパスで出力する機能がありますが、AOV Outputノードを使用した場合です。)
- View Layer プロパティ にある
Shader AOV(シェーダーAOV)パネルを開く。
+アイコンを押して新しいAOVパスを作り、名前をつける(例:Mnormal)。ことのときデータの型をColorにするかValueにするか選べるので適切な型に設定します。ノーマルの場合はベクトルなのでColorに設定。 - マテリアルシェーダーで AOV Output ノード を追加。ノードのNameを同じ名前にします。
- Color 入力に、出力したい情報をつなぐ。
※Normal情報はGeometryノードのNormal出力から取っています

これで、Compositingのエディタに行くと、Render Layersノードの出力にMnormalという項目が増えています。
レンダリングするときちんとノーマル出力が取得できます。
型と名前の設定がきちんと一致していないときちんと出力ができませんので注意してください。

※マテリアルは板ポリゴンなどすべてに同じものをつけていますが、別々のマテリアルをつけて、AOV Outputに同じ名前をつければ合わせて出力できます。
カラー、ディスプレイスメント情報の抽出
カラーやディスプレイスメント情報も出力してみます。
Shader AOV(シェーダーAOV)パネルを開いて、Mcolor(カラー用、型:Color),Mdisplacement(ディスプレイスメント用、型:Value)のパスを追加します。
カラー情報抽出
マテリアル設定で、つけたい色を作ってAOV OutputノードのColorに渡します。
今回はVoronoi Textureで作っていますが、RGBノードやカラーランプノードなどいろんなカラーを渡すことができます。

ディスプレイスメント情報抽出
ディスプレイスメント情報はGeometryノードのPosition出力のZ成分を使います。
Map Rangeノードを使って今の数値を、0~1の間の範囲に収めています。
ディスプレイスメントは高さの値1つを取得できればいいので、型はValueにします。
ColorとValueの使い分け
| Color | 色データを出力。RGBカラー値はもちろん、ノーマル情報なども出せます。 |
| Value | 数値(スカラー)データを出力。グレースケールのマスクなどに便利。 |

0~1の間に収めるため、Greater Thanノードを使って1よりはみ出した部分がないかチェックしています。
1よりはみ出した部分があれば、Map RangeノードのFrom Maxの値を上げて、はみ出す部分が出ないよう調整します。
このようなディスプレイスメントの値の取得の仕方は以下のチュートリアルを参考にさせていただいています。

ファイル出力
マテリアルでの設定が終わったので、コンポジットの画面でファイル出力の設定をします。

- AOV Outputノードで出力したカスタムレンダーパスの出力ソケットです。
- File Outputノードを使って複数のノードの結果をそれぞれファイルに出力することができます。
Base Pathにファイルを出力したいフォルダを設定します。 - File Outputノードのプロパティ画面です。出力するフォルダや、カラーの設定をします。ここでは全ての出力ファイルの総合的な情報を設定できます。ここではViewをStandardに設定しています。(画面上ではビュー変換をAgxで見ていましたが、ノーマルやディスプレイスメントなどの情報は変換したくないので、Standardに設定しておくと後で楽です。)
- File Outputノードのプロパティ画面下部です。Add Inputボタンで出力する項目を増やせます。項目名はSubpathを変更しなければファイル名にもなります。
Format:Use Node Formatのチェックを外すと、そのファイルのみの設定をすることができます。例えばcolorのビュー変換をAgxに戻すことで、画面上で見た色に合わせることができます。displacementの出力でも、BW(白黒)にするなどの設定ができます。 - Normalの出力が-1~+1の範囲で出てるのを0~+1の範囲にマッピングしています。テクスチャで見るような紫色のノーマルマップを出力します。
- 今のシーンをレンダリングするボタンです。レンダリングすることでFile Outputノードに接続した結果がが出力され、設定したフォルダにファイルが作成されます。
❻のボタンを押してレンダリングすると右図のように、指定したフォルダにcolor, displacement, nomalのテクスチャができています。
ちなみに、❸のビュー変換やカラー設定についてよくわからないという方は以下の記事で解説しています↓

テクスチャを実際に使用してみる。

できたテクスチャを使ってレリーフを作りました。問題なく使えます。
このように複数種類のテクスチャを一回のレンダリングで出力できるのでとても便利です。コンポジット画面でアウトプットできるので画像の確認もすぐにできます。
レリーフのようなテクスチャ、ディスプレイスメントのテクスチャの作成などに使えますのでぜひ使ってみてください。
※AOV Output ノードはワールドノードでも使えます。どういう用途で使えばいいかまだ浮かびませんが…。




コメント