>   >  Houdini Cook Book:Vol.93 Dive into Mantra
Vol.93 Dive into Mantra

Vol.93 Dive into Mantra

02 Setting

レンダリングは、通常セッティングで簡単に行うことができるようになっていますが、レンダリングこそ、最大限にオプティマイズをして、ボトルネックを減らすべきフローのひとつだと筆者は考えます。今回は、Houdiniにおけるセオリーとも言えるセッティングを紹介します。

まず、シーン内にレンダリングしたいオブジェクトを用意しますが、今回モチーフとなっているジオメトリはハイポリゴンです。そういった場合には、Delayed Loadと呼ばれる、Procedural Renderingの設定をした方がベターです。まず、空のGeometry【A】を準備します。次にDelayed Load Procedural【B】のシェーダを準備して、レンダリングしたいジオメトリのキャッシュを設定します。このシェーダをGeometryの[Render→Geometry→Procedural Shader]へ設定します【1】。これにより、このGeometryはレンダリング時にのみ読み出される設定となりました。

Mantraでは、レンダリングの際に、中間ファイルであるIFDが出力されます。このとき、IFDにはジオメトリ情報が書き出されてしまいます。例えば、1GB分あるジオメトリがIFDに書き込まれたとして、動いていない今回のようなジオメトリでも、毎フレーム出力されることになります。それが例えば300フレームあった場合では、300GBもの書き込みのボトルネックが発生してしまいます。これは無駄という他ありません。こういった部分の最適化が、レンダリングの高速化につながると考えます。【2】は、Mantraでレンダリングする際の簡単な模式図です。Delayed Loadを行う場合の様子が確認できると思います。

Mantraの設定も重要です。レンダリングの際に必要なCameraを指定します【3】。Rendering EngineはここではPBRを使用しています【4】。次に、[Rendering→Sampling]でイメージのクオリティ、主にノイズを消すための設定をしていきます。Min Ray Samplesを上げることで、イメージの底上げをすることができます【5】。Pixel Samples【6】は、簡単にイメージを綺麗にすることができますが、プライマリレイを増やすことは、セカンダリレイを大きく増やすことになりますので、簡単に上げないように細かな設定が必要です。DiffuseやReflectなど、それぞれの要素のどこにノイズが乗っているか判断し、必要最小限の範囲で数値を調整しましょう。

今回のレンダリングでは、Diffuseの反射も計算をしています。そのため、[Rendering→Limits→Diffuse Limit]の数値を1以上に設定しています【7】。これで、Diffuseの反射をシミュレーションすることができます。その他、必要に応じて、Reflect LimitやRefract Limitなどを最小限にすることでレンダリング時間を削減することができます【8】

レンダリング時に、対象のObjectを選択する必要があります。今回は、Bundle List【9】を使用してObjectを選択しています【10】。こうすることで、レンダリング時のObject選択を自動化することができます。

最後に、IFDの設定です。コマンドライン、もしくはディスパッチャ等を使用してレンダリングする場合、IFDを出力する必要があります。Mantraのライセンスは無料ですが、IFDを出力する、もしくは直接レンダリングをするためにはライセンスを購入する必要があります。そのため、IFDをなるべく軽く迅速に出力し、そのIFDを無料のMantraでレンダリングできるようなフローを構築することをオススメします。

Driverの設定では、CommandでMantraを起動するようになっています【11】。Disk FileでIFDを出力するだけにすることもできます【12】。また、Delayed Loadで設定している場合は、Save Geometry Inlineにチェックを入れます【13】。デフォルトでは、親切にジオメトリを別でキャッシュしてくれる設定となっていますが、今回の場合はせっかくのDelayed Loadの設定が無駄になってしまいます。

次ページ:
03 Operators

その他の連載