チュートリアル / 宋さんの3ds Max キッチンスタジアム
第33回:3ds MaxでArnold / AOVを使ってノイズの要因を探す
- 3ds Max
- Arnold
- コラム
- チュートリアル
- レンダリング
- 学生・初心者
AOVsとはArbitrary Output Variablesの略で直訳すると“任意の出力変数”という意味です。
なんのこっちゃ?って感じですが、簡単にいえば任意に様々な出力を得ることって感じですかね。つまり従来のレンダラーでよく使われていたレンダーパスとかと言われている機能で、拡散反射光パスとかス鏡面反射光パスとかを書き出す機能です。3ds Maxだとレンダーエレメントの機能です。
最近のソフトウエアではAOVという表現をするソフトウエアが増えてきましたね。Isotropix社のClarisesもAOVって呼んでます。
まあ、関係ない話はその辺にして早速インターフェイスを見てみましょう。インターフェイスはプロダクションレンダリングモードでもActive Shadeモードでも同じです。
今回はActive Shadeモードに切り替えて進めていきましょう。理由は....後半わかりますよ...
まず、最初に出力するファイル形式を選択します。これは今までのレンダーエレメントと最も違うところですね。
レンダーエレメントでは出力パスを追加した後にファイル形式を選んでましたが、手順が逆になってます。
次に[Add AOV File]をクリックしてパスを選択するのですが、このコマンドをクリックするとMAXtoAで用意してあるパスのリストが表示されます。全部で40種類以上あります!さらに自分で出力したいパスを作成することもできます。カスタムパスの作り方はこのコラムの最後の方で解説しますね。
表示されリストから使いたいAOV(パス)を選択していきます。一つ一つ選んでもいいですし、Ctrlキーを押しながらまとめて選択しても構いません。最初に選択するファイル形式は既定のEXR形式で構いません。
とりあえず、diffuse, diffuse direct, diffuse indirect, specular, specular direct, specular indirectの6つを選択して[Add]コマンドを押します。
[Add]コマンドを押すとインターフェイスが変わるのがわかります。
AOV(EXR)で内包する各チャンネルのうち任意のチャンネルを選択すると、画面下の方に名前とデータの形式を編集するこができます。例えばdiffuse directを選択し、AOV Nameを後々の合成作業で理解しやすいような名前に変えることも可能ですよ。
Open EXRファイルに書き出す場合は、下図の「Add AOVs to single File」にチェックを入れることによって各AOVをマルチレイヤーとして1ファイルに埋め込むことができます。各AOVを別ファイルにしたい場合はチェックを外してくださいね。
チェックを外して登録すると下図のようになっているはずです。
リスト内の項目を見ると
diffuse(EXR)
diffuse – rgba
Add AOV Channel(s) in the EXR file...
と記載されています。
各行を選択するとリスト表示の下のインターフェイスが変化します。
例えば[difuse(EXR)]を選択するとOpenEXRファイルの圧縮設定やファイルにAOVの名前を付けるかどうかなどの書き出しファイルの設定内容が表示されます。
次の[diffuse_direct_rgba]を選択すると前に解説した通りAOVの名前の変更やデータの持ち方を編集できます。
まずはAOVの設定はこのぐらいにしましょう。
前回のコラムではレンダリング時のサンプルの設定による画質の変化を検証しましたが、今回はAOVの機能を使いながら、より効果的にノイズの要因を探し出す方法をご説明します。
前回使ったシーンファイルを開いてみましょう。
レンダリング設定はActive ShadeでArnoldを選択しておきます。さらにAOVの設定を前の説明と同じ設定にしてくださいね。(ダウンロードファイルは既に設定済みですので、そのままでも大丈夫なようにしてあります)
ではActive Shadeモードでレンダリングしてみましょう。
念のためレンダリングのサンプル設定は下図のようになっています。
レンダリング結果は図の通りです。ノイズだらけです。
ここで、AOVsで設定したチャンネルを確認することができます。
3ds Max レンダーウインドウ右上にあるプルダウンメニュを開きます。
AOVsで設定したチャンネルが表示されるので、まずは[diffuse]を選んでみましょう。
黄色のオブジェクトに盛大にノイズが入っています。
次に[Specular]を選択します。
こちらもひどいもんです。特に中央の金属質感のオブジェクトにガンガンノイズが入ってます。
では前回のコラムで行ったように、DiffuseとSpecularのサンプル数を2から6まで上げてみましょう。かなりレンダリング時間がかかってます。
RGBAの画像とDiffuse、Specularの結果を比較すると以下の様になります。
どうでしょう?
Diffuseに関しては3倍のサンプリングを与えた割にはノイズがさほど減っていませんね。対してSpecularに関しては、かなり綺麗になっています。つまり、黄色いオブジェクトに入っている黒いノイズは、Camera(AA)のサンプルを上げないと消えないというのがわかりました。しつこいかもしれませんが、diffuseとSpecularを2に戻して、Camera(AA)を6まで上げてみます。
結果はこちら
specularのノイズがまた目に付くようになってしまいました。
もうわかりましたよね、
このテストをすることで、黄色いオブジェクトのシミのようなノイズはCamera(AA)を上げないと消えない。Diffuseのサンプル数はさほど影響していない。金属のオブジェクトが持つノイズはSpecularのサンプル数を上げないと消えないということです。
つまり、Camera(AA)を上げて、Diffuseは下げる(or そのまま)。その代わりSpecularは上げてあげる。
これが正解というわけです。もう少し厳密に要因を探すのであれば、indirect DiffuseやIndirect Specularなども確認して、間接光のノイズも確認するべきですが、ここでは割愛します。
最後に下図の設定でレンダリングした結果がこれです
どうでしょう?まだ少し黄色いオブジェクトにかかるノイズが残っていますが、まあ許容範囲というところでしょうか、
闇雲にサンプル数を上げるのではなく、その要因を突き止めてその箇所だけサンプル数を上げてあげれば、効率よくレンダリングが可能ですね。シーン全体のレイの数を細かく節約していくことができます。その際にActive Shadeを使うととても便利なのです。
ではなぜ、プロダクション レンダリング モードではなくActive Shadeモードなのか?
実はプロダクション レンダリングモードだとAOVの計算結果をレンダリング フレーム バッファ(レンダリング画面)に表示ができません。原因は「?」です。そのうち対応してくれることを期待しています。
今のところActive Shadeでは可能なのでこういったアプローチをする場合はActive Shadeを使うようにしましょう。
ノイズ対策にはほかにもアプローチが色々あるので次回は他の方法をご紹介していきましょう。