【VRChatアバター改変・軽量化基礎】ユニティちゃんトゥーンシェーダー2.0(UTS2)をlilToonシェーダに変換する

アバター「ほしねこ」を例とする。

このアバターにはユニティちゃんトゥーンシェーダー2.0、英語表記でUnity-Chan Toon Shader 2.0……通称UTS2と呼ばれるシェーダが使われている。

"ほしねこ"に設定されているマテリアル。シェーダーとしてUnityChanToonShaderが使われている

このシェーダはかつては高機能でUnityと親和性が高いことから広く使われていたが、2024/04現在では2.0.9をもって更新が終了しているようだ。
この最新版はUnity 2020.3.x LTSまでしか動作保証がされておらず、2024/04現在VRChatが利用している2022.3系では正常な動作が保証されないため、おもわぬ不具合のもとになりうる。
このまま利用し続けることは推奨できない。

後継となるシェーダとしてUnity Toon Shader……通称UTS3が開発されているが、2024/04現在ではまだプレビュー版であり正式版には至っていない。
正式版になった際にVRChatで使用しているUnityのバージョンがサポートされているかどうかも定かでなく、まだ積極的な採用は推奨できない。

そこで、2024/04現在積極的にサポートがされており、半自動での移行ツールが存在するlilToonへの移行を提案する。
ここで紹介するツールを使用することで、もとのUTS2側の設定をできる限り再現しつつlilToonに自動で移行できる。

まず、VCC/VPMにlilToonのリポジトリを追加する。
すでに行っている場合は飛ばして良い。

次にVCC/VPMから使いたいプロジェクトに"lilToon"パッケージを導入しておく。
以下からlilMaterialConverterのパッケージをダウンロードする。

ここまで済んだらプロジェクトを開き、lilMaterialConverterをプロジェクトにインポートする。

プロジェクトが開いたら、マテリアルの変換をしたいアバターを選択してマテリアルを調べる。
例として使っている"ほしねこ"の場合、アバター配下の"Body"、または"bousi"を選択してインスペクターを見ると"Skinned Mesh Renderer"コンポーネントの"Materials"内に"ほしねこ"と名前のついているマテリアルが見つかるはずだ。
これはアバターによって名前が違うことになるが、"Skinned Mesh Renderer"コンポーネントまたは"Mesh Renderer"コンポーネントがついているオブジェクトにはかならずマテリアルがついている。

ほしねこ、というマテリアルが設定されている

マテリアルの設定を見つけたらクリックしてみよう。
するとプロジェクトのファイラーがそのマテリアルの位置にジャンプして場所を教えてくれる。

マテリアルのファイルを見つけたら念の為バックアップをとる。
マテリアルを選択した状態でWindows/Linux等ではCtrl+D、MacではCommand+Dキーを押す。するとマテリアルが複製される。
名前の変更が可能なので"<元の名前>_UTS2"とでもしておこう。例の場合は"ほしねこ_UTS2"だ。

マテリアルのバックアップを生成する。必須ではないのだが念の為

バックアップがとれたら元のマテリアルをもう一度選択しなおそう。
マテリアルを右クリックして"lilToon"→"[Material] Convert material to lilToon"を選択する。
マテリアルの変換を実行するか尋ねられる。バックアップは先程とっておいたのでOKをクリックしよう。

バックアップをとってあるのでOKを押す


正常に完了するとこのウィンドウが表示される

正常に変換されるとマテリアルのシェーダがlilToonに変化していることがわかるはずだ。

ShaderがlilToonに変化したことがわかる

"ほしねこ"のアバターはこのマテリアルひとつしか使われていないが、複数のマテリアルが存在しているアバターについては同様にすべてのUTS2マテリアルを変換する必要があることに注意しよう。

変換が済んだらあとはいつもどおりアップロードしてよい。

いいなと思ったら応援しよう!