>   >  NUKE プラクティカル・ガイド:Vol.6:主要 3DCG ソフトウェアとの連帯・前編(3ds Max & Maya)
Vol.6:主要 3DCG ソフトウェアとの連帯・前編(3ds Max & Maya)

Vol.6:主要 3DCG ソフトウェアとの連帯・前編(3ds Max & Maya)

Autodesk 3ds Max 編

ここからは、Autodesk 3ds Max を用いてモーションブラーと被写界深度を NUKE で表現するためのモーションベクターとデプス、さらに、RGB マスクを OpenEXR を用いて1つのファイルで出力する方法を紹介していこう。また、NUKE で 32bit、16bit の画像を用いると、デフォルトでリニア画像として読み込まれ、3D ソフトウェア側ではガンマ値 =1 の画像として出力する必要があるので、これに関しても合わせて解説していく。なお、3ds Max のレンダラーには V-Ray を使用した。

AOCs で保存

今回の作例ではレンダリング出力としてマルチレイヤーを用いることのできる OpenEXR でレンダリングし、各チャンネルは AOVs で保存した

レンダリングした画像を NUKE で読み込む際、通常、jpg や tga のような 8bit 画像は、その [Read] ノードの colorspace を sRGB として読み込む。しかし今回は、各チャンネルをマルチレイヤーとして格納し、複数のレンダーパスを 1 ファイルとして扱うため、OpenEXR を使用した。この場合は、linear として読み込まれる。

colorspaceのデフォルト値

NUKE では OpenEXR を読むと自動的に colorspace が linear になっている( tga などの sRGB 画像では同じく自動的に sRGB となる)

ここで注意が必要なのだが、linear で読み込むということは、3ds Max 側でファイルガンマ「1」で保存する必要がある。ただ、3ds Max のデフォルトではたとえ保存ファイルが OpenEXR であっても、ファイルガンマ「2.2」として保存されるようなのだ。それを回避するためには、[menu→Rendering→Gamma/LUT Setup...] より、[Enable Gamma/LUT Correction] にチェックを入れておく。こうすることで、レンダリング画像の保存の際に、gamma が選択できるようになる。

ガンマの設定 ガンマの設定

メニューから[Rendering→Gamma/LUT Setup...] を選択。設定ウィンドウにある [Enable Gamma/LUT Correction] にチェックを入れる

ガンマの設定

デフォルトだと保存される画像のファイルガンマは 2.2 なので、Overrideで 1.0 を指定

これで準備は完了なので、次にチャンネル保存の設定を行う。各チャンネルは 3ds Max の標準機能であるレンダーエレメントを使えば、スペキュラやデプスというような、通常は出力に少し工夫がいるレンダーパスも予め用意されているため、それらを一回のレンダリングでまとめて出力することが可能だ。

レンダーエレメント

標準の Scanline レンダラーにも数多くのエレメントが準備されているが、V-Ray の場合はコンポジットにも役立つ特殊なエレメントが数多く準備されている

作例ように、RGB マスクで出力したいものが 4 種類ある場合は、オブジェクトチャンネルとしてそれぞれ 1~4 を割り当てるが、RGB マスクで一度に分離することができるのは 3 種類(黒を用いれば 4種類だが)なので [MultiMatteElement] を 2 度使い、それぞれを
[MultiMatteElementA.red]
[MultiMatteElementA.green]
[MultiMatteElementA.blue]
[MultiMatteElementB.red]
としている。

つまり、MultiMatteElementA として、[red][green][blue]を設定した上で、今回は 4 種類なので、それとは別に [MultiMatteElementB] を設けてそれの [red] としてもう1つチャンネルを設けて、4つに割り当てたわけだ。

ObjectIDの割り当て

オブジェクトの種類ごとにオブジェクトプロパティから異なる ObjectID を与えてやる

MultiMatteElementの登録 MultiMatteElementの登録

RGB の 3 つチャンネルでは 3 つまでしかマスクが取得できないので、さらに、別のチャンネルとして MultiMatteElement を登録する

続いて、モーションブラー用のベロシティチャンネルと、被写界震度用のデプスチャンネルを設定する。エレメントはそれぞれ、[VRayVelocity]と、[VRayZDepth] 。注意点としては、共に clamp のチェックを外すことだ。

MultiMatteElementの登録 MultiMatteElementの登録

clamp にチェックが入っていると、値が 0-1(0-255) に制限されてしまう。そのシーンで深度(カメラからの距離)、ベロシティ共に最大値を予め計算しておいて設定すれば、値をカットせずに用いることもできるが、NUKE の利点である 32bit をフル活用するのであれば、Clamp のチェックを外して、それらのチャンネルを利用する

ベロシティチャンネル とは、スクリーンベースでピクセル毎にブラーの方向を指定するようなものなので、マイナス値で表現されるピクセルもあり、ダイナミックレンジでの保存が不可欠である。また、同様にデプスチャンネルもシーンによっては深度をある一定のところでクランプ(限定)してしまうと、動的なシーンでは随時その「一定」の数値を更新していく必要があるが、これもダイナミックレンジであることを利用し、クランプしない状態で出力することが可能だ。

その他の連載