参考動画
手順解説
テクスチャ作成時に使用する髪の毛を準備する
Planeを出し、Add – Curve – EmptyHairでヘアカーブを作る。
Planeオブジェクト内にあるヘアカーブを選択した状態で SculptModeに移動する。
Addブラシで髪を植え付け、板に平行になるようくしブラシで梳いていく。
ヘアカーブにMaterialを当てておくとわかりやすい。
また髪の密度はどれくらいが最適かはとてもむずかしい問題なので、いろんな密度のバージョンを作っておくと後々便利。(密度が低い方がリアルだったり軽やかな髪質表現をしやすいが、重ねる回数が増える。密度が高いと重たい髪質になる)
毛量や髪質の調整
髪質や毛量の制御には髪アセットを使う方法もある。
これらのアセットをヘアカーブに割り当てると、モディファイアが追加されるので、その値亜を調整することで加工できる。
例えばCurveProfileを使うと髪の細さを調整できる。
髪色のマテリアル
マテリアルはデフォルトのBSDFでもいいが、下の CurveInfo + ColorRampを使う方法もある。こっちだとランダムを簡単に作成可能。
また後からでも色自体はある程度変更可能なので、よほど精度にこだわるとかでないなら大体でOK
テクスチャを生成する
Diffuse・AO・Alpha・Normalの四枚
カメラの準備
カメラをビューポート上に準備する。
板ポリ用のオブジェクトを真上から俯瞰する視点に切り替える(角度にもよるがショートカットでは テンキーの 7キーとか)
そしたらCtrol + Alt + 0 でカメラの視点を現在の視点と同期する。(両方とも上から見下ろす視点)
カメラを選択してプロパティを開き、LensのTypeをOrthographicに変更する。
Outputを開き、Resolutionを設定する。
今回は4K 4096px
カメラの画角を調整し板ポリオブジェクトが枠内に収まるようにする。
OrthographicScaleでズーム調整、左右上下はGキーで。
撮影
Diffuseテクスチャ
髪を植え付けたPlaneに髪の毛と同じマテリアルを割り当てる。
なので下の画像のように見づらくなるが問題ない。
F12でレンダリングし、保存するときはRGBに切り替える。
Alphaテクスチャ
RenderPropertiesを開き、エンジンをWorkBenchに切り替える。
さらにLightingはFlat
ColorはMaterialに設定する。
そしたら髪のマテリアルとPlaneのマテリアルを設定する。
数値をクリックしてマテリアルを複製し、ViewportDisplayの箇所で、髪は真っ白、Planeは黒にする。
そしたらF12でレンダリングし、名前をつけて保存する。同じくRGBでOK。
AOテクスチャ
アルファテクスチャの設定をそのまま利用する。
RenderPropertiesを開き、ShadowとCavityにチェックを入れて影をつける。
RGBで保存する。
ノーマルマップ
上でやったShadowやCavityのチェックを外す。
LightingをMatcapに変更し、レインボー柄を割り当てる。
PlaneのViewportDisplayを白にする。
レンダリングして保存する。同じくRGB。
テクスチャを使ってマテリアルを作成
RenderPropertiesのEngineなどをもとに戻す。
Planeオブジェクトを出し、マテリアルを新規で割り当てる。
DiffuseのテクスチャをBaseColorに割り当てる。
DiffuseのImageTexureノードを選択した状態でCtrol +Shift + Dで下にAOテクスチャ用のImageTexureノードを複製する。
Ao用のノードにはAoテクスチャを割り当てる。
そしたら2つのImageTexureをMixする。モードはMultiplyでFactorを1にする。
透過
まずマテリアルのBlendModeをAlphaHashedに変更しておく。
同じ要領でもう一つImageTexureノードを出し、アルファテクスチャを割り当てる。
ColorSpaceをNonColorにして、PrincipleBSDFのAlphaにつなぐ。
間にColorRampを挟んで調整するとちらつきを制御できる(現段階ではそこまで気にする必要はないが、この後に記述している背景処理とかをやる際にここで調整する。またこのColorRampをいじって透過具合を調整することで髪の密度が変わってみえるようになる)。
ノーマル
同じくNonColorのImageTexureにノーマル用テクスチャを割り当てる。
次にVector – NormalMapノードを出して接続し、さらにPrincipleBSDFのNormalに接続する。
NormalMapのStrengthを調整して。
全体図
後はPrincipleBSDFのSpecularやRoughtnessをいじったり、NormalのStrengthをいじって調整する。
裏側の処理
上記ので表から見た場合の制御はできているが、裏側が真っ黒になってしまうという問題がある。
TranslucentBSDFとTransparentBSDGを出し、MixShaderでつなぐ。
TranslucentのColorにはMultiplyをもってくる。
ColorRampのColorをInvertを間に入れてMixShaderのFacに接続する。
最後にMixShaderとPrincipleBSDFをAddShaderで接続する。
キラ付く感じがあるので、ColorRampの部分で調整する。
全体図
髪色を変えたい場合
Diffuseの色を変更したい場合は、ColorRampノードなどをDiffuseとMultiplyの間に挟むとある程度変更できる。
板ポリ・ヘアカードを作成
Planeオブジェクトを複製して保存しておき、片方を選択してEditModeに移動する。
ループカットで髪に沿うようにPlaneを細分化していく。
面選択にして髪のある部分を選択し、Shift+ Dで複製、Pキーで別オブジェクトとして分離する。
さらに各ヘアカードを細分化する。
これはSubdivisionsurfaceモディファイアを後で使用するのでそこまで多くに分ける必要はない。
やりすぎた場合は全選択でMesh – CleanUp – LimitedResolveでやり直す。
最後にOriginを髪の頂点の部分に設定する。
EditModeでOriginを設定したい箇所に近い頂点を選択し、Shift + A – Cursor to Selectedを実行。
ObjectModeに戻り、当該オブジェクトを右クリックでSetOrigin – Origin to 3DCursorを実行する。
これで髪の根元にOriginを設定可能。
板ポリを植え付けていく・ヘアカードを使って髪型を成形する
準備・初めの方でやっておいたほうがいいこと
あとは板ポリを重ねて髪を造形すると同時に、頭皮が露見しないように板ポリで埋めていくという作業。
そこで重要になるのが板ポリの髪の密度問題だろう。
密度の調整は板ポリを作る前のヘアカーブ植え付けの段階でやっておくべきだが、Alphaに使っているColorRampノードをいじってもある程度調整することできる。
このノードのツマミの間隔を広げるとより透過度合いが強くなり髪の密度が下がる(軽やかな髪質、よりリアリスティックな雰囲気になる)。ただ密度を下げると地肌の露出などを埋めるとき重ねる回数が増える。
部位ごとに管理
細かくコレクションを作り、髪の部位ごとに制作管理する方がいい。
頭皮の透け防止
板ポリを重ねていけば隠せはするものの、髪の密度が低めの板ポリだと重ねる回数が多く難儀。
対策としては
①頭皮の透け防止用のパーツ・板ポリを作る。
作るといってもマテリアルを複製して、上で言及したColorRampを調整することで透け防止用の板ポリと造形用板ポリの2つを用意するだけ。透け防止パーツでは防止用板ポリを使い、その他では造形用の板ポリを使うという方法で
②頭皮にテクスチャを貼る。
テクスチャペイントでもいいが髪の毛風のテクスチャを貼り付けて透け防止。
③VroidStudioで作ったモデルの髪オブジェクトや、著作権フリーの髪モデルを下地として利用する。その上に板ポリを重ねていくことで、髪型の造形や重ねる作業の量を下げることができる。
配置・植え付け作業の手順
板ポリ一個ずつをあまり丁寧にやると際限がない。パーツを構成する最初の板ポリだけある程度丁寧に作ったら、あとはそれを複製し、微調整してパーツを形作っていくというのが能率が良い。そしてパーツがある程度できたらまとめて調整する。
具体的な手順の一例
①カーソルを任意の場所に移動しておく。
②板ポリを選択し、Shift+ S – Selection to Cursor でカーソルの位置に板ポリを移動させる。
③髪の根元を意識して、GキーRキーで板ポリを移動回転させる(不自然に浮かないように注意)。
④EditModeで板ポリを変形させ髪を造形する(Bend機能などを使うと楽)。
⑤ひとつできたらそれを複製し、少しずらしたりして調整しながらパーツを作っていく。
⑥パーツがある程度形になったら、どれかひとつ板ポリを選択し、Shift + G – Collection と進んで、同じコレクション内のオブジェクトをまとめて選択する。
そうしてさらに調整をし、パーツをしあげていく。
かくつき
板ポリのカクつきにはSubdivisionSurfaceモディファイアを当てることで対処可能。
板ポリを結合してから当てるか、どれかひとつ(オブジェクトA)にまず当てておき、未割り当てのオブジェクトをまとめて選択し最後にオブジェクトAを選択して Ctrol + L – Copy Modifiers を実行するとモディファイアをコピー可能。