顔 SDF と Face SDF Studio
このページは 顔SDF影を使用をはじめてオンにする方のためのものです。 光源が回るとき、顔の影がアニメのように切り替わるようにします。約 7 分かかります。
これは何ですか
SDF は、顔の影が動く順番をあらかじめ描いておいた画像です。 光源が横に回ると、鼻の脇から順番に覆われていきます。 顔の凹凸をそのまま使うより、はるかにきれいな遷移になります。
まず 3 つを区別してください。
| 機能 | やること | 必要なもの |
|---|---|---|
| フェイスシェーディングモジュール | 顔の領域を体とは違うルールで処理 | 顔マスクまたはプロキシ |
| 顔SDF影を使用 | 光源方向に応じて覆われる順番を制御 | 顔 SDF マップ |
| Face SDF Studio | マップを作る別アドオン | 未リリース。このページには不要 |
いつ使いますか
- VRChat のワールドを歩き回り、照明方向が予測できないとき。
- Warudo の配信で照明方向を変えながら使うとき。
- 鼻の影が正面では大丈夫でも、側面で崩れるとき。
30 秒で試す
- 顔のマテリアルを選び、フェイスシェーディングモジュールをオンにします。
- 顔SDF影を使用をオンにします。
- 顔SDFマップに用意したテクスチャを入れます。
- 境界の柔らかさを 0.04 にします。
光源を左右に回したとき、影が順番に切り替われば成功です。 何も変わらない場合はトラブルシューティングへ進んでください。
マップはどこで手に入りますか
MingToon はマップを作ってくれません。3 つの経路があります。
| 経路 | 説明 |
|---|---|
| 外部制作 | 顔正面のグレースケールマップを自分で描くか、外注で作ります |
| 既存の SDF を流用 | 他のトゥーンシェーダー用の単一チャンネル SDF をそのまま持ってきます |
| Face SDF Studio | 別途の未リリースアドオンです。出るまでは上の 2 つの経路を使ってください |
SDF マップの形式
マップ形式で 2 つの方式から 1 つを選びます。既定値は Packed RGBA です。
| 形式 | チャンネル | 推奨される状況 |
|---|---|---|
| Packed RGBA | R は左、G は右、B は上、A は下 | 上下の照明まで使う基本の方式 |
| Single Channel Mirrored U | R の 1 枚。反対側は左右を反転して使います | 既存の単一チャンネル SDF を持ってくるとき |
Single Channel Mirrored U は上下方向を使いません。 上下の照明変化まで必要なら Packed RGBA を選んでください。
用意したマップを Inspector に接続する
- フェイスシェーディングモジュールをオンにします。
- 顔SDF影を使用をオンにします。
- マップ形式を用意したマップに合わせて選びます。
- 顔SDFマップにテクスチャを割り当てます。
- SDF座標を選びます。UV7 を別途用意していない場合は Base Texture UV (Legacy) です。
- 左右の影響 · 上下の影響 · SDF影の量を調整します。
- 境界オフセットと境界の柔らかさを、実際のアバターの照明で合わせます。
マップと一緒に正面投影データを用意していない場合、この値は座標を誤って読みます。 そのときは Base Texture UV (Legacy) に変えてください。
4 方向で確認する
マップの向きが逆になると、影が反対に動きます。 照明を 4 方向に動かしながら、1 回ずつ確認してください。
- 光源を顔の左に置きます。右から暗くなるはずです。
- 光源を顔の右に置きます。左から暗くなるはずです。
- 光源を上に上げます。顎の下から暗くなるはずです。
- 光源を下に下げます。額から暗くなるはずです。
SDFテスト表示をオンにすると、照明を無視してマップ自体を白黒で見られます。 テスト表示チャンネルの Maximum が、4 チャンネルの整列を一度に見せてくれます。
よく触る値
| インスペクターのラベル | 何が変わるか | 推奨の開始値 | 上げると / 下げると |
|---|---|---|---|
| 境界の柔らかさ | 明部と影が切り替わる幅 | 既定値のまま(0.04) | 上げると柔らかく、下げすぎると圧縮ノイズが見えます |
| 境界オフセット | 影が始まる時点 | 既定値のまま(0) | 上げると早く暗くなり、下げると遅く暗くなります |
| 左右の影響 | 左右の照明に反応する量 | 既定値のまま(1) | 0 だと左右の変化がなくなります |
| 上下の影響 | 上下の照明に反応する量 | 既定値のまま(1) | 単一チャンネル形式では使われません |
| SDF影の量 | SDF の暗い領域の最終的な強度 | 既定値のまま(1) | 0 だと SDF の影が隠れます |
| 共通横スケール | マップの横方向の大きさ | 既定値のまま(0.5) | 目と鼻の左右の幅を合わせるときに使います |
| SDFマスク強度 | 耳・後頭部を除外する度合い | 既定値のまま(1) | 0 だとマスクを無視します |
よくある問題
左右が逆に動きます
Packed RGBA の R と G の配置を確認してください。R が左、G が右です。 **顔の正面方向(オブジェクト空間)**がアバターと合っているかも確認してください。
タイリングのように同じ顔が繰り返されます
マップテクスチャの Wrap Mode が Repeat です。 インポート設定で Clamp に変えてください。
UV7 を選んだら座標が崩れました
同じ Renderer の UV7 は 1 つしか使えません。 顔 SDF が UV7 を使うと、顔ノーマルのベイクはその Renderer を飛ばします。 以前のデータが残っている場合は、MingToon マネージャーのベイク顔ノーマルを解除を実行してください。
もっと詳しく
- 顔の領域とプロキシを先に整える: キャラクター表現
- UV7 の所有権ルール: メッシュ UV ベイク
- 顔の影の方式を選ぶ: キャラクター表現
- 全項目と範囲: キャラクター表現のリファレンス