【VR開発日記#12】セミリアルキャラのUnity移行へ!ヘアカーブとヘアアセットで板ポリ用テクスチャを自作する

AV

前回はPhase 1として、セルルックキャラクターのUnity(URP)移行とlilToonによる質感・アウトライン調整を完了させました。

今回からはPhase 2に突入!Eeveeで質感を追い込んできた「セミリアルキャラクター」をUnity空間へ連れていく検証プロセスに入ります。

セミリアルキャラ移行における最大の難所は、Blenderのヘアカーブ(ジオメトリノード)で作られた重い髪の毛を、VRで軽量に動く「板ポリ(ヘアーカード)」構造へ改修する工程です。

今回はその第一歩として、板ポリに貼り付ける各種テクスチャ(ベースカラー・アルファ・ノーマル)をBlender上で一から自作・レンダリングしていきます。

なお、今回の作業にあたっては以下のYouTubeチュートリアル動画の手順を参考にさせていただきました。

1.平面とヘアカーブによるベース制作とスカルプト編集 まずは毛束のベースとなるガイドを作成し、最新のヘアスカルプト機能で髪の形を整えていきます。

  • Shift + A > 「メッシュ」 > 「平面」 を追加し、選択状態のまま 「カーブ」 > 「空のカーブ」 を追加。
  • スカルプトモードに切り替え、+ マークの付いたアイコン(髪を追加ツール)で平面上に毛束を適当に追加。
  • レンダープロパティ内にあるカーブの項目で、形状を 「ストリップ」 に変更し、「さらに細分化」を3 に設定。
  • 追加した髪をスカルプトツールで編集し、下地の平面に綺麗に沿わせる。
画像
Blenderの3Dビューポート上で、平面オブジェクトに沿って立ち上がるヘアカーブの初期配置

2.ジオメトリノード(ヘアアセット)による毛束のディテール調整 単なる直線状のカーブから、リアルな毛筋やランダムなハネ感(フリズ)を持つ毛束へ発展させるため、Blender標準のヘアアセットモディファイアーを追加・調整していきます。

使用したヘアアセット・モディファイアー:

  • Set Hair Curve Profile: 毛束の太さ(半径: 0.001m など)や断面シェイプを設定。
  • Duplicate Hair Curves: 1本のカーブから複数の毛束を複製(量: 100 など)して密度をアップ。
  • Frizz Hair Curves: 髪の毛にリアルな縮れや毛先のバラつきをプラス。
  • Trim Hair Curves: 毛先の長さやランダムなカット感を調整。

パラメータ調整のコツ
Duplicate Hair Curves で密度を出しつつ、Frizz Hair Curves の距離や係数を微調整することで、CG特有の整いすぎた不自然さを消し、一本一本の生え際や毛先の透け感が自然なグラデーションになります。

画像
Set Hair Curve Profile, Duplicate Hair Curves, Frizz Hair Curves, Trim Hair Curvesのパラメータ
画像
ヘアアセット適用後、毛筋の密度と毛先のばらつきが再現された髪の毛オブジェクトとシェーダーノード画面

3.Cycles&ワークベンチによる3大テクスチャのレンダリング 出来上がった髪の毛オブジェクトに対し、透視投影(Orthographic)カメラを正面に設置して、板ポリに貼り付けるための3種類のテクスチャを書き出します。

書き出したテクスチャと設定:

  • Base Color(ベースカラー): 髪の毛自体の色合い。ライティングの影響を受けすぎないようフラットで影の少ないブラウンを採用。
  • Alpha(アルファ/透過マスク): 背景を黒(0.0)、毛束を白(1.0)とした透過用画像。
  • Normal(ノーマル/法線): ワークベンチ(MatCapのNormal表示)等を活用し、立体的な凹凸感を表現する青紫色の法線マップ。
画像
ノーマルマップ調に表示されたビューポート画面

Cyclesレンダリングの負荷・時間対策
Cyclesでの高品質なレンダリングは毛髪の計算量が非常に多く、時間がかかりがちです。レンダリング設定の「サンプリング」項目でサンプル数を低めに抑えるか、レンダリング制限時間(Time Limit)を数秒〜数十秒に設定しておくことで、画質を維持しつつ爆速で書き出すことが可能です!

コメント

タイトルとURLをコピーしました