Maya2020 Arnold-GPU(Core6)レンダリング その2

前回に引き続き、ArnoldのGPUレンダリングを解説していきます。

今回の素材は、「Making of Sophie」というToonレンダリングの素材です。

https://docs.arnoldrenderer.com/display/A5AFMUG/Making+of+Sophie

約30万ポリゴンで、3つのエリアライトとIBLのドームライトがあります。

特殊な設定はありませんが、皮膚と足元のカエルにサブサーフェススキャッタリングが設定されています。

まずは、CPUレンダリングです。サンプリングの設定は元々の設定のままです。

500×500ピクセルで55秒で終わります。

では、2Kx2Kではどうでしょう。15分を超える計算になります。

GPUに切り替えます。まずは前回も説明しましたが、GPUキャッシュを作成します。1分くらいでした。

500×500ピクセルではノイズが多めですがわずか15秒です。
サンプリングの設定はCPUと同じです。

このまま2Kx2Kでレンダリングすると、50秒で終了します。
4K x 4Kですと3分17秒です。

サンプリングの設定でAdapitiveSamplingを追加します。

500×500ピクセルではノイズがなくなり50秒です。

2Kでは6分13秒です。CPUの2.5倍ほどの速度です。GPUの性能が良ければ3倍くらいにはなると思われます。

では、GPUで4K x 4Kで試してみます。少しサンプリングの設定を落とします。

約12分で終了します。2KのCPUより早く終わります。

今回は以上です。GPUは2枚装着も可能なので、大きなサイズのレンダリングではArnold GPUでの制作は効果的であると考えられます。

 

土木設計CAD Civil 3DとUnrealEngine4の連携 その2

前回は Civil 3DからUnrealEngine4への変換ワークフローでしたが、今週から細かく説明をしていきます。

まず、3dsmaxとCivil3Dの連携チュートリアルは、Autodesk公式の以下のものがあります。



https://knowledge.autodesk.com/ja/support/3ds-max/getting-started/caas/CloudHelp/cloudhelp/2016/JPN/3DSMax-Tutorial/files/GUID-8497A85A-274C-458B-AC85-A0CA00E21469-htm.html

こちらのチュートリアルの流れのまま、UnrealEngine4へ連携を試みます。
チュートリアルの素材データは以下からダウンロードできます。
3dsmaxのバージョンはあまり問題ではないようです。

https://knowledge.autodesk.com/ja/support/3ds-max/downloads/caas/downloads/downloads/JPN/content/3ds-max-2016-tutorials.html

チュートリアルの通りに進めるとまず、図の様に地形とコリドーのサーフェスがインポートできます。

「Civil View エクスプローラー」を開きます。

「Civil View エクスプローラー」はCivilのデータを操作する特別なモディファイアのようなものです。「サーフェス」から地面のサーフェスを選び、「サーフェスパラメータ」から「ドレープ」タブにある「ビットマップを選択」を選びます。

チュートリアルの通りテクスチャーを選択で図の様に航空写真が表示されます。

UnrealEngine4ではテクスチャーサイズを2のべき乗に設定するのが一般的です。
このテクスチャーは6000x4000ピクセルです。

これをDatasmithでUE4へ変換してみます。ちゃんとアクタ名も日本語で変換されています。

テクスチャを確認すると4096x2048に自動でリサイズされています。

他も同様です。

このようにCivil3Dで設定したテクスチャサイズは気にすることなく、UE4へ変換することができます。

Maya2020 Arnold-GPU(Core6)レンダリング その1

昨年2019年末にリリースした、Maya2020ではArnoldレンダーのバージョンが4になり、Arnold-Coreは6になりました。それまでオープンベータで公開されていましたが、このバージョンで正式にGPUレンダリングができるようになりました。今回からその解説をしていこうと思います。

まず、テストシーンです。Arnoldの公式チュートリアルの車のシーンです。

Maya2020の約125万ポリゴンのシーンで、Areaライトが1つのスタジオです。

ArnoldメニューのAboutで確認します。

MtoA(Maya to Arnold)は4.0.0、Core6.0.0.0であるのが確認できます。

そのままHD1080でレンダリングしたのが以下の画像です。
レンダリング時間は2分23秒でした。

画像はフルサイズでアップロードしてあります。詳細をご覧になりたい方はダウンロードしてみてください。

サンプリングの設定は以下です。

使ったGPUは以下で6コアのi7-8750です。レンダリング中は当然ですが、フル稼働になります。

上記のレンダリング結果ではノイズがあるので、サンプリングの設定を少し上げてみます。

今度は綺麗に仕上がりましたが、約13分かかりました。

では、GPUレンダリングを試してみます。まず重要なのはGPUが対応しているかどうの確認です。Maxwell以降のGPUであれば対応しているようです。
以下のURLで確認できます。

https://docs.arnoldrenderer.com/pages/viewpage.action?pageId=105218329

NVIDIAのシステム情報で確認します。ドライバも対応したバージョンにしないとレンダリングが開始できませんので最新版をインストールします。

次に、GPUレンダリングの手順です。GPU用にシーンのシェーダとオブジェクトキャッシュを作成します。Arnoldメニューから、「Utilites」→「Pre-population GPU Cache」を実行します。
図のようにキャッシュ作成を開始します。数分ほど待たされますが、これを最初に一回だけやることによりGPUレンダリングがかなり高速になります。
「Time Remaining」の表示時間はあまり正確ではありません。図では31分とありましたが、急に減り、終了します。

キャッシュはオブジェクトやシェーダを追加、削除しなければ再作成の必要はありません。ライティングやカメラアングル、質感変更に関してはキャッシュをそのままGPUが高速に再計算します。

GPUレンダリングの設定は1か所だけです。RenderSettingのSystemを「GPU」にするだけです。

わずか8秒で終了します。ノイズはありますが、IPRにすれば、カメラやライト、質感を高速に変更してプレビューできます。
なぜか明るさが変わってしまうのは原因を調査中です。

CPUは24%程度しか稼働していません。CPUレンダリング中のPCでは何もできませんが、これでしたらある程度別作業が可能です。

ノイズが多いので修正します。GPUレンダリングではサンプリングの設定が「Camera(AA)」のみになる仕様です。

それ以外では、下にある「Adaptive Sampling」を使います。
この設定がデフォルトです。

「Max Camera(AA)」を上げることでノイズ減ります。公式マニュアルでは30~50、場合によっては100まで上げる記述があります。
「Adaptive Thredshold」は小さくするとノイズが軽減されます。0.01が最小です。

レンダリング結果です。1分44秒ですが、かなりボディのノイズは軽減されています。

今度はAdaptive Samplingを切って、単にCamera(AA)を上げてみます。

綺麗な仕上がりになります。計算時間が4分です。
GPUレンダリングは100%になってからしばらく待ちますのでご注意ください。

さらに、Max Camera(AA)をアップし、Camera(AA)を下げた状態でレンダリングしてみます。

かなり高画質になりますが、計算時間が8分を超えてしまい、GPUのメリットが薄くなります。

Max Camera(AA)を25まで下げると3分13秒になりますが、ノイズが少し目立ちます。レンダリング時間のコストと画質をこのように調整して運用していくことになります。

今回使用したのは、RTX2070 Max-QというノートPCのGPUです。デスクトップのGPUと比較して約7割程度の速度ですので、GPU次第ではさらに高速なります。

高性能で高額なCPUを大量に用意するのではなく、比較的安価なGPUを導入してArnoldの高画質なレンダリングを短時間で行い、制作に生かすのはいかがでしょう。

次回、さらに大きな解像度や、新しいシェーダーなどでGPUとCPUの比較を紹介しようと思います。