【VRChat】複数アバターの同一データ内での管理
今回の記事は、同じモデルで改変バリエーションのあるものを1つのデータ(Unityのプロジェクト)にまとめることは問題が起きにくいため簡単なのですが、ミーシェちゃんやフィリナちゃん、受付嬢さんなど複数モデルを1つのデータにまとめられないかという内容です。

数か月前からアバターデータをまとめる作業をしていたのですが、単体モデルのプロジェクトでは問題はなく他のアバターと共存させると問題の出るアバターがあり、プロジェクト内のアバターをVRChatにアバターをアップロードするとVR上での表示が平面状になっていました。
その後問題の原因となったアバターをプロジェクト内のフォルダを含め削除し、再アップロードしましたが一度壊れたデータは元に戻ることはありませんでした。
この状態で今まで使っていたアバターの上書きと購入後の新規アップロードをしてしまったのですが、どれも無改変でテクスチャーもそのままのアバターだったのでダメージが少なかったのが不幸中の幸いでした。
最初はアバターに使われているシェーダーが違っていたことからシェーダーに問題があるのではないかと思い検証を重ね、特定のアバターだけで問題が起こるということにたどり着くまでに時間がかかってしまいました。
1つのプロジェクトで複数モデルを管理する方法
結論から先に言うと以下の点に気を付ければ1つのデータ(プロジェクト)にまとめることが可能です。
- アバターのパッケージをインポートするごとにVRChatにアップロードしてチェック
- こまめに作業データをバックアップ
- ひとつにまとめる前のデータは作業が全部終わるまで残しておく
- 設定の変更や改変をしたアバターはUnity Packageとして出力して目的のプロジェクトにインポート
プロジェクトの作成とアバターの追加
ここからアバターのインポートに移るのですが、先にアバターに使用されているシェーダー単体でインポートしておくとバージョンの統一ができます。(もしくは最初にインポートするアバターのシェーダーを利用する)
以降のアバターインポート時には同一シェーダーの本体は不要になるため、アバターに同梱されている場合はチェックを外してください。(念のため)
後はアバターを次々に追加していくのですが、次のアバターのインポートに移る前にアバターをアップロードしてのチェックとデータの干渉が起きた時に備えてプロジェクトのバックアップをとっておきます。
アバターの設定にミスがありアップロードできないアバターやアバター自体に問題のあるものが含まれていると、他のアバターにも影響が出てアップロードができなくなったり正常に表示されなくなったりします。
新しくアバターを購入して導入することがあれば、念のため別のプロジェクトでアバターの設定内容を確認してから導入するのが望ましいです。
あともう1つ、アバター追加後はCunstomOverrideEmptyを共用していないかの確認をしてください。
専用に用意しているモデルが多いので干渉することは少ないのですが、VRChat SDKフォルダー内のCunstomOverrideEmptyを指定してアニメーションオーバーライドを設定しているアバターが複数ある場合、そのCunstomOverrideEmptyでアニメーションの設定がされているとアニメーションが正常に動かないアバターが出てしまうため、Ctrl + Dで複製して各アバターに別々のものを割り当ててください。
改変、設定変更をしたアバターについて
出力前に改変したテクスチャーやマテリアル、アニメーションなどの名称を変更しておくと、後から追加する改変前や他の改変モデルのデータによって上書きされてしまうことを防ぐことができます。
Unity Packageの出力操作手順はUnityの公式マニュアルに記載されています。
アバター追加が終わってから
X軸上にアバター間の距離を少し空けて並べると、アップロード時にVRCCam(サムネイル撮影用カメラ)への他のアバターが映り込むことを防げます。
後からおかしくなることも考えられるためアバターを全てアップロードし直して再チェック。
アップロードした全てのアバターに問題がなければ作業完了です。
お疲れ様でした!
追記
同じモデルのアバターが2体以上ある場合に限りますが、改変したアバターのパッケージインポート時に、先にインポートした同モデルのデータが置き換えられてしまうことが分かったため、該当部分を訂正しました。
衣装や装飾品のデータをパッケージ化しインポート、マテリアルやテクスチャーは元のデータからコピーし、オリジナルのモデルなどから再度設定していく必要がありそうです。
この記事へのコメント