絶対に挫折しないHoudini入門 8 - レンダリング

レンダリング

 HoudiniにはMantraというレンダラーが標準で組み込まれています。レンダリングはこれだけで本が一冊架けそうな程奥が深いですが、まずは、地道にヘルプに記載されている以下のサブトピックを熟読します。

画像1

 特に、「サンプリングとノイズ」、「ノイズの除去」それから「レンダリング品質と速度」は綺麗なレンダリング結果を得るために絶対必要な知識です。
 また、こちらの記事もおすすめです。
Houdini Cook Book Vol.93 Dive into Mantra

基本的なレンダリング方法

 一応、ヘルプを見ればレンダリングのやり方は書いているのですが、入門者にはレンダービューやらMPlayやらMantraやら、レンダリング結果を見る方法が複数あって分かりづらいと感じたので、以下に具体的な操作方法を記載します。

 レンダリングするために、まずは適当にシーンにオブジェクトを配置します。とりあえずレンダリングが出来ればよいので何でも良いです。Sphereを1つ置いてみました。

画像2

 Houdiniでレンダリング結果をみるのは以下の3通りの方法があります。

1. Render View
2. MPlay
3. ディスクに書き出し  

1. Render View

  とりあえずレンダリング結果を見たい。そういう場合はRenderViewを使います。Render View > Renderを実行するとScene Viewと同じ構図でレンダリング結果が表示されます。

画像7

 このレンダリング結果はジオメトリノードを編集などすると自動で更新してくれます。試しにSphereのRudius Xを2にしてみると自動で以下の様なレンダリング結果に更新されます。

画像8

 これは大変便利ですが、たまに(シェーダーを組んでいるときなど)ノードの変更結果が正しく反映されない場合があるので注意が必要です。何か更新されないな? と感じたら、再度左上の「Render」を押すと、正しいレンダリング結果を得ることが出来ます。

2. MPlay / 3. ディスクに書き出し

 作品として最終的なレンダリング結果を見たい/画像として保存したい。そういった場合はMPlayかディスクへ書き出しを行います。MPlayは簡単にいうとMantaraのレンダリング結果を表示するビューアーです。

 この方法はシーンにカメラが必要です。Scene View 右上 > No cam > New Cameraからカメラを作ることが出来ます。

画像5

 選択するとobj内にカメラが作成されます。

画像6

 次にRender > Create Render Node > Mantra - PBRを選択してMantraノードを作成します。「Mantra」と「Mantra - PBR」と2つありますが、作成されるノード自体は同じものです。ただし、作成時の初期設定値が違います。大きな違いは「Mantra」を選択するとMantraノード > Renderingタブ > Render Engineが「Ray Tracing」になり、「Mantara - PBR」を選択すると「Physically Based Rendering」になります。これらは後から変更することが可能です。

画像3

 ネットワークビューのoutを見るとMantraノードが作成されています。

画像4

 Mantraノードの「Render to MPlay」を実行するとMPlayが起動し、レンダリング結果が表示されます。

 「Render to Disk」を実行するとMantraノード > Imageタブで設定されたフォルダやファイル名でディスクに保存されます。

 「Render to Disk」を実行した場合、レンダリングの進捗が表示されないためレンダリングが終わったのかどうか分かりづらい場合があります。
 その場合は、Mantraノード > Driverタブ > 「Block Until Render Complete」をONにすると画面左下にメッセージが表示されるようになります。(ただし、レンダリングが終わるまでHoudiniの操作はできなくなります。)

画像9

複数フレーム(アニメーション)のレンダリング方法

 複数フレームをレンダリングするには、Mantraノード > Valid Frame Rangeを「Render Frame Range」に設定します。Start/End/Incでレンダリング範囲を指定できます。Start、Endの数字を変更するにはプレイバーの両端の数字(デフォルトでは0から240)を変更します。

画像11

 または、Start/End/Incをクリックします。そうすると数字が以下の様な文字列に変わります。これはエクスプレッションと呼ばれるものです。詳細は別の記事で解説しますので今回は無視してください。
 $FSTARTや$FENDを任意の数字に変更できます。

画像10

 Houdiniでは動画フォーマットでの書き出しは出来ないようです。EXRやPNGなどの連番ファイルを書き出し、別のツールで動画に変換します。自分はAdobe Media Encoderを使用しています。

フリップブック

 レンダリングはとても時間のかかる工程です。最終的な見た目は不要だけどアニメーションだけ確認したいということがあると思います。そういった時に便利なのがフリップブックという機能です。

 フリップブックは最終的なレンダリングではなく、シーンビューの見た目でMPlayに指定したフレーム間の画像を表示/再生します。最終的なレンダリングではないので、比較的高速です。

画像17

 結果はディスクに保存も出来るので、例えば、他の人に最終レンダリング結果ではなく、とりあえずアニメーションやレイアウトだけ確認してもらいたい、などのシチュエーションで便利です。
 その他細かい機能はヘルプを参照してください。

画像15

綺麗なレンダリング結果を得るために

 レンダリング結果を手っ取り早く美しくするにはサンプリング数をあげればよいです。(非常に大雑把な方法です。詳細はヘルプページを熟読してください。)
 しかし、サンプル数を上げるとレンダリングにかかる時間は長くなります。出来るだけ少ないサンプル数でノイズを抑えてレンダリングする方法はないでしょうか? 

 その問いに対する1つの答えはNVIDIA OptiX Denoiserです。インストール&使用方法はヘルプページを参照してください。

 試しにレンダリング結果を比較してみます。まず Pixel Samples 3 x 3でレンダリングしてみます。
Pixel Samples 3 x 3 / Denoiser 未使用 / レンダリング時間 57s

画像14

 サンプル数を2 x 2に落としてみました。かなりノイズが目立ってしまいました。
Pixel Samples 2 x 2 / Denoiser 未使用 / レンダリング時間 30s

画像12

 NVIDIA OptiX Denoiserを使ってみます。
Pixel Samples 2 x 2 / Denoiser 使用 / レンダリング時間 33s

画像13

 影の部分などかなりノイズが軽減されているのが分かります。レンダリング時間もあまり変わりません。
 3 x 3と比較してみるとさすがに劣りますが(影や球体のエッジなどが分かりやすいです)、レンダリング時間は大幅に短縮されました。
 使用を検討してみてはいかがでしょうか。



もしこの記事があなたのお役に立てたなら幸いです。 よろしければサポートをお願いします。今後の制作資金にさせていただきます!