埋もれシェーダーはカメラがメッシュの内側に潜り込んだ際に頂点をカメラの正面まで押し戻すことでメッシュの内側を見えなくするシェーダーです。 liltoonのカスタムシェーダー機能を用いて作成されています。
ミルティナちゃんを例に導入の手順を説明していきます。
- こちらのURLにアクセスし "Add To VCC" を選択してVCCに追加
- VCCを開き、シェーダーを追加したいプロジェクトの"Manage Project"を選択
- パッケージ一覧から"UzumoreShader"を探してプロジェクトに追加する。
- liltoonのバージョンが1.8.5以前の場合はバージョンアップが要求されるので"Confirm"を選択します。
- プロジェクトを開き、適当なマテリアルのシェーダー選択欄から"Sigmal00/Uzumore/..."以下のシェーダーが選択できるようになっていることを確認します。
unitypackage版から移行する場合はこちら
プロジェクトにすでにunitypackage版の埋もれシェーダーをインポートしている方向けの手順です。
- こちらのURLにアクセスし "Add To VCC" を選択してVCCに追加
- プロジェクトを閉じてからエクスプローラーなどで"Assets\Sigmal00\UzumoreShader"以下のフォルダを削除する。
- VCCを開き、シェーダーを追加したいプロジェクトの"Manage Project"を選択
- パッケージ一覧から"UzumoreShader"を探してプロジェクトに追加する。
- liltoonのバージョンが1.8.5以前の場合はバージョンアップが要求されるので"Confirm"を選択します。
- プロジェクトを開き、適当なマテリアルのシェーダー選択欄から"Sigmal00/Uzumore/..."以下のシェーダーが選択できるようになっていることを確認します。
既にliltoonシェーダーのパラメータを設定済みのマテリアルがある場合は、マテリアルを右クリックして"UzumoreShader/Convert material to UzumoreShader"を選択すればマテリアルを埋もれシェーダーに対応したものに変換できます。
- 変換前にマテリアルを複製するなどしてバックアップを取っておくことをおすすめします
ver1.0.11以前
既にliltoonシェーダーのパラメータを設定済みのマテリアルがある場合は、マテリアルのシェーダー選択欄からシェーダーを埋もれシェーダーに切り替えれば、パラメータを(ほぼ全て)維持したまま埋もれシェーダーに切り替えることができます。
輪郭線設定をしていた場合、輪郭線設定のチェックが外れてしまうので再度チェックを入れなおしてください。
描画モードを半透明やカットアウトなどに設定していた場合も描画モードが不透明に切り替わってしまうので、その場合も描画モードを再度切り替え直してください。
カメラがメッシュの内側に潜り込んだとき、何メートルまで押し戻してくれるかを設定します。
値が大きすぎると意図しない場面で埋もれが発生することがあるので、0.1~0.2くらいにしたほうが無難です。
埋もれが有効になる範囲をマスクテクスチャで設定できます。
テクスチャの白い部分で埋もれが有効になり、黒い部分で埋もれが無効になります。
肌のテクスチャを元に、以下のように手の部分を白く、それ以外を黒く塗ったテクスチャを用意します。
用意したテクスチャを埋もれマスクに設定します。
Z-Fightを防ぐためのパラメータです。 Z-Fightを起こす(メッシュがチラつく)場合にはこの値を大きくしてみてください。
ver1.0.0
頂点の押し戻しが始まる距離に対するバイアス値です。
埋もれシェーダーを適用したメッシュ同士が重なってZ-Fightを起こす場合はこの値を調整してください。
その際は内側にあるメッシュは外側にあるメッシュよりもこの値を大きく設定してください。
例として、服メッシュのバイアス値が0.001のときは肌メッシュのバイアス値を0.002に設定すると良いでしょう。
マテリアルの描画モードが半透明から不透明に戻ってしまっています。マテリアルの描画モードを「不透明」から「半透明」に変更してください。
首のメッシュが押し戻されて映り込んでしまっています。
埋もれマスクに首元を黒くマスクしたテクスチャを設定してみてください。
また、VRChatの設定のGraphicsのページにあるForced Camera Near DistanceをDynamicやForcedに設定すると解決することがあります(基本的にはマスクの設定をオススメします)
肌にも埋もれシェーダーを適用してください。
liltoonの距離フェードを設定してください。
おそらく背中のメッシュが相手の眼前まで押し戻されています。
どこまで埋もれるかの値を小さくするか、埋もれマスクに埋もれさせたい範囲をマスクしたテクスチャを設定してみてください。
- 一般的な身長のアバターであればどこまで埋もれるかの値は0.1~0.2あたりに設定するのをオススメします。