かれこれMayaの使用歴は20年程になりますが、Vertex Color(頂点カラー)をレンダリングする必要性は今まではありませんでした。Vertex Color(頂点カラー)の用途といえば、ライティングを焼き付けるといった使い方がまず思い浮かびますが、3DCGアニメーターの私には縁のない作業でした。
ところが、MayaのMASHを使った場合、ArnoldでVertex Color(頂点カラー)をレンダリングする方法を知らないと、グレーのままレンダリングされてしまう不都合な真実と向き合うことになります。
たしかにVertex Color(頂点カラー)をレンダリングすることは、あまりない(人によりますが)です。
しかし、MayaでMASHを使う場合には必ず知っておきたい知識です。
そういった理由でMASHを使ってArnoldでVertex Color(頂点カラー)をレンダリングする方法を解説します。
MayaのMASHでVertex Color(頂点カラー)をArnoldでレンダリングする方法
まず、ポリゴンキューブを作成してMASHを適用する
Create > Plygon Primitives > Cube でポリゴンキューブを作成します。
次にメインメニューを「FX」にきりかえます。
最初に作ったポリゴンキューブを選択した状態で Mash > Create MASH Network でMASHの「ReproMesh」を作成します。

デフォルトでは上の画像のようにポリゴンキューブが1列に10個並びます。
この記事のアイキャッチ画像のようにグリッド状の立方体にブロックを並べてみましょう。

「MASH1_ReproMesh」のAttribute Editorの「MASH1_Distribute」タブを開きます。
Distribution Typeを「Grid」
Distance X を 「5」
Distance Y を 「5」
Distance Z を 「5」
Grid X を 「5」
Grid Y を 「5」
Grid Z を 「5」
にします。

MASHで作成された「ReproMesh」にシェーダーをアサインする
ここまでで作成された「ReproMesh1」には「standardSurface1」がデフォルトで割り当てられています。
デフォルトの「standardSurface1」の設定を変えてしまうと都合が悪いので、あらたに「standardSurface」をアサインします(新たにアサインするマテリアルは何でも構いませんが、Mayaのビューポートで色が確認できるもののほうがわかりやすいので「standardSurface」にしました)。
「MASH1_ReproMesh」を選択して右クリックして、「Assign New Material」で「Standard Surface」をアサインします。
「ReproMesh」にMASHの「Color」ノードを追加し、ランダムに色付けする

「MASH1_ReproMesh」のAttribute Editor の「MASH1」を開きます。
「Color」ノードを左クリックして「Add Color Node」をします。
そうすると、「MASH1_Color」というタブが追加されるのでそれを開きます。

「Color」、「Random Hue」、「Saturation Random」、「Value Random」等の値をいじってそれぞれのキューブの色をランダムに変えることが出来ます。上のAttribute Editorの画像を参考に色々といじってみてください。

上のパラメーターを参考にカラフルな色にしてみてください。
「ReproMeshShape」の「Export Vertex Colors」にチェックを入れる

「MASH1_ReproMesh」の Attribute Editor の「MASH1_ReproMeshShape」を開きます。
「Arnold」の中の「Export Vertex Colors」にチェックを入れます。

ためしにこの段階でArnoldでレンダリングしてみましたが、ご覧のようにグレーでVertex Color(頂点カラー)が出力されていません。Vertex Color(頂点カラー)の出力にはまだ手順を踏む必要があります。
「ReploMesh」のシェーダーの「Color」に「aiUserDataColor」を接続する

「MASH1_ReproMesh」の Attribute Editor の「standardSurface2」のタブを開きます。
「Color」のチェッカー状のボタンを押します。

すると、「Create Render Node」ウィンドウがたちあがります。
そこで検索ボックスに「data」と打ち込むと出てくる「aiUserDataColor」を選びます。

「Color」に「aiUserDataColor1」が接続されました。
試しにここまでの状態をArnoldでレンダリングしてみます。

「aiUserDataColor1」の Default Value の影響か、前回の試しレンダリングの時より黒ずんだ色になっています。
しかし、この段階でもまだVertex Color(頂点カラー)が出力されていません。
実はさらにもう1段階手順を踏む必要があります。
そこで「MASH1_Color1」で設定したときのことを思い出します。

ここで設定したものがColor Set Nameが「colorSet」という名称になっているのでこれをaiDataColor1に繋げます。

「aiUserDataColor1」の「Attribute」に
「MASH1_Color」の「Color Set Name」である
「colorSet」をいれる
これでArnoldでレンダリングできるようになりました。
ライトを置いてArnoldでレンダリング
Arnold > Lights > Skydome Light を置いてレンダリングします。

「aiSkyDomeLight1」の Attribute Editor を開き、「Visibility」の「Camera」の項目のスライダーを一番左まで下げて「0」にするとSkydome Lightがカメラに映らなくなります。

見事にArnoldできれいにレンダリング出来ました。
MayaのMASHについて
MASHはMaya2016のextention2で追加されたので今ではそれなりの歴史があります。
導入された当時にちょこっとチュートリアルをやった程度でその後は触らずじまいでした。
そんな私のような人におすすめなのがUdemyの「Introduction to MASH for Maya」です。
英語の講座ですが、英語の自動字幕(微妙におかしい所あり)をつけることができます。
また、画面の通りに操作すれば良いのでMayaの使用歴があればそれほど苦労せずにMASHの概要を比較的短時間に学ぶことが出来ます。この記事の内容もこの講座から学んだことのほんの一部です。興味があれば受講を検討してみてください。

まとめ
これでMayaのArnoldでVertex Color(頂点カラー)をレンダリングすることが出来るようになりました。
現実的な話ではVertex Color(頂点カラー)をArnoldでレンダリングすることはあまりありません。
しかし、MayaでMASHを使った場合には必ず知っておきたいことです。
これを機会にMayaのMASHを学び始めるのも良いのではないでしょうか。


コメント