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

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

4.オブジェクトマスクの設定

Maya では前述した 3ds Max のように、オブジェクトに指定した ID から簡単にオブジェクトマスクを作り出すということができない。そのため、自分で好きに情報を出力することができる Custom Color バッファを使用する。

今回は、オブジェクトマスクをそれぞれ適切に出力するために、出力させたいまとまりごとに異なったマテリアルをアサインしてある。つまりこの手法は、厳密にはオブジェクトマスクではなく、マテリアルマスクの出力となる。方法としては、まず writeToColorBufferノード を作成。それに対し、以下のようにパラメータをセットする。

レンダーパスと色の関連付け レンダーパスと色の関連付け

ハイパーシェードから mental ray を用いて [writeToColorBuffer] を設定し、Attribute Editor にてさらにレンダーパスと色を関連付けた(※クリックで拡大

次に、オブジェクトマスクを作成したいオブジェクトに割り当てられたシェーダとコネクトする。

writeToColorBufferに関連付け

さらにシェーダを writeToColorBuffer に関連付ける

今回は、mia_material_x_passes を使用しているが、BlinnPhong などを使用する場合は result ではなく outColor を接続。これらを各オブジェクト(マテリアル)に対し、適宜 RGB を変更しながら設定していくことで、望みどおりのオブジェクトマスクが得られる。
なお、上の状態だと writeToColorBuffer は output を行なっておらず、ネットワーク的に宙に浮いた状態となってしまっているため、Delete Unused Nodes などを使用すると不要とみなされ削除されてしまうため注意が必要だ。

5.リニア環境の設定

OpenEXR でレンダリングを行うため、リニア環境でライティングを行なっていく。リニアワークフローの説明は、色に関する大変深い話になってしまうので、詳しく述べるのは避け、ここでは簡単にその手順だけを紹介していこう。

まず、[Render View → Display → 32-bit floating-point (HDR)]を ON にし、Maya を再起動。この手順を踏むと、Render View で直接 float の画像が表示できるようになる。逆に何もしないままだと、思わぬ結果が出てしまうことがあるため、真っ先に行うべきだ。続けて、[Render View → Display → Color Management]を実行し、画像(下)のようにのように設定する。

ガンマの設定を確認

この設定を行うことで、レンダリングされたリニア画像を sRGB 空間で表示させることが可能になる

これらを適切に作用させるためには、Render Globals でのガンマの設定が適切なものである必要がある。[Common → Color Management → Default Output Profile] が Linear sRGB になっていること、そして [Quality → Framebuffer → Gamma]が 1.0 になっていること、という以上2点を確認しておこう。

writeToColorBufferに関連付け

Color Management はデフォルトのままであれば問題ないが、Framebuffer の設定は各自行う必要がある。またその際、Data Type も「RGBA(Half) 4x16 Bit」に変更することで、カラーの出力が 16bit float になるので、一緒に設定しておこう。デフォルトの RGBA(Byte) 4x8 Bit のままでは、Tiff や Targa に出力するのとなんら変わりのない 8bit 画像が出来てしまうだけなので要注意だ(※クリックで拡大

6.OpenEXR に含めるレイヤーの名前

ここまでで、ほとんどの設定は完了したのだが、最後に、OpenEXR に含めるレイヤーの名前の変更を行う。デフォルトでは、RenderGlobals の [Common → File Output → Frame Buffer Naming] が Automatic になっている。この場合、例えば、DIFF:diffuse.persp、CAMZ:depth.camera1 などという感じに、「:.」 というルールでレイヤーの名前付けが行われる。しかしこれでは冗長な上にパッと見で分かりづらいので、名前を変更するわけだ。Frame Buffer Naming を「Custom」にすると、「Custom Name String」の編集が行えるようになる。

レイヤー名の変更

Frame Buffer Naming を「Custom」にすると、「Custom Name String」の編集が行えるようになる。これにより、最初に設定した depth, mv2D, objectMatteA などの名前がレイヤー名として用いられるように

Maya と 3ds Max を例にとって紹介をした「各 3D ソフトウェアとの連帯・前編」はいかがだったろうか? 次回は、Autodesk Softimage、Houdini(Side Effects Software)、MAXON CINEMA 4D 以上の 3DCG ソフトとの連携方法について解説する予定だ。

TEXT_テラオカマサヒロ(Galaxy of Terror)
株式会社ギャラクシーオブテラーにて VFX ディレクターとして活躍中。実写合成からフルCGまで、幅広いVFX制作に携わっている。
個人サイト「tiraokan. 」

TEXT(Autodesk Maya編)_taikomatsuCGブログ「memlog」 管理人)

その他の連載