チュートリアル / MayaのXGenを使用したフォトリアルなファー表現
第3回:髪の毛モデルの作成
- Maya
- キャラクター・リグ
- ゲーム
- コラム
- チュートリアル
- モデリング
- 学生・初心者
はじめに
みなさんこんにちは!株式会社クエルトの松田です。
前回の記事では、主にTexturingXYZを使用したベースモデルの制作方法について解説させていただきました。
第三回ではいよいよこのベースモデルにXGenを使用して髪の毛を生やしていきます!
ベースガイドの制作からマテリアル設定まで1から丁寧に解説していきますので、今回もよろしくおねがいします!
XGenでの髪の毛制作
STEP1 : スカルプの解説
前章で軽く説明しましたが、XGenで髪の毛を作成するにあたって、スカルプメッシュというものを作成する必要があります。
スカルプとは頭皮の意味で、ベースメッシュを毛の生える範囲に絞って切り分け、XGenを生成するベースにするものになります。
スカルプが必要な理由は
1. リグ等を入れる際のヒストリの混在回避(要素を切り分けることで予期せぬトラブルを回避する)
2. 効率的な制御マップ周りの作成
の2点です。
こちらについて具体的に説明していきます。
【ヒストリ混在回避について】
XGenでは制作を進めていくと毛を生やす設定をしたメッシュにヒストリが溜まっていきます。
XGenはこちらのヒストリでデータを管理しているため、基本的にスカルプとして設定したメッシュはヒストリの削除をしてはいけません。
後々リグ等を移植する際に、こちらのヒストリがスキニング情報等の別のヒストリと干渉する可能性がある為、スカルプにヒストリを逃がす必要がある訳です。
また後に実践しますが、XGenで作業したデータは最終的にXGenインタラクティブグルーミングのデータに変換します。
そうすることでヒストリをリセットするやり方もあるので、こちらも後々解説します。
【効率的な制御マップ周りの作成】
これはXGenの仕様が関係しています。
XGenはスカルプにマスクマップをMaya上でペイントして、毛の生える位置や密度等の細かい調整を行っていく仕様になっています。
このような仕様上スカルプとなるメッシュには綺麗に開かれている、かつ、ある程度解像度があるUVが必ず必要になってくる為、スカルプとして分けておいた方が都合がいいという理由です。
今回はリグは仕込まず静止画での完成となるので、一つ目のメリットであるヒストリの混在回避系の恩恵は受けませんが、二つ目の制御マップ系は影響してくるので、スカルプに分けてあげた方が制作し易いと思います。
STEP2 : 頭部メッシュを切り分けてスカルプメッシュを作成する
では早速スカルプを作成していきましょう!
ベースメッシュを複製して、眉毛/まつ毛/髪の毛の三種類のスカルプメッシュを作成します。
眉毛のスカルプメッシュ
まつ毛のスカルプメッシュ
髪の毛のスカルプメッシュ
必要があれば個別にUVを展開します。
ここで一つ大切な設定があります。
現状ベースメッシュを複製して切り分けているので、マテリアルがベースメッシュと同じものになっていますが、スカルプのマテリアルはlambartを設定してください。
これを設定しないと、後述するマップを書くことが出来ません。
ここまで出来たらアウトライナ上でフォルダとして纏め、完成です。
下の動画では実際にスカルプメッシュを切り分けている所を解説しています。
STEP3 : XGen登録とパラメータ解説
それでは早速スカルプをXGenに登録していきましょう。
XGen用のシェルフを見ると、沢山の項目があります。
左半分がXGen用の項目、右半分がXGenインタラクティブグルーミング用の項目となります。
今回はXGenを使用するので、右半分は一旦気にしなくて大丈夫です。
スカルプを一つ選択し、のアイコンを押すと新規登録設定画面が表示されます。
最初にDescriptionとCollection名を決めます。
階層構造的にCollection内にDescriptionがあります。
例えばHair_Collection内に前髪と後ろ髪のDescriptionがあるといったイメージです。
Control the Primitives by:は一番上を設定します。
これでXGenへの登録は完了です。
登録するとタブに名前が出てくるので、複数ある場合は切り替えて制作していきます。
タブ内には色々とパラメータがあるのですが、全てを解説していると大変な量になってしまう為、各パラメータの具体的な概要はこちらのドキュメントを参照してください。
私の場合最初にやるのは
・Densityをある程度の値にしておく
・widthを0.01~0.005の間位に設定する
です。
デフォルトだとかなり太い毛が生える為、人間の毛を制作する場合は0.01~0.005位にしておきます。
現状これらを設定しても何も変わらないと思います。
XGenでは毛の生える向きを制御する為にガイドを制作する必要があります。
STEP4 : ガイドの作成
それでは早速ガイドを設置していきます。
こちらのアイコンを設定するとガイドを設置するツールになります。
早速眉毛の形を意識しながらガイドを植えていきましょう。
大雑把に置いた後に、ガイドを眉毛の流れになるように調整していきます。
調整にはこちらのアイコンのグラブツールを使用します。
ツール設定のLock Lengthを使用するとガイドの長さを保ったまま調整が出来ますが、ガイドの根本のみ調整したい場合などはこれをオフにして調整すると作業し易いです。
髪の毛のガイドも同じように、シルエットを重視しつつ制作しています。
ある程度調整が終わったら片眉を選択してアイコンを押すと、選択したガイドがシンメトリーに複製されるので便利です。
また、ガイドの調整で重宝するのがこのガイドツール設定です。
XGenにおけるガイドはCVカーブと同じ形式でガイドのCVを動かして調整していくのですが、このツール設定を使用することで、CVの数を設定したりノーマライズしたりすることが出来ます。
ガイドを選択してこのアイコンを押せば個別に設定可能なので、前髪だけCVを増やして細かく調整する等の使い方が出来て便利です。
下の動画で実際にガイドを追加し、調整している所を解説しています。
STEP5 :Density mapの作成
ある程度ガイドを置いたら、Density mapを描いて毛の生える位置を決めていきます。
Density項目のMaskの部分からCreate Mapを使用してマップを作成します。
Resolutionは50位あれば大丈夫な印象です。
アルファマップなので、白が100%毛が生えていて、黒は全く生えません。
ベースを黒にして描きたい形の眉毛を塗っていきましょう。
strokeの設定でシンメトリーに塗る事も可能です。
塗り終わったら、save textureを押してテクスチャを保存すると影響が更新されます。
目のアイコンで毛の表示/非表示が切り替えられます。
髪の毛等大量の毛を生やす場合、シーンがかなり重くなってしまうので必要に応じて切り替えながら作業していきます。
設定に変更があった場合に毛を自動更新するかの設定も選べます。
こちらも同じくPCスペックと相談しながら決めると良いと思います。
こちらのアイコンでガイドの表示/非表示も切り替えられるので、ルックを見るときはオフにすることをオススメします。
ある程度ガイドとDensityMaskのみで制作が完了したら、モディファイアを設定していきます。
ここに時間をかけすぎないのがミソです。
一旦全体的に完成させてから、細かい部分を調整していくイメージで作業すると良いと思います。
下の動画ではDensityMapを作成してアルファを塗っている部分を解説しています。
STEP6 : モディファイアの設定
モディファイアとは、毛にノイズや毛束を追加する為に使用する設定です。
Modifiersタブから設定することが出来ます。
どのモディファイアを設定するか選びます。
設定できるモディファイア自体もかなりの種類がありますが、私が主に使用しているものを紹介します。
モディファイア | 機能と活用方 |
---|---|
Clumpingモディファイア | 毛をまとめ、毛束感を出す為に使用しているモディファイアです。 |
Coilモディファイア | 毛をちぢれさせ、クセ感や巻き髪感を出す為に使用しているモディファイアです。 |
Cutモディファイア | 毛先をランダムに短くし、より自然さを出す為に使用しているモディファイアです。 |
Noiseモディファイア | 毛にノイズ感を出し、乱れ感や自然さを出す為に使用しているモディファイアです。 |
基本的に上記のモディファイア以外はあまり使用しません。
機能的に出来ることは上記だけで十分なので、後はリファレンスを観察しながら出来るだけ質感を近づけていく作業になります。
モディファイアの解説では今回使用した髪の毛のモディファイアを例に紹介していきます。
今回の髪の毛は髪型を考慮し、前髪/サイドと後ろ髪/頭頂部のフワっとした毛の3つの部位に分けてDescriptionを作成しています。
一つの髪の毛の中に大きく質感が異なる部分がある髪型の場合、無理矢理一つのパーツとして制作するよりもDescriptionを分けてしまった方が狙った質感で制作することが可能です。ただし、パーツの繋ぎ目を自然にする処理は必要になってきます。
各色で囲った部分でパーツ分けしています。
こちらが前髪のモディファイアになります。
クランプを重ね掛けて複雑な束感を作りつつ、ノイズで自然に見えるように調整をしています。
各モディファイアの処理を見ていきます。
上記が全くモディファイアを設定していない状態でのルックです。
まず束感を出す為にクランプモディファイアを設定していきます。
クランプを追加し、右下のsetup mapsを選択します。
ここでどれくらいの密度で毛束を作っていくかを、クランプポイントという概念を使用して設定していきます。
クランプポイントとは毛束がまとまるポイントのことです。
このポイントを配置する方法として、Generateを押して設定した密度で自動生成するやり方と、ガイドの根元の位置にクランプポイントを生成するやり方が選べます。
今回の制作物の場合、元々最初のクランプはガイドの位置で制御しようと考えていた為、ガイドをそこそこ多めの密度で均等に配置して制作しています。
ガイドとガイドの根本のクランプポイント
クランプを入れた状態
設定項目でクランプの強度(まとまり感の強さ)の調整や、毛の根元から毛先までのどの部分に強くまとまる効果をかけるかを設定を行います。
毛先までクランプが100%かかるとトゲトゲしてしまう為、少し緩和しています。
上からクランプを重ね掛けして前髪の複雑な束感を再現していきます。
クランプの設定で大切なのがControl Mapの設定です。
ここでスタックの下にあるクランプモディファイアのマップを設定すると、その下で生成した束を崩さず、その束の中で束を作るように設定できるので、再現したいルックに合わせて調整してみてください。
また、XGenではエクスプレッションを使用することが出来ます。
例えばモディファイアの強度をランダムに設定したい場合、rand(下限数値,上限数値)といった関数で指定可能です。
他にも多数のエクスプレッションが存在します。
こちらに解説が載っているので、興味のある方は参照してみてください。
また1から書かなくともサンプルが用意されているので、こちらの数値を調整するだけでもかなり自由度高く調整が出来るようになるのでオススメです。
クランプのみで調整完了したもの
クランプの設定がある程度終了したら、次にノイズで自然さを演出していきましょう。
ノイズには大きく二つ調整項目があります。
・Frequency 強度を上げるとより細かい周波数でうねるようになります。
・Magnitude 強度を上げるとより大きく歪むようになります。
ノイズが入ったもの
これらを駆使して自然な毛の流れになるように数値を調整していきます。
分かりづらければ都度レンダリングしてみてルックを確認しながら進めていきます。
細かい作業になりますが、一番クオリティに差が出る部分なので根気強くやった方がいい工程です。
下の動画では制作したモデルに対してモディファイアの設定を行っている部分を解説しています。
STEP7 : インタラクティブグルーミングに変換する
XGenでのモデル制作が完成したら、そのモデルをXGenインタラクティブグルーミング形式に変換する必要があります。
変換自体も簡単かつ高速に出来る上、インタラクティブグルーミング形式に変換することによってXGenの方では設定されていたヒストリ等がクリアになったデータになり、より高速にレンダリング可能になるので、基本的にルックの確認時は変換してからレンダリングしています。
場所はGenerateタブ内のConvert to Interactive Groom内にあります。
変換のやり方はアウトライナ上で変換したいXGenフォルダを押しながらConvertを押すだけです。
変換したインタラクティブグルーミングにマテリアルを割り当ててレンダリングを行い、ルックを確認します。
下の動画では制作したXGenモデルをインタラクティブグルーミング化する部分を動画で解説しています。
インタラクティブグルーミング化したことでビューポートも軽くなり、レンダリングも快適に行えています。
STEP8 : ルックを確認しながら詰めていく
髪の毛とベースモデルも細かい調整を重ねてブラッシュアップしながらルックを詰めていきました。
レンダリング、シェーディング関係に関しては次章で解説しますが、エリアライト一点でもクオリティが保てるようなルックを目指して制作すると良いと思います。
最終的なルックはこちらの動画になります。
次回予告
今回はXGenを使用した髪の毛の制作フローを解説しました。
髪の毛に限らず、特にフォトリアルモデリングはリファレンスの観察と模倣が基礎になってきますので、とにかく実物の形状を意識して寄せていく意識で制作していくと良いと思います。
次回は今回制作したモデルのシェーディングやシーン構築を解説していく予定です。
折角綺麗に髪の毛が作れてもレンダリングが上手く出来ないとルックが微妙になってしまうので、最後まで気を抜かずに制作をすすめていきましょう!