チュートリアル / MayaのXGenを使用したフォトリアルなファー表現
第4回:シェーディング / レンダリング
- Maya
- キャラクター・リグ
- ゲーム
- コラム
- チュートリアル
- モデリング
- 学生・初心者
はじめに
みなさんこんにちは!株式会社クエルトの松田です。
前回の記事では、実際に髪の毛を制作しつつ、XGenを使用した人間の髪の毛の制作フローについて解説してきました。
XGen解説編はいよいよ今回で最後の回となります。
今回は制作した髪の毛のシェーディング / レンダリング周りの解説を行って最終的な絵として完成を目指していきます。
折角綺麗に髪の毛を制作しても、シェーディングやレンダリングによって最終的なルックは良くも悪くも大幅に変わってしまいます。
最後まで気を抜かずに頑張っていきましょう!
シェーディング
STEP1 : ヘアシェーディングについての解説
ヘアーに使用するマテリアルはレンダラーによって専用のものが用意されています。
レンダラー | 汎用マテリアル | ヘアーマテリアル |
---|---|---|
Arnold | Standard Surface | Standard Hair |
VRay | VRay Mtl | VRay Mtl Hair / VRay Hair Next Mtl 等 |
今回はArnoldで制作しているので、Standard Hairマテリアルを使用します。
Hairマテリアルに触ること自体初めての方も多いかと思いますので、まずは基本的なパラメータの解説をしていきます。
下記がStandard Hairマテリアルのパラメータです。
主なパラメータを上から解説していきます。
Base
・髪の明るさを制御するパラメータです。
・ベースの色は黒くなりますが、Colorを入れても0にすると黒になってしまうので基本的には1に設定しておきます。
Base Color
・基本的にMelaninを使用してコントロールしたい場合は白に設定しておくパラメータです。
・髪の色を指定できます。ただし、染めていない自然な髪の毛を表現したい場合はこちらを使用するよりも、Melaninの方を触った方が物理的に正しいルックになります。
Melanin
・髪の毛に含まれるメラニン色素の量をコントロールできるパラメータです。
・下げると色素が薄くなりブロンドに近い色に、上げると色素が濃くなり髪の赤みが増していき、最終的に黒髪になります。
・もしBase Colorで表現したい場合は色素が乗算されてルックに干渉してしまう為、0に設定してからパラメータを触らないといけません。
Melanin Redness
・設定したメラニン値の中で、どれくらい赤みを入れるかを設定できるパラメータです。
Melanin Randomize
・設定したメラニンの量を基準に、ランダムにメラニン値を散布してくれるパラメータです。
・均一感がなくなり自然なルックになるので多少は入れた方が良いと思います。
Roughness
・ラフネス値です。セットや体質によって髪の毛の濡れ感が欲しい場合や、逆に乾燥したようなルックを目指したい場合に使用しています。
・個人的にはあまりテカテカさせてしまうとリアリティが損なわれてしまうので、適度に入れてあげた方がリアルなルックになると思います。
IOR
・屈折率です。反射の鋭さに影響していきますが、基本的にデフォルト値で問題ないと思います。
Shift
・髪質が変化します。人種によって髪質は違うので、作りたい人種に応じて適切な値を入れる必要があります。下記はArnold公式ドキュメントより、人種による数値のパラメータ表です。
Tint系
・鏡面反射光に色を乗算してくれます。色を入れると物理的には不自然になる為、基本的には白で固定して設定します。
Diffuse系
・拡散反射光を調整できるパラメータです。
・物理的には不自然になる為、基本使用しません。
Emission系
・発行カラーを追加できます。
・物理的には不自然になる為、基本使用しません。
Matt系
・マットカラーの単色になります。基本使用しません。
STEP2 : 髪の毛のシェーディングフロー
マテリアルの数値について理解したと思いますので、早速シェーディングを行っていきましょう!
どのような質感/色の髪の毛を制作するかは好みによる部分が大きいですが、今回はよりリアルなルックにする為のテクニックを混ぜつつ紹介したいので、解説用に数種類に分けて制作していきます。
まずデフォルトのStandard Hairを割り当てると下記のようなシンプルな黒髪のルックになります。
日本人の毛質にしたいのでShiftを3.6に、ラフネスは少し多く入っている方が好きなので0.25辺りに設定します。
これだけでもぱっと見綺麗なのがヘアーシェーダの良いところですが、よりリアルなルックにする為にノイズ感を出していきましょう。
シェーダに追加可能なノイズにはいくつか種類があるのですが、代表的な物をまとめました。
ノイズの種類 | 特徴 |
---|---|
Noise【Texture】 | テクスチャタイプのノイズを入れられます |
aiNoise | arnold仕様のノイズメーカーです |
aiCellNoise | arnold仕様のセルノイズを入れられます |
どのノイズメーカーでもノイズは制作できるので、試してみて好みのものを使用してください。
今回はaiNoiseを使用して制作していきます。
次にノイズの結果を分かり易くする為にArnold RenderViewの設定をします。
Arnold RenderViewのツールバーのWindow→Toolbar Icons→Show Debug Shading Iconを開きます。
こちらをonにすると、カメラセレクトタブの隣にシェーディングタブが追加されます。
これはレンダリング画像の各要素を個別に表示するものです。
例えばAOやNormalのみのルックを確認して、要素毎におかしい部分がないか確認することが出来ます。
下の動画ではレンダービューの設定を行っている所を解説しています。
今回はこの機能の中のIsolate Selectedを使用します。
選択したオブジェクトを単体でレンダリング出来る機能ですが、これはノード単位で適応できます。
これを利用してノイズのかかり具合を確認していきます。
aiNoiseを接続し、ノイズのノードを選択した状態のルックです。
ここを確認しながら調整していきます。
因みにマテリアルの方を選択するとこのようになっています。
分かり易いですが、今は全体にノイズがかかっているので模様のようになっていて不自然です。
Coord SpaceをUVスペースにし、ScaleやDistortion等のパラメータを触りながら、偏りなく全体的にランダムにノイズが描写されるように調整します。
Color1/2の部分で最大値の設定が可能なので、全体的な色味を変えたい場合はこちらを調整して下さい。
ノイズを調整後のルックです。
全体的に色のランダム感が出ていると思います。
下の動画ではノイズの調整を行っている所を解説しています。
また、このような染めている髪の毛の場合、時間が経つと根本の部分に地毛の色が出てきてしまいます。
次にこれをランプで表現したいと思います。
明るい色ほど分かり易いと思いますので、一旦金髪にしました。
下はランプを入れた場合との比較画像です。
毛の根本部分が黒くなっているのが分かるかと思います。
上から見たルックです。
下の動画ではランプの調整を行っている所を解説しています。
写真を観察しつつ、こういった設定を活用してよりリアルなルックを目指してみてください。
STEP3 : 本番ライティングとシーンのセッティング
ここからは最終的な完成イメージを目指すフェーズに入ります。
まずはArnoldの設定を行っていきましょう。
といってもやることは非常にシンプルで、レンダリング解像度とsamplingの値を最終レンダリング仕様に上げる位ですので、詳細は割愛します。
背景のモデルを作成します。光源の反射を効かせるのが目的なので簡易的なプレーンで大丈夫です。
続いてライティングの設定を行っていきます。
現在のライティングは上からの1点ライティングとなっています。
これをHDRI+3点照明のライティングに変えていきます。
どちらもシンプルなライティング方法ですが、ここを変更するだけでもルックにかなり影響が出ますので、【微調整→レンダリングで確認】のフローを行いながら慎重に配置していきます。
まずはHDRIを配置します。
今回はHDRIを選別するにあたり、【室内のものである】【上方向に光源が一点存在する】という条件を設定し数種類試した結果、下の画像のルックのものに決定しました。
ルックを決めたらライトのIntensityを半分ほどに落とし、補助光源として三点照明を設定していきます。
メイン光源のキーライト、補助光源のリムライト、そして輪郭を出す為のバックライトを配置しました。
キーライトは眼球にハイライトを乗せる目的もあるので、顔全体に当たるライトの雰囲気を崩さず、眼球内の自然な位置にライトのハイライトが反射するように注意しています。
また、当たり前ですがハイライトの形状はキーライトの形状と同じ形で反射するので、ルックを比較した結果、敢えて形状を長方形に調整しました。
この辺りは好みの領域ですので、納得いくまでライティング→テストレンダリングを繰り返すのが良いと思います。
ライティング周りで困ったら、youtubeでプロのライティングアーティストがライトの設定について解説しているチャンネルもありますので、そちらを参考に制作することをオススメします。
ライト周りを調整後、最終的にこのようなルックになりました。
ここからcameraに被写界深度を入れていきます。
被写界深度を入れる方法としてcameraで設定する方法と、Z深度をマップとして書き出し、ポストプロセス処理で入れる方法があります。
それぞれの方法のメリット/デメリットがありますので、状況に応じて使い分けていきましょう。
アプローチ | メリット | デメリット |
---|---|---|
cameraに直接設定する方法 | よりリアルなルックになる | 重い/後から変更出来ない |
Z深度を利用して制作する方法 | 軽い/ボケ具合を手軽に弄れる | リアリティは劣る |
今回はcameraに直接設定する方法を選択しました。
アトリビュートエディタ上で選択したカメラを選択し、Arnoldタブ内の項目を見ると、下記のようなパラメーターが入っています。
レンダリング用のカメラを開き、Enable DOFをオンにします。
これでレンダリング時に被写界深度が効くようになりました。
次にFocus Distanceに、【カメラからオブジェクトまでの距離】の数値を入力します。
この距離は【Head Up Displayタブ→Object Details】で、Distance From Cameraという項目として表示することが出来ます。
Objectを選択すると距離が表示されるので、その数値に近い値を入力して焦点距離を合わせてください。
後はApeture Sizeを大きくしてあげれば、数値の大きさに応じてボケていきます。
下の動画ではArnoldのカメラ設定を行っている所を解説しています。
最終的なルックはこのようになりました。
綺麗なボケが入る事でより写真感が増してリアルに見えると思います。
質感はこちらで完成となります!
STEP4 : ブラッシュアップ設定【細かい形状調整/表情作成】
最後におまけ編として、追加でやるとよりリアルに見える作業を行って締めたいと思います。
まずXGen Interactive Groomingを使用してXGen制作時に出来てしまった細かい歪みを均一にしていきます。
XGen Interactive Groomingは次回以降詳しく解説していきますので、今回は結果だけの紹介になります。
続いて表情を付けていきます。
表情が付くだけで一気に自然さが増し、リアリティも上がります。
作業フローは下記になります。
1. ZBrushで形状修正
2. モデルをmayaに読み込み直してblendshapeをかけて動かす
3. 付いてこないスカルプ類はwrapデフォーマかかリグによって追従させる
ZBrushに書き出したモデルをインポートし、写真を見ながら表情を造形していきます。
ある程度造形が終わり次第Mayaにモデルを入れ直し、blendshapeを使用してモデルに表情を付けましょう。
モデルを動かした際にスカルプ類が追従してこない→まつ毛等が動かない、というのを回避する為、スカルプとheadをwrapデフォーマでラップします。
これで追従するようになったので、後は造形→レンダリングして確認を繰り返しながら、納得のいく造形を目指して下さい。
下の動画ではblendshapeとwrapの設定を行っている所を解説しています。
髪の毛のシルエット調整と表情を作成して完成した作品がこちらになります。
次回予告
今回でXGenを使用したデジタルヒューマンの髪の毛制作編は終了です!
また、今回までのコラムで作成した髪の毛のデータも用意させていただきました!
データを見ながらコラムを見ることで、内容をより深く理解出来るようになると思います。
次回からはXGen Interactive Groomingを使用した動物の毛制作編に入っていきます。
XGen編と同じく、実際にモデルを制作していきながら機能解説をしていく流れで進めていく予定です。
XGen Interactive Groomingも非常にリアルなファー制作が可能なプラグインです。
最後まで丁寧に解説していきますので次回以降もお楽しみに!