OctaneRender:レンダーパス・AOVの出力方法
https://www.youtube.com/watch?v=Xq_TIQC9FSA
今回はOctaneを利用したレンダーパス・AOV(Arbitrary Output Variables)の出力方法を解説します。
Modo標準のシェーダツリーの機能では最終画像やアルファ、またディフューズやスペキュラ、深度などといった様々な要素をRender Outputを使って出力することができますが、Octaneでも同様に様々な要素を出力することができます。その要素を出力するための機能がレンダーパスという機能と、レンダーAOVという二つの機能になります。
まずはレンダーパスを見ていきましょう。サンプルシーンには様々な質感設定が施された複数のモデルが用意されています。レンダー要素がリストされているドロップダウンにはデフォルトでBeautyという要素がありますが、これが最終画像にあたります。ではレンダーパスを使って、このモデルのマスク画像を作成してみましょう。わかりやすいように、床のメッシュは非表示にしておきます。
レンダーパスの指定はOctaneプレビューウィンドウ下にある重なり立ったアイコンをクリックすると専用のパネルが出てきます。ここに出力可能な様々な要素が用意されており、チェックをオンにすると、リストに追加されます。ディフューズや屈折、レイヤーマスクを指定することができます。
このようにレンダーパス機能だと、簡単に欲しい要素を指定することができますが、場合によっては出力するモデルやマテリアルを特定したいといった場合があるかと思います。Modo標準のシェーダツリーではマテリアルグループを使って出力の範囲というのを簡単に指定できましたが、このような出力範囲も含めてさらにカスタマイズが可能なのがレンダーAOVの機能です。
ではレンダーAOVの機能を見ていきましょう。床のメッシュも再度表示しておきます。AOVというのはArbitrary Output Variables、直訳すると任意の出力変数ということですが、先ほどのレンダーパスと同じように特定の要素を出力することになります。OctaneのレンダーAOV機能による出力の指定はスケマティックビューで行います。まずは準備として新たなワークスペースを作っておきましょう。スケマティックビュー左上にあるアイコンをクリックし、ワークスペースを作ります。わかりやすいように名称はAOVにし、アクティブに設定しましょう。そうすると空のワークスペースが作成されます。
左側メニューからNew Render AOV (新規 Render AOV) > Render AOV Groupを追加します。これが出力するAOVをコントロールするノードになります。ここでコントロールしたものをレンダラーへと渡すためのノードが必要となります。カーネル設定パネルを開き、一番下のAOVカテゴリにあるRender AOV Groupをスケマティックビューへとドラッグアンドドロップしたら、Render AOV Groupの出力を接続します。これで下準備は完了です。あとはこのRender AOV GroupのAOV1~4へと出力したい要素をつなげていくことになります。
この状態でパスのドロップダウンを見てみると、Beautyつまり最終画像のみになっています。レンダーパスとレンダーAOVの機能は併用することはできず、レンダーAOVが機能している場合にはレンダーパスの機能は無効になります。
では単純にレンダーパスでも指定したマスクやディフューズなどの接続を行ってみましょう。New Render AOVボタンをクリックすると、その中に先ほどのレンダーパスの設定パネルと同様、様々な要素が用意されています。例えばDiffuse AOVを追加したら、AOV 1へと入力します。そうするとパスのドロップダウンにはDiffuse (ディフューズ)が追加されるようになります。他の要素も同様です。ここまではレンダーパスでも設定可能ですが、レンダーAOVでは出力範囲をマテリアル単位、アイテム単位、さらにはテクスチャ単位で指定することが可能です。
ではまずアイテム単位で出力範囲を指定してみましょう。今回、トーラスを出力してみます。トーラスを選択したら、Octaneタブを開きます。そうするとCustom AOVという項目があります。これが出力範囲を指定する項目となります。ここでCustom AOV 1と指定してみましょう。New Render AOVからCustom AOVを追加します。Custom AOVのプロパティにはIDを指定する箇所がありますので、ここで先ほど指定したCustom 1の項目を指定し、Custom AOVの出力をAOV 2へと接続します。パスのドロップダウンを見てみると、Custom AOV 1が追加されています。確認してみると、トーラスのみのマスクが出力されるようになりました。さらにこの出力に後ろのボックスも追加してみましょう。ボックスのアイテムを選択し、Octaneプロパティタブから同様にCustom AOVとしてCustom AOV 1を指定してみます。そうするとトーラスとボックス、どちらも出力されるようになりました。このようにCustom AOVを使うことによって、アイテム単位での出力が可能になります。
このCustom AOVノードのプロパティを見てみると、さらにVisible Afterという項目では反射や屈折の影響個所も併せて出力することができるようになっていますので、大変便利に使えます。
このようにRender AOV GroupのAOVに接続を増やしていくことで、様々な要素を出力できますが、デフォルトではAOVが4項目しか用意されていません。Render AOV Groupのプロパティを見てみると、Add Inputというボタンがありますので、出力が足りないようであればこのボタンをクリックして、AOVの項目をさらに増やしてください。一つのRender AOV Groupノードの中にAOVを20個まで接続することができますが、それ以上接続したい場合には、さらにRender AOV Groupを追加します。
New Render AOVからもう一つRender AOV Groupを追加したら、その出力を元のRender AOV GroupのAOVへと接続します。そうすると後で作成したほうのRender AOV GroupのAOVに接続しても、問題なく出力することができますので、AOV出力の数を増やしていくことができます。
ここまではアイテム単位で出力範囲を定義しましたが、これはマテリアル単位でも同様に設定が可能です。サンプルのティーポットはひとつのモデルですが、ふたの部分とそれ以外とでマテリアルが異なっています。この場合、ふたの部分だけを出力したい場合には、ふたの部分のOctaneマテリアルに対してCustom AOVを定義します。ちなみにModoのプレビュー画面上でモデルをクリックするとシェーダツリーの該当するマテリアルを自動的に選択することができますが、Octaneプレビューでも同様の機能が実装されています。プレビュー下にあるマテリアルピックのアイコンをクリックすると、マテリアルのピック処理が可能になります。今回の場合、ティーポットの蓋をプレビュー上でクリックしてみると、対応するOctaneオーバーライドが自動的に選択されるようになります。ピック処理を終えたらもう一度クリックして、必ずオフにしておきましょう。
ではふたの部分のマテリアルに対してプロパティを見てみると、こちらにもCustom AOVの項目が用意されていますので、Custom AOV 2を指定してみます。AOVの作業を行うためのワークスペースAOVへと戻ったら、New Render AOVからCustom AOVを追加し、IDをCustom 2に指定し、Render AOV Groupへと接続してみると、ふたの部分のみのマスクが抽出できるようになります。こちらの場合も、オブジェクトと同様、複数のマテリアルに対して同じCustom AOVのIDを設定することで、複数のマテリアルを一緒のパスとして出力することが可能です。
さらにはレンダーAOVの場合、テクスチャも出力できます。マテリアルのピック機能で、チェック模様のテクスチャがマッピングされているカプセルのモデルをクリックします。カプセルのマテリアルのワークスペースを見てみると、チェックのプロシージャルテクスチャが使われているのがわかります。このチェックのテクスチャノードの出力のラインをクリックし、ハイライトの選択状態になったのを確認したら、New Texture (新規テクスチャ) > Utility (ユーティリティ)> Capture to Custom AOV (カスタム AOV へキャプチャ)ノードを追加します。ラインを選択している状態でノードを追加すると、そのラインの中に自動的に追加したノードが挿入されるようになります。このCapture to Custom AOV (カスタム AOV へキャプチャ)ノードは、キャプチャしたテクスチャをCustom AOVへと出力するという機能を持っています。ですので、プロパティからCustom AOVにCustom AOV 3を指定したら、AOV用のワークスペースへと切り替え、New Render AOV (新規 Render AOV)からCustom AOVを追加し、IDにCustom 3を設定してRender AOV GroupのAOVへと接続します。そうするとテクスチャ模様自体がAOVとして出力可能になります。
このようにレンダーAOVの機能では、出力範囲を細かく定義していくことができますので、全体的に特定の要素をシンプルに出力したい場合にはレンダーパス、よりカスタマイズした出力を行いたいといった場合にはレンダーAOVというようにケースに応じて便利に使い分けるようにしてください。