UniVRMがURPに対応した!

技術

どうコメの開発では、VRMをUnityで使用するためにUniVRMを使用しています。
どうコメのプロジェクトは、レンダリングパイプラインにURPを採用しており、今までUniVRMが提供しているシェーダーが利用できませんでした。

なので当初はユニティちゃんシェーダーを使って変換をかけていたのですが、そのうちユニティちゃんシェーダーも開発が止まり、UnityToonシェーダーに置き換えるようお達しが出てしまいました。

そしてこの度、UniVRMがURPに対応した!ということで、早速置き換えを試みます。

ところがドキュメントをよく読むと、今回対応したのは、ランタイムのインポートのみ。
ランタイムのインポートというのは、プログラム実行中にリアルタイムにVRMを読み込んで表示を行うタイプのことです。
つまり、予めインポートをしてプレハブを作っておくといったエディタインポートは、未対応なのです。

実際に行うと、シェーダーの設定がURPのものにならず、ピンク状態になってします。
ただまぁシェーダー自体は手動で設定してやれば切り替えられるので、手作業でちまちまシェーダーを変えていきます。

おかしな所は無さそうに見えます。
これを実際に表示してみます。

右がリアルタイムインポートのもの、左が先ほど作ったプレハブにしたものです。
左側のキャラはなんか白いです。

裏を見ると真っ白です。
うーん、これは使えません。
リアルタイムインポートしたものは問題ないですね。

どうもシェーダの切り替えを手作業で行う際に、一部のパラメータが欠落してしまうようです。

左が手作業でシェーダーを切り替えたもの、右がリアルタイムインポートで設定されたものです。
ノーマルマップは欠落しているし、なんか色々と設定が違います。

というわけで、エディタインポートを行いたい場合は、変換プログラムを書いてやる必要があります。

でもまぁエディタインポート自体の対応は、比較的早いんじゃないかなと思います。
わざわざ変換プログラム作っても数ヶ月の命なら、移行そのものを延期してもいい気がします。
実際UnityToonシェーダーとの違いってあんまり分からないですし。

どうコメでは、今回のバージョンアップを期に、エディタインポートをやめて全部リアルタイムインポートするよう変更しました。

リアルタイムインポートって、結構時間がかかるので、たくさん出すとかであれば、やっぱりエディタインポートしておきたい場合もあるでしょうね。
このへんはゲームの特性によるかもしれません。

おしまい

コメント

タイトルとURLをコピーしました