チュートリアル / Arnold アーティスト ワークフロー
第1回:Arnold 導入編 ~MayaでArnoldを使いこなすために~
- Arnold
- Maya
- コラム
- コロッサス
- チュートリアル
- レンダリング
近頃、CGの学校を出てCGプロダクションに入られる方はたいていAutodesk Mayaを勉強されていることでしょう。少し前まではMayaでお仕事をする場合にMental rayやV-Rayを使ってレンダリングをされていたプロダクションも、最近ではMayaに標準搭載されたArnoldをメインレンダラーとして採用しているところが増えています。AutodeskがArnoldを買収してからユーザー数が15倍にもなったそうです。今までのレンダラーと比べてシンプルで扱いやすいところがユーザーの増加に拍車をかけているのでしょう。私の書いたブログも少しはお役に立ったかもしれませんね。しかし、Arnoldは日進月歩でアップデートされているので新しい機能を追っかけていくのは結構大変です。そこで、本コラムではArnoldの新機能を優しく解説し、誰もがArnoldマスターになれるように貢献したいと考えています。
Arnold 進化の歴史
最近のバージョンアップ
2017年11月 MtoA 2.1.0 Arnold Core 5.0.2.0
ニューサブサーフェーススキャッタリング
2018年4月 MtoA 3.0.0 Arnold Core 5.1.0.0
トゥーンシェーダー レイヤーシェーダー拡張 デノイズ (OpteX,noice)
2018年6月 MtoA 3.0.1 Arnold Core 5.1.1.0
ビューポートレンダリング Arnold Denoiser UI (noice)
2018年8月 MtoA 3.1.0 Arnold Core 5.2.0.0
セルノイズシェーダー Sheenパラメータ Cryptomatte
2018年10月 MtoA 3.1.1 Arnold Core 5.2.1.0
ラウンドコーナーシェーダー テクスチャ焼き付けシーケンス出力
ノーマルマップのレイヤーブレンド
2018年12月 MtoA 3.1.2 Arnold Core 5.2.2.0
aiOslシェーダー トゥーンシェーダーにもSheenパラメータ
2019年3月 MtoA 3.2.0 Arnold Core 5.3.0.0
GPU(Beta) Newサブサーフェイススキャッタリング マイクロファセット多重錯乱 サンプリング改良
StandinがAlembicに対応 Arnold Operator 機能
2019年5月 MtoA 3.2.1 Arnold Core 5.3.1
GPUキャッシュの事前作成を高速化
2019年7月 MtoA 3.2.2 Arnold Core 5.3.1.1
新Bifrost対応
2019年7月 MtoA 3.3.0 Arnold Core 5.4.0.0
aiClipGeoシェーダー プログレッシブ、アダプティブサンプリング改良
2017年からのリリースを並べてみてもこれだけのアップデートがあります。しかも重要なことは、MayaのメジャーリリースとArnoldのアップデートリリースはタイミングが異なるということです。Mayaの新バージョンをインストールするとArnoldも最新版が使えるのかというとそうではなく、新バージョンをリリースした次の月にはArnoldがアップデートされているということもあるのです。
ですので、ぜひ最新のアップデート状況を把握し、常に新しい機能や改良を理解しておきましょう。
https://docs.arnoldrenderer.com/display/A5AFMUG/3.x
GPUレンダリング
最近のアップデートで一番大きな内容はGPUレンダリングへの対応です。ArnoldはもともとCPUを使ったアンバイアスなGIレンダラーとしてリリースされました。一時キャッシュを作成することなくCPUコアをフルで活用するレンダラーとして登場しました。その後GPUを使ったレンダラーがいくつもリリースされ、CPUレンダラーとGPUレンダラーはどちらがいいのかといったといった議論がありましたが、ArnoldはCPUとGPUのどちらを使ってレンダリングしても、ピクセル単位でイコールになるように開発を進めているようですので、CPUレンダラーかGPUレンダラーではなく、Arnoldをマスターする方が将来においてもメリットを享受できるでしょう。
CPUとGPUの切り替えは非常に簡単。レンダー設定のシステムタブですぐに切り替えることができます。
GPUレンダリングを開始する前に1つだけお約束があります。ArnoldメニューのUtilitiesにあるGPUキャッシュの事前設定 Pre-populating the GPU cache コマンドでシェーダー用のキャッシュを事前に計算させておいてください。
GPUにもよりますが初回は10分程度かかると思います。これはNVIDIAのドライバーやArnoldのバージョンが新しくなった場合にやり直す必要があるようです。
レンダリング速度
最新版のMtoA3.3.0と以下のようなシーンを使用してレンダリング時間の違いをテストしてみました。
テスト1 CPUとGPU
4コアから8コアへと世代が代わるとレンダリング時間もリニアに短縮されていますが、GPUレンダリングではそれよりも更に短時間でレンダリングが完了していることが分かります。
Intel Core i7-3770K 4コア 8スレッド
Intel Core i7-4960X 6コア 12スレッド
Intel Core i9-9900K 8コア 16スレッド
縦軸はレンダリング時間で横軸はSampling Camera AAです。
テスト2 GTXとRTX
GPUレンダリングと言っても、GPUカードの性能や世代間で違いがあります。Arnold GPUレンダラーはNVIDIA Maxwell世代から対応していますので少し古い世代のGPUカードも使用できるのですが、最新のGPUとどの程度差があるのかをテストしてみました。普及価格帯でコストパフォーマンスの高いGPUとして、1世代前のGTX1070と現役のRTX2070を比較しています。
GTX1070
コア数1920 ベースクロック1560MHz ブースとクロック1683MHz メモリ8GB メモリバス帯域256GB/s
RTX2070
コア数2304 ベースクロック1410MHz ブースとクロック1710MHz メモリ8GB メモリバス帯域448GB/s
テストの結果は約2倍の差がつきました。RTXを使用した場合は基本性能差以上にレンダリング時間が短縮されています。これはNVIDIAの新しいRTXテクノロジーにArnoldが対応しているためだと考えられます。
テスト3 アダプティブサンプリング
MtoA 3.3.0からアダプティブサンプリングの収束がより効率的になっています。
アダプティブサンプリングとは画像全体にわたって一様にサンプリングするのではなく、サンプル値の変動が大きいピクセルにより多くのカメラサンプルを割り当てる機能です。
アダプティブサンプリングを使わずにCameraAAサンプルを上げた場合と、アダプティブサンプリングでそれと同じ値にした場合とでテストしてみました。
テストの結果、興味深いことにサンプル値が低い場合はアダプティブサンプリングを使わないほうが速く収束していますが、サンプル値11を超えたあたりから逆転現象が見られました。より高いサンプル値が必要となる場合はアダプティブサンプリングをONにした方が有利と言えます。
テスト4 サンプリング値
CPUとGPUではサンプリング値にどのような違いがあるのでしょうか。
現在のベータ版GPUレンダリングでは、CPUとGPUではサンプリングを同じ値にしても、ノイズ収束結果は同じではありません。例えばCameraAAを3にした場合、CPUと比べるとGPUの方が少しノイジーです。同じ程度のノイズ量にする場合はCameraAAを+2程度に上げる必要があるようです。
現状はサンプリング値においてこのような違いがあるのですが、次の正式バージョンでは、カットごとにCPUとGPUを切り替えてもわからない程度にアップデートされるとのことなので期待したいと思います。
CPUとGPUの使い分け方
Arnold GPUレンダリングはまだベータ版ですのでいくつかの制限はありますが、レンダー設定やマテリアルなどをCPUとGPUでそれぞれ専用のものに切り替えることなく、同じ設定のままシームレスに切り替えることが魅力です。それぞれのメリットデメリットとしては、GPUは計算は速いのですがメモリーが少ないため大規模なシーンには不向きです。CPUは計算は速くはないですがメモリーは潤沢に使用できるため大規模なシーンでも大丈夫です。ですので使い分け方としては、ルックデブやライティング作業はGPUをメインに使用し、プロダクションレンダリングではCPUをメインに使うということになるでしょう。
次回も最近のArnoldに搭載された機能について解説していきますので、今後ともどうぞよろしくお願いいたします。