🙃 9. 顔影マップ - 作成とベイク手順
1. 顔影マップの紹介
トゥーンレンダリングのキャラクターでは、顔に細かく割れたような明暗が出やすいことがあります。これは顔の法線が複雑なためで、簡略化したライティングを使うトゥーン表現では、明部と暗部が不自然に細かく分かれて見えてしまいます。
一般的な対処法としては、サードパーティの DCC ツールで proxy normal を使う、法線を手作業で調整する、あるいは顔影用の SDF テクスチャを使う、といった方法があります。
中でも顔影マップは、コストに対して効果が高く、アーティスト側で制御しやすい方法です。法線修正ほどの手間もかかりません。ASP/Character Shader の Face モードでは顔影 SDF マップをサポートしており、手描きテクスチャを顔影用 SDF にベイクするツールも用意しています。
適用前

顔影マップ未使用
適用後

顔影マップ使用後
2. 顔影マップの作成
1. 手描きテクスチャ
まず、モデルの UV 展開に合わせて顔用のテクスチャを 9 枚描きます。ASP/Character Shader の Face モードでは、テクスチャに使う UV チャンネル(UV0〜UV3)を選べるため、既存の UV を使うことも、顔影マップ専用に新しい UV チャンネルを作ることもできます。

0〜180 度の光の角度を 9 段階に分け、片側の顔 にどのような影が入るかに合わせて 9 枚のテクスチャを描きます。

最後に、描き終えた 9 枚の画像を Unity プロジェクトへインポートします。
💡 必ず 9 枚である必要はありません。枚数が多いほど、異なる角度の光に対してより細かな制御ができます。枚数が少ないほど制御の自由度は下がり、光の角度が変わる際に明暗が大きく飛びやすくなります(前の画像から次の画像へ切り替わるような見え方になります)。
2. ASP SDF Generator で SDF テクスチャをベイクして統合する

Unity プロジェクト上部のメニューから
Tools -> ASP -> SDFGeneratorを選び、SDF Generator ウィンドウを開きます。前の段落で作成した 9 枚の画像を
source textures arrayにドラッグします。これら 9 枚が SDF 生成元のテクスチャになります。GroupName(生成されるテクスチャ名の接頭辞)を設定し、出力先のパスを指定します。Create SDFs & Mergeをクリックすると、9 枚のテクスチャから計算した SDF が 1 枚に統合され、顔影用 SDF マップが生成されます。

この例では UnityChanFace_merged だけあれば十分で、他に生成された画像は参考用なので削除して構いません。
次に顔用マテリアルへ戻り、1️⃣ シェーディングスタイル を Face に設定します。

これで、そのキャラクターの顔影マップ設定は完了です。
3. Head Bone Transform を設定して、顔のライティング計算を頭の向きに追従させる
顔影マップのライティング計算では、既定で ASP Character Panel オブジェクトの正面方向が顔の向きとして使われます。
顔のライティング計算を頭部の向きに追従させるには、ASP Character Panel 内のパラメータを設定します。
ASP Character Panel 内の
Light Direction Paramへ移動しますキャラクターの Head Bone を
Head Bone Transformに割り当てますFaceモードの ASP/Character Shader は、その Transform の向きを顔の向きとして使ってライティングを計算します。

⏭️ 次のページへ 🌈 10. 受ける影の色のカスタマイズ