2022.07.16
VRChatのPhysBoneアップデートにあたり、PhysBonesに対応した記事を以下に書きました。
https://qiita.com/shoshoi/items/256eef287d476c8acd3d
はじめに
私のVRChat用アバターは、VRM Converter for VRChatでVRoidモデルから変換して生成しています。
VRoidモデルを使用している場合、衣装変更や髪型変更などVRoid側で修正を加える度にモデルの再変換および各種パラメータ(View PositionやDynamicBone)の再設定をする必要があり、時間のかかる作業となります。
そこで、View PositionやDynamicBoneなどのよく再設定するパラメータを、設定済みのアバターから自動でコピーするためのUnityEditor拡張である「VRoidAvatarSetupUtils」を作成しました。
この記事ではその使用手順を説明します。
注意事項
- 必ず事前にプロジェクトのバックアップを取ってください。
- パラメータ設定済みのアバターとパラメータ再設定対象のアバターでボーン構造・ボーン名称が異なる場合、DynamicBone、DynamicBoneColider、およびオブジェクトを正常にコピーできません。
- 本手順で発生した如何なる問題に対してshoshoiは責任を負いかねます。
パラメータのコピー手順
この記事では、Unity 2019.4.29f1とVRChat SDK3-Avatarsを使用して手順を説明します。Unity 2018.4.20f1とVRChat SDK2を使用する場合、画面が若干異なりますが手順は同じです。
作業の前提
- プロジェクトのバックアップをとっていること
- VRChat SDK2 または VRChat SDK3-Avatarをインポートしていること
- DynamicBoneをインポートしていること
アバターの準備
パラメータ設定済みのアバター(以降コピー元アバター)と、パラメータ再設定対象のアバター(以降コピー先アバター)を準備します。VRoid(VRM)をVRChatアバターに変換するまでの流れは、以下の記事を参照ください。
VRMからVRChatへアップロードする流れ - Qiita
https://qiita.com/100/items/7315fe3a7eb75732ae43
VRoidAvatarSetupUtilsの導入
- 以下のURLから最新版(右上の赤いボタン)を入手します。
https://jirko.booth.pm/items/3232745 - ダウンロードしたファイルを展開(解凍)します。
- 中に入っているunitypackageファイルを、Assetsにドラッグ&ドロップし「import」します。
パラメータのコピー
VRoidAvatarSetupUtilsでパラメータのコピーを行います。VRoidAvatarSetupUtilsの設定項目の詳細は、後章**VRoidAvatarSetupUtils 設定項目の詳細**を参照ください。
-
上のVRoidAvatarSetupメニューからOpen CopyAvatarParameters Wizardを選択します。
-
ダイアログウィンドウが開くので、Source Avatarにコピー元アバターを、Destination Avatarにコピー先アバターをそれぞれヒエラルキーからドラッグします。
以上で手順は完了です。
VRoidAvatarSetupUtils 設定項目の詳細
VRoidAvatarSetupUtilsの設定項目は以下のとおりです。
VRC Avatar
-
Source Avatar
コピー元アバターを設定します。 -
Destination Avatar
コピー先アバターを設定します。 -
Avatar Type
アバターのタイプを選択します。VRoidから変換して生成したアバターを使用している場合は「VRoid Avatar」を、それ以外の場合は「Other Avatar」を選択してください。
VRC Avatar Descripter
-
View Position
View Position(アバターの視点位置)の値をコピーします。 -
Eye Movements(VRChat SDK3-Avatar限定)
Eye Movements(目の動きの傾向)の値をコピーします。 -
Rotation States(VRChat SDK3-Avatar限定)
Rotation States(目の回転範囲)の値をコピーします。
Pipeline Manager
- Blueprint ID
Blueprint ID(アバターに付与される一意のID)の値をコピーします。
Dynamic Bone
Dynamic Bones
Avatar TypeがVRoid Avatarの場合
以下の項目からコピーしたいダイナミックボーンを選択してコピー先アバターへコピーします。全てのDynamic Boneをコピーする場合、全て選択してください。
-
髪の毛
ルートボーン名に「Hair」が含まれるDynamic Boneをコピーします。 -
スカート
ルートボーン名に「Skirt」が含まれるDynamic Boneをコピーします。 -
袖
ルートボーン名に「Sleeve」が含まれるDynamic Boneをコピーします。 -
胸
ルートボーン名に「Bust」が含まれるDynamic Boneをコピーします。 -
その他
上記以外のDynamic Boneをコピーします。
Avatar TypeがOther Avatarの場合
- コピー元アバターに設定されている全てのDynamic Boneをコピー先アバターへコピーします。
- コピー実行前に、コピー先アバターに設定されていたDynamic Boneは削除されます。
Dynamic Bone Coliders
- コピー元アバターに設定されているDynamic Bone Coliderをコピー先アバターへコピーします。
- コピー実行前に、コピー先アバターに設定されていたDynamic Bone Coliderは削除されます。
Objects
- アバターに配置されているオブジェクトをコピーします。
- コピー元アバターとコピー先アバターのオブジェクト構造の差分を比較し、「コピー元に有りコピー先に無い」オブジェクトをコピーします。
- コピー元アバターとコピー先アバターのボーン構造が違う場合、ボーンが差分として検出されコピーされる恐れがあります。