VRMファイルをClusterにアップロードするまでの備忘録です。
VroidでVRMファイルを作ってClusterにアップロードしても「アップロードに失敗しました」
image数を16以下、mesh数を16以下、primitiveの数を32以下、materialの数を8以下。
アバター容量は25MB以下にする必要があります。
つまり、イメージ(画像)や、メッシュ、プリム (Prim, Primitive:オブジェクト数)、マテリアルを少なくする。
「アバター容量を減らしたVRMファイル」でアップロードします。
一度、unity上でVRMを開いて、マテリアルやメッシュを統合、画像の容量を減らして、再びVRMに戻すという作業です。
私のやった方法ですが、
unityにVRMファイルを入れる→VRM ConverterでPrefab化(自動)→シェーダーの再指定→Mesh Bakerでマテリアルやメッシュの統合→画像(イメージ)の容量縮小(25MBまで減らす)→VRM ConverterでVRMに→clusterにアップロード
という手順を取りました。
(この記事はすでにある程度アバター改変したことあるという前提で、話を端折っている箇所がありますがご了承ください。)
UniVRMをインポート
UniVRMのunitypackageの
UniVRM-〇〇_ce1c.unitypackage
これを入れると、unityのアセットにVRMを入れると自動でPrefabに変換してくれます。
またVRMに戻す時もこれを使います。
もしVRchatをやっている人なら、VRM Converter for VRChatがあればそれでも使えます。
VRM Converter for VRChat
https://booth.pm/ja/items/1025226
VRM Converter for VRChat〇〇 + UniVRM-〇〇.unitypackage
というファイルをインポートします。
VRMファイルをUnityに入れる
Vroidで作成したVRMファイルをunityのAssetsにドラッグアンドドロップ。
すると自動で自動でPrefabに変換したファイルが作成されます。
そのVRMファイル名.PrefabをHierarchyに移します。
シェーダーを変える
おそらくそのままだと色がおかしくなっているでしょう。
bodyやFaceやhairなどのシェーダーを変更していきます。
左のHierarchyで選択→右のInspectorでシェーダーを変更します。
シェーダーは、基本的にはVRM/MToonで大丈夫です。
ただし半透明にしたい場合などは、VRM/MToonでmodeのrendeing TypeのCutoutやTranceprarent。
あるいはVRM/UnlitCutoutを選択します。
VRChatでもClusterでも、VRMを取り込むここまでの作業は同じです。
今回は、Clusterに合わせてアバターの容量を減らしていきます。
(参考)
クラスター等にアップロードする場合
https://clustervr.gitbook.io/sdk/guide/avatar_customization/avatar_limit
25MBまでなので、大半の容量の原因である画像圧縮をする作業
Mesh Bakerでメッシュやマテリアルの統合
Mesh Bakerは容量を少なくしてくれる画期的なソフトです。
まともにアバター改変していると容量が重たくなってしまい、読み込みができなかったり、アップロード時に弾かれたりします。
Mesh Bakerはアバターやワールドをまとめて容量を縮めてくれます。
(参考)
Mesh Baker:メッシュとマテリアルの統合
http://www.asset-sale.net/entry/Mesh_Baker181121
私の場合、髪のパーツが別のシェーダーを使っていたので、シェーダーをすべて同じもので一つにはできず、マテリアルは統合せずに4つに分けました。
もしみんな同じシェーダーであればマテリアルは一括化で統合していいです。
画像の容量を縮小する
メッシュやマテリアルを統合しても、まだ容量は大きいです。
次にアバターに貼られている画像そのものの容量を小さくして軽減化させていきます。
マテリアルから画像を開き、容量を小さく設定してきます。
(参考)
サイズ容量が大きいアセットを縮小してSTYLYにアップロードする方法
https://styly.cc/ja/tips/filesize-reduction/
CombinedMesh-MeshBaker-meshのオブジェクトをPrefabの指定パーツと差し替える
これが忘れがちですが、マテリアル、メッシュ、画像を圧縮してできたHierarchyにあるオブジェクトの「CombinedMesh-MeshBaker-mesh」はあくまでそのパーツの部分だけです。
元あったbodyの部分と差し替えなければなりません。
元々Prefabにあったbodyのオブジェクトと、出来上がったCombinedMesh-MeshBaker-meshのオブジェクトを差し替えます。
出来上がったアバターをVRMで出力する
Hierarchyでアバターを選択→
VRM→UniVRM-〇〇→Export humanoid
→Authorに名前をつける→Export
→unityのインストールしてあるドライブのプロジェクトの入っているフォルダから直接VRMファイルを回収。
clusterにアップロードする
clusterにアップロード
という手順でした。
(参考)
カスタムアバターのアップロード