見出し画像

UnityでToonlitシェーダーに変更した時アバターの一部が黒くなる問題の解決策【VRChat】

はじめに

VRChatをプレイするためにUnityから3Dモデルをアップロードすることは殆どのユーザーが行っておりますが、Quest対応と呼ばれるAndroidプラットフォームからのアップロードは、Windowsプラットフォームと違う点がいくつかある為、不具合が生じることが多いと思います。
そのうちの一つ、「Toonlitシェーダーを適応した時に何故かアバターの一部が真っ黒になってしまう」の解決策が解ったので、書き留めておこうと思います。

問題点と解決方法

アバターの「Quest対応」をする際、一般的には
1. プラットフォームをAndroidプラットフォームに変更する。
2. シェーダーを全てVRChat/mobileに入っているシェーダーに差し替える
3. Dynamic Boneを全て取り除く
のステップを踏むことが多いと思います。(2020/10/28現在)

このうち、2の差し替え先のシェーダーとしてToonlitを用いる方は多いと思うのですが、この時に色味が少し変化するだけでなく、アバターの一部が大きく変色してしまい、それが修復できずにQuest対応を諦めるというケースが幾らか起きていると聞きます(私も一度挫折しました)。
例として、【HIRO JAPAN】様からBoothで販売されている「クラウディア」のを挙げましょう。

画像1

エレガントでとても整ったモデルであり、シェーダーはUTS2を使っているようです。このBodyのシェーダーを何もせずにToonlitに変更すると、

画像2

このように真っ黒になってしまいます。
これは、「頂点カラー(Vertex Color)」というものが残っているからであるらしく、これを取り除く必要があります。

これはUnity上でツールを使うことによって簡単に取り除くことができます。【クロツグミ】さんがBoothにて配布している、[VRCQuestTools]に含まれるツール、VertexColorRemoverというものを使えば一発で解決するようです。試しに上記のプロジェクトにVRCQuestToolsをインポートしたところ、

画像3

このように殆ど元のアバターと同じ配色に戻すことが出来ました。
VRCQuestToolsはこの他にもPC対応のアバターをQuest対応に変更するツールや、BlendShapeのコピーを短縮化するツールなども内包されているので、Quest対応に困っている方は是非使ってみてください。
こちらにリンクも張っておきます。

最後に

いかがでしたでしょうか?(一度言ってみたかった)
もちろんこの問題への解決策は他にもあると思いますが、私はこの方法で解決しました。正直私はモデラーでもプログラマーでもない一般人なので、原理や詳しいことはわかりません。ご了承ください。
一人でもこの問題が解決できる人がいればいいと思います。
またこのツールを作ってくださったkurotuさん、そして暫く昔の話ではありますが、この解決方法について教えてくれたnekonikobanさんに感謝致します。

それでは皆様、良きVRChatライフを!

この記事が気に入ったらサポートをしてみませんか?