チュートリアル / MayaのXGenを使用したフォトリアルなファー表現
第2回:ベースモデルの制作、髪の制作フロー

  • Maya
  • キャラクター・リグ
  • ゲーム
  • コラム
  • チュートリアル
  • モデリング
  • 学生・初心者

はじめに

みなさんこんにちは!株式会社クエルトの松田です。
前回の記事では、XGenがどのようなプラグインか、XGenを使用したモデリングのワークフローの解説と、実際に制作する上でのリファレンス収集について解説させていただきました。
第二回では実際にモデルの作成を行っていきながら、XGenとデジタルヒューマンの作り方を解説していきたいと思います。
Texturing XYZを活用した、リアルな頭部制作方法からXGenを活用したリアルな髪の毛の制作フローまで、分かり易く解説していきたいと思いますので是非参考にしてみてください!

今回作成するデジタルヒューマン

ベースモデル制作

STEP1 : スキャンモデルを手に入れる

XGenを制作する前に、まずはデジタルヒューマンの頭部を制作する必要があります。
デジタルヒューマン等のフォトリアルな頭部モデルを制作するにあたり、幾つかのアプローチがあります。

方法1
フルスクラッチで制作する方法

Zbrush等でモデルを1から成形していく方法です。
ブラシを使用してプライマリのディテールを入れ、アルファ等でマイクロディテールまで彫り込んでいきます。
特にアナトミーに対する理解と造形力が必要になるやり方ですので、個人的には練習の意味も込めて最初はこの方法からやっていくのがオススメです。
特にアナトミーの知識に関しては、生き物を制作する上で避けて通れないので、書籍等を見ながらきちんと知識に基づいて制作するのが良いと思います。
オススメの書籍も後の章で紹介させていただきます。

方法2
一部スキャンモデルを使用する方法

プライマリのディテールや、大まかな成形はフルスクラッチと同じように一から成形していき、皮膚のマイクロディテールのみスキャンモデルを使用して追加していく方法です。
仕事では比較的スタンダードな方法だと思います。
スキャンモデルを使用するメリットは、制作コストの削減と処理の軽さです。
勿論プライマリのシェイプは人によって変わりますが、マイクロディテール部においては人間である以上ほぼ同じですので、こちらを使用する方が効率的にリアルなルックを作成できます。
また、マイクロディテール部分までZbrush等で造形する場合、膨大なポリゴン数を扱う必要があり、かなりの処理の重さになり、作業効率も落ちます。
逆にデメリットはテクスチャで表現している関係上、レンダリングしてみないと結果が分からず、リアルタイムでルックが確認しづらい事です。

方法3
完全なスキャンモデルを流用する方法

今回使用する方法です。
3D Scan StoreやTexturing xyz等で販売されているスキャンメッシュをクリーンナップし、成形することでモデルを制作します。
非常に素早くリアルなルックが出来る為、初めてデジタルヒューマンを制作する方にはオススメの方法だと思います。
これらの特性を理解した上で、自分にとってやり易いアプローチで制作していただければと思います。
改めて今回の制作フローは以下の通りです。

今回の制作フロー

では実際にモデルを用意するところから始めていきます。
今回使用するモデルはTexturing.xyzのVFACEというラインナップです。

Texturing XYZ 販売ページ
Texturing XYZ 販売ページ

Texturing XYZとは、高品質な人間や動物のスキャンデータを販売しているサイトです。
XYZでは他にも「Multi-channel Faces」や「Multi-channel Irises」等の要素が販売されており、映画等で使用されているデジタルヒューマンも、こちらのサイトで販売されているスキャンデータを基に制作されているものが多いです。
今回はその中でも、比較的最近出てきた「VFACE」というラインナップをベースにモデルを制作していこうと思います。
VFACEとは、クリーンナップされた高品質な人間の皮膚と眼球のスキャンデータが一体型で売られているパックです。こちらの形状を改変すればすぐにリアルな人間が制作出来ます。

今回はshiho#54のメッシュを使用して制作していきます。
このモデルを選んだ理由は、日本人要素の強い肌の質感と形状を持っており、比較的テクスチャも綺麗で改変し易そうだと考えたからです。
早速購入したシーンを開いてみます。

購入したシーン

01_headフォルダには、頭部周りに関するデータがまとめられています。
ジオメトリとテクスチャマップ、Zbrushデータまで一通り必要なデータが揃っています。

購入したシーン
購入したシーン

02_referencesフォルダには、このスキャンモデルを撮影したときのモデルと、撮影環境の写真が格納されています。

02_reference

頭部のイメージ確認の他、投影すればテクスチャ素材としても使用する場合があります。

03_extraフォルダには、眼球や毛など、頭部以外のモデルが含まれています。

03_extraフォルダ

iris(虹彩)やscrela(強膜)は、今までは別途素材サイト等で揃える必要があったモデルですので、VFACEに含まれているのはありがたいですね。

使用する素材の中身が把握出来たと思いますので、早速こちらのデータを流用しつつ実際のシーンを構築していきましょう!

STEP2 : Mayaシーンの下準備

最初にプロジェクトを新規で作成し、セットしていきます。

Project Window

私はいつも必要なファイル以外は見づらいので消してしまいます。
極論フォルダ内には、「scenes」と「sourceimages」があれば成立しますので、後はお好みで必要なフォルダのみ残すのが良いと思います。
今回はバックアップ用に「autosave」と、書き出したデータ等を一時保管する用の「data」、レンダリング画像保管用に「images」を残しました。

不要なファイルは削除する

シーンを制作したら、VFACEフォルダから必要なメッシュを読み込んでおきます。

VFACEフォルダから必要なメッシュを読み込んでおきます

STEP3 : ベースメッシュの整理

造形自体はZbrushで行うのですが、その前に読み込んだスキャンモデルをMaya上で整理していく必要があります。
上から見ると特に顕著ですが、こちらのメッシュは眼球の位置が左右非対称だったりと、これから成形していく上では微妙な位置になっています。

上から見た状態

これをシンメトリにし、位置を調整してあげた上で造形に入らないと変なズレが発生してしまいます。
今回は右の眼球を消した上で左の眼球をシンメトリにすることで調整しました。

右の眼球を消した上で左の眼球をシンメトリにすることで調整する
右の眼球を消した上で左の眼球をシンメトリにすることで調整する

必然的に眼球の位置がずれますが後程成形するので現状では気にしません。

メッシュの名前も命名規則を自分で作り、グループ化して綺麗にまとめておきます。

メッシュの名前も命名規則を自分で作り、グループ化して綺麗にまとめておきます。

以上でMaya上の下準備は完了です。

STEP4 : Zbrushでの造形

ここからはZbrushを使用して造形を行っていきます。
VFACEのZbrushデータ内に、サブディビジョン入りのモデルが入っているのでこれを流用します。

VFACEのZbrushデータ内にあるサブディビジョン入りのモデル

モデル造形のコツは、サブディビジョンの低い状態で出来る限り造形し、これ以上作業する部分がない、となったら更に上のサブディビジョンレベルへ、という形で制作していくことです。
ローポリでおかしい部分はハイポリにしてもおかしいので、プライマリのシェイプ→セカンダリのシェイプ→ディテールという風に移動させながら制作していきましょう。
まずベースモデルがかなりアシンメトリになっているので、ガイドとしてシンメトリ化したモデルを用意します。

ベースモデルがかなりアシンメトリになっているので、ガイドとしてシンメトリ化したモデルを用意します

こちらはあくまでガイドとして使用し、ベースモデルを合わせつつ造形していきます。

スカルプターのための美術解剖学2
スカルプターのための美術解剖学2

顔のスカルプトをしていくにあたって、個人的にオススメの書籍は『スカルプターのための美術解剖学2』です。
造形する時に隣に置いておくと、肉の付き方や骨の位置を意識しながら造形することが出来るので、制作する顔の説得力が増します。

人間の顔は繊細で、ミリ単位の調整で別人の顔になってしまうので、特に気を付けながら作業していきます。

人間の顔は繊細で、ミリ単位の調整で別人の顔になってしまうので、特に気を付けながら作業していきます。

XYZのZbrushデータでは皮膚の凹凸等のマイクロディテール部分も再現されているのですが、こちらは後程テクスチャにて強度を制御したい為、一旦敢えてディテールを消してプライマリの造形のみに集中して作成しています。
ある程度グレーモデルでの造形が終了したら、一旦テクスチャを付けてルックを見る為に、モデルとdisplacement mapを書き出していきます。
displacement mapを書き出すのにはzプラグインのマルチマップエクスポーターを使用します。
下記の動画でグレーモデルのルックとdisplacement mapの書き出し方法を見せています。

STEP5 : Mayaでのシェーディング&ルック確認

Zbrush上である程度顔が成形出来てきたら、一旦Mayaでシェーディングを行ってルックを見ていくと前述しました。
最終的に調整を重ねつつ、戻って成形→Mayaでルック確認という工程を繰り返すので、最初の段階で完全に完成させようと成形を続けすぎないようにするのが大事です。
よっぽどの造形力があれば別ですが、グレーモデルの段階で求めていた顔を再現するのはかなり難しいと思います。
Mayaでレンダリングしてみて、ルックを寄せていく方が簡単なのでオススメです。
これは顔以外のモデリングにも言えますが、最初からディテール部分に拘り過ぎない事です。
大枠を整えてから細かい部分を詰めていきましょう。
ということでMayaへ移動します。

Mayaの画面

元々入れてあった顔のメッシュを造形したものに差し替えました。
Zbrush状のデータとMayaのデータの超点数と頂点番号が一致しているので、ある程度ファーの造形も進めていった段階からは、元のメッシュは変えずにblendshapeを使用して調整を進めていきます。

元のメッシュは変えずにblendshapeを使用して調整を進めていく

まずはチェック用のカメラと、テスト用のレンダリング設定を行います。
焦点距離は好みですが、私は100mm以上の望遠にすることが多いです。
今回のデータでは160mmで調整しています。
焦点距離が違うとルックも変わってしまいますので、ここで決めたメインの焦点距離は覚えておき、基本的にずらさないようにしましょう。
ただずっとこの焦点距離のみで作業する訳ではなく、ある程度調整が煮詰まってきた段階で、55mmや85mm等別の焦点距離のカメラもサブ的に追加し、複数の焦点距離で見て破綻していないかを確認しながら進めていきます。
このまま仮シェーディング、ライティングを行い仮のルックを出します。
今回はMayaにデフォルトで入っているPBRレンダラーのArnoldを使用してレンダリングを行うので、Arnoldの汎用シェーダとして入っているaiStandardSurfaceをメインのシェーダーとして使用します。

Arnoldの汎用シェーダとして入っているaiStandardSurfaceをメインのシェーダーとして使用

Mayaのシェーダを管理するツールであるハイパーシェードを開き、aiStandardSurfaceを作成。その後プロジェクトファイルのsourceimagesに格納していた、先程書き出したZbrushのdisplacement map入れます。
一旦メッシュに出来たシェーダーをアサインした後、仮のライトを当ててレンダリングしてみます。

一旦メッシュに出来たシェーダーをアサインした後、仮のライトを当ててレンダリングしてみます。

Zbrushでの造形が反映された、テクスチャのないグレーモデルの状態です。
耳等を見ると分かるのですが、まだポリポリとしているのが分かります。
こちらを解決する為にサブディビジョンをかけたいのですが、直接サブディビジョンをかけると重くなってしまったり、後述するblendshapeが使用しにくくなってしまうので、Arnold上でメッシュをサブディバイドする設定を行います。

Arnold上でメッシュをサブディバイドする設定を行います

Arnoldのshapeアトリビュートからsubdivisionを設定し、レンダリングして滑らかになっているかを確認します。
下記の動画で設定を解説しています。

今回はVFACE付属のスキャンdisplacementとalbedoが付属している為、こちらも一旦仮で組み込んでレンダリングしてしまいます。

今回の記事の要素をシェーダーに組み込んでレンダリングしたモデル

こちらが上記要素をシェーダーに組み込んでレンダリングしたモデルです。
シェーダー側でやっていることとしてはシンプルで、albedoをsssとdiffuseに接続し、Radiusの色を赤色にしているだけです。
displacement mapの設定はXYZのtutorialにも載っているやり方で、マップをRGBチャンネル毎に分割し、割り振られているスキャンのディテールを個別に調整したものに、Zbrushから書き出したdisplacementを掛け合わせています。

要するに現状のdisplacementは
・XYZのプライマリ(Rチャンネル)
・XYZのセカンダリ(Gチャンネル)
・XYZのマイクロ(Bチャンネル)
・Zbrushから出したハイポリのディテール
上記4要素を重ね掛けしている状態です。
この辺はかなり多様なアプローチがあります。
かなり複雑な作りになる代わりにより複雑な調整が可能になるようにシェーダーを組んだりすることも出来ます。
また、よりシンプルにする為にZbrush上でマイクロディテールまでを組み合わせて、一枚のZbrush displacement mapにしたりすることもあります。
このように様々な手法があるのですが、出来るだけシンプルかつ調整しやすく収めたかったので今回はこの方法で行っています。

今回の方法で設定した状態

同じく眼球もXYZのtutrialのアプローチで、SSSとdisplacementを入れてシェーディングします。
iris(虹彩)はdisplacement mapとSSSで凹凸とルックを表現し、screla(強膜)はSSSとbumpで表現、更にlenz(角膜)のシェーダー(水に近い質感の単一シェーダー)を眼球の中心にマスクでブレンドして疑似的に眼球を作成しています。
つまり強膜シェーダーは、レンズ(水のような質感)と強膜の2種類のマテリアルを混ぜ、マスクで表示範囲を制御して表現しているという事です。
眼球の制作についても一体型で制作するか、今回の例のように要素毎に分けて制作するかで微妙にルックが変わってきますので、色々とアプローチを試して自分好みのルックを探していくのが良いと思います。
ただ基本的にフォトリアルモデリングは、要素を完全再現する方がリアルさは出やすいと思うので、今回のように制限がない状態での制作では、地道に全ての要素を再現するのが正解に近いルックは出やすいです。

STEP6 : XGenで髪の毛を制作するフローを理解する

ベースの顔がある程度完成してきたので、いよいよXGenを使用して髪の毛を制作していきたいと思います。
XGenでの髪の毛の制作フローはこのようになっております。

XGenでの髪の毛の制作フロー

ます最初にスカルプメッシュというものを作成します。

スカルプメッシュを作成

これは毛の生える部分を指定するもので、ベースメッシュを切り分けて制作するものです。
スカルプを作成するメリットは主に、
・リグ等を入れる際のヒストリの混在回避(要素を切り分けることで予期せぬトラブルを回避)
・制御マップ周りの作成が効率的に行える
上記は次章以降で製作しながら詳しく解説していきます。

続いてガイドを作成します。

ガイドを作成

ガイドによって大まかな毛の生え方、流れを制御していきます。
その後モディファイアの設定を行います。

モディファイアの設定を行う

この設定で毛に細かいアレンジを加えていきます。
最後にXGenインタラクティブグルーミングへの変換を行い、完成というフローになります。
次回の章から実際にこの流れで制作を進めながら解説していきますので、今回はこのような流れになるんだな位の温度感で覚えてもらえるといいかもしれません。

次回予告

今回はファー制作の直前までのフローを解説しました。
クオリティの高いデジタルヒューマンを作成していく上で、ファーの制作も勿論大切ですが、一番クオリティ面で差が出るのは造形部分だと思います。
造形に関してはアナトミーを勉強し、それに忠実に従いながら練習していくしかないと思いますので、地道に練習して上手くなっていきましょう。
次回から本格的にXGenのオペレーションに入りたいと思います。

製品購入に関するお問い合わせ
オートデスク メディア&エンターテインメント 製品のご購入に関してご連絡を希望される場合は、こちらからお問い合わせください。