UniToon

Unityの標準シェーダが持つ機能を踏襲した、滑らかなアウトライン表示が可能な物理ベーストゥーンシェーダ

Github Download

設定ガイダンス

トゥーン調キャラクタモデルの調整方法

以下のモデルを例にUniToonシェーダを使った調整方法を解説します。

VRMモデルをUnityにインポートするとモデルのマテリアルはすべてVRM/MToonシェーダとなるので、マテリアルをすべて選択し以下のメニューからUniToonシェーダに変換します。

シーンに配置し調整していきます。

全体的に色が淡いので、全てのマテリアルのShade Saturationを調整し陰影の彩度を高めます。

また、肌の色が白いので、肌に関するマテリアルのBase Colorを少しだけ調整します。

Shade Saturation = 2.5

Shade Brightness = 0.8

色味はこんな感じになりました。

顔の陰影を調整する

通常のシェーダだとReceiveShadowを切ってセルフシャドーが入らないようにし、Unlitにすることで陰影も切り顔に変な陰影が出来ないようにしますが、UniToonはシャドーと陰影両方を調整する事で理想的な状態に近づける事が出来ます。

顔の陰影を良い感じにするために、球面法線補正を動的に行います。そのためには、顔の中心の座標を知る必要があります。

モデルのルートからの相対的な顔の中心点を知りたいので、モデルのルートに「CenterPos」というGameObjectを置きます。後で削除するので名前は適当でいいです。(※モデルによってはルートがHipsである場合がありますのでご注意ください)

以下の位置にCenterPosが来るようにします。おすすめは、高さYは鼻の位置辺り、奥行きZは首の中心辺りです。

今回のモデルの場合、Y=1.37, Z=-0.025が顔の中心点となります。これを、顔に関係する全てのマテリアルの「Spherical Normal Correct Origin」にセットします。

そして「Spherical Normal Correct」を1に近づけると、顔の法線を自動的に補正出来ます。

完全に球面化してしまうと逆に変に見える可能性があるので、0.9位にする事をお勧めします。

補正すると、顔の陰影が改善されます。

陰影は改善されますが、セルフシャドーはまだ改善されていないので、次はセルフシャドーを改善します。

顔のセルフシャドーを調整する

※この機能はまだ実験的な機能なのでご注意ください

セルフシャドーを改善するためにも顔の中心点が必要なので、先ほどの「CenterPos」の座標をそのまま使います。(例:Y=1.37, Z=-0.025、場合によっては中心位置を変えた方が良い可能性があるので、その場合は各々良い座標を見つけてください。

これを「Spherical Shadow Correct Origin」にセットします。

次に、影の位置とみなすためのCenterPosからの半径を設定します。雑に、「顔の中心から顔のちょっと前方までの距離」で大丈夫です。位置的には顔のちょっと前方なのでこの辺りになります。

この場合、顔の中心から顔の前方までの距離は0.145だったのでこれを「Spherical Shadow Correct Radius」にセットします。

全て設定が終わった後の値はこんな感じになります。

Spherical Shadow Correctの値を1に近づけると影判定の座標が補正されるので、変なセルフシャドーが改善されます。

今回の場合は顔の前方が影判定の位置になるので、髪などのセルフシャドーが掛からなくなります。

CenterPosはもう必要ないので削除してください。

この状態で、ライトの方向を変えたり物陰に移動したりして、変な影にならないかを確認してください。

物理特性を調整する

TODO

Tips

TODO