がとーしょこらの技術録(旧)

記録や技術的な記事を書いていきます

[VRChat] Avatars2.0からAvatars3.0へ簡単に移行するためのEditor拡張を作成した

はじめに

VRChatにAvatars3.0がきました。
これはアバターをセットアップするための新しい仕組みです。

従来のAvatars2.0に比べて、細かなアバターの表現を実現できるようになりました。
実際どんな感じに変わったかは記事にまとめたのでこちらを見てみてください。

[VRChat] Avatars3.0のVRCAvatarDescriptor - がとーしょこらの技術録

まだ従来のAvatars2.0も使うことができるので、無理にAvatars3.0に移行しなくても良いですが、
何かとAvatars3.0へ移行する必要がある要因が出てきたりします。
たとえば...

  • AFKのポーズを変えたい
  • アクションメニューに○○って項目を追加したい
  • EmoteSwitchを後から来た人にも同期するようにしたい

ここらへんをやろうとするとAvatars3.0でアバターをセットアップする必要があります。
しかし、VRCAvatarDescriptorが違ったり、CustomOverrideEmptyが使えなくなっていたりしているので
一からセットアップし直しになります。

これを解決するために
「Avatars2.0用のアバターの設定をいい感じにAvatars3.0用に変換するEditor拡張」を作ったので、
これを使った移行を紹介します。

gatosyocora.booth.pm

また、Avatars2.0のプロジェクトからアバターをunitypackageで取り出すときに
普通にやると間違えそうになるのでそれ用のEditor拡張も作成しました。
これも使っていきます。

gatosyocora.booth.pm

Avatars2.0から3.0への移行手順

移行手順を段階に沿って紹介していきます。

既にあるAvatars3.0用のプロジェクトに変換後のAvatars3.0のアバターを追加する場合は1の手順は不要です。
また、BoothなどでダウンロードしてきたAvatars2.0のアバターを変換する場合は2の手順は不要です。

1. Avatars3.0用のプロジェクトを用意

Avatars2.0と3.0ではVRCSDKが全くの別物なので、
VRChat公式ページからAvatars3.0用のVRCSDKをダウンロードしてきます。
https://www.vrchat.com/home/download

f:id:gatosyocora:20200818211703p:plain

VRChat SDK3はワールド用とアバター用に分かれているので、
アバター用のほうをダウンロードします。

UnityでAvatars3.0用の新しいプロジェクトを作成します。
これはAvatars2.0と変わらず、Unity2019.4.31f1で作成してください。
(下の画像はUnityHubでの画像)

f:id:gatosyocora:20200818223852p:plain

そこに先ほどダウンロードしてきたAvatars3.0用のVRCSDKをインポートします。

f:id:gatosyocora:20200818224552p:plain

2. Avatars2.0のアバターの荷造り

移行したいアバターがあるAvatars2.0のUnityプロジェクトを開きます。
ここに上で紹介したGameObjectExporterをインポートします。
Hierarchyにある移行したいアバターを右クリックして、「Export UnityPackage」を選択します。
そのあと、「Default」などが表示されます。

f:id:gatosyocora:20200818223455p:plain

  • Default : アバターに関連するアセットすべてを含みます。
  • ignore Shader : シェーダーを除いたアバターに関連するアセットすべてを含みます。
  • ignore DynamicBone : ダイナミックボーンを除いたアバターに関するアセットをすべて含みます。
  • ignore Shader and DynamicBone : シェーダーとダイナミックボーンを除いたアバターに関するアセットをすべて含みます。

配布するときなどはシェーダーとダイナミックボーンを除いたほうがよいときがありますが、
自分のプロジェクト間で移動させるときはDefaultで良いと思います。
「Export Unitypackage > Default」と選択することでアバターのunitypackageがDesktop上に作成されます。
(アバターの名前.unitypackageという名前で出力されています)

f:id:gatosyocora:20200818223713p:plain

3. Avatars3.0のセットアップ

1で作成したAvatars3.0用のプロジェクトに上で紹介したVRCAvatars3Toolsをインポートします。
さらに2で作成したアバターのunitypackageもインポートします。

Unity上部のメニューからVRCAvatars3Tools>VRCAvatarConverterTo3を押して、変換用ツールのウィンドウを表示します。

f:id:gatosyocora:20200819005909p:plain

f:id:gatosyocora:20200819005927p:plain

2.0 Avatar Prefabの右にある二重丸を選択して、Avatars2.0アバターのPrafabを選択します。

f:id:gatosyocora:20200819010041p:plain

いろいろ情報が表示されます。
一応一通り目を通して「Convert Avatar To 3.0」を押してください。

f:id:gatosyocora:20200819010453p:plain

HierarchyとSceneViewに変換されたアバターが表示されます。 f:id:gatosyocora:20200819010611p:plain

Inspectorを見ると変換後のアバターには

  • MissingになったScript
  • PipelineManager
  • VRCAvatarDescriptor

がついていると思います。

f:id:gatosyocora:20200819010808p:plain

それぞれ

  • MissingになったScript : Avatars2.0のVRCAvatarDescriptorだったもの
  • PipelineManager : アバターIDがついているもの
  • VRCAvatarDescriptor : Avatars3.0のVRCAvatarDescriptor

です。

MissingになったScriptは(Script)あたりを右クリックして
RemoveComponentで削除しておいてください。
残しておくとアップロード時にエラーでアップロードできないです。
f:id:gatosyocora:20200819011044p:plain

また、一度アップロードしたことがあるアバターなら、
PipelineMangerにAvatars2.0のときのBlueprint IDが残っています。
このままアップロードするとAvatars2.0のアバターが3.0に上書きされてしまうので
上書きされてほしくない場合は「Detach」を押して、idを削除しておいてください。

f:id:gatosyocora:20200819011451p:plain

これで変換はすべて完了しました。
このままアップロードすることでAvatars3.0のアバターとして使用できます。

それでは良いAvatars3.0ライフを!

関連リンク