はじめに
私のVRChat用アバターは、VRM Converter for VRChatでVRoidモデルから変換して生成しています。
VRoidモデルを使用している場合、衣装変更や髪型変更などVRoid側で修正を加える度にモデルの再変換および各種パラメータ(View PositionやPhysBones)の再設定をする必要があり、時間のかかる作業となります。
そこで、View PositionやPhysBonesなどのよく再設定するパラメータを、設定済みのアバターから自動でコピーするためのUnityEditor拡張である「VRoidAvatarSetupUtils」を作成しました。
この記事ではその使用手順を説明します。
注意事項
- 必ず事前にプロジェクトのバックアップを取ってください。
- パラメータ設定済みのアバターとパラメータ再設定対象のアバターでボーン構造・ボーン名称が異なる場合、PhysBones、PhysBoneColider、およびオブジェクトを正常にコピーできません。
- 本手順で発生した如何なる問題に対してshoshoiは責任を負いかねます。
パラメータのコピー手順
この記事では、Unity 2019.4.29f1とVRChat SDK3-Avatarsを使用して手順を説明します。
作業の前提
- プロジェクトのバックアップをとっていること
- VRChat SDK3-Avatarをインポートしていること
アバターの準備
パラメータ設定済みのアバター(以降コピー元アバター)と、パラメータ再設定対象のアバター(以降コピー先アバター)を準備します。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(目の回転範囲)の値をコピーします。
Playable Layers
-
Base
Base に設定されている AnimationLayer をコピーします。 -
Special
Special に設定されている AnimationLayer をコピーします。
Expressions
-
Menu
Expressionメニューをコピーします。 -
Parameters
Expressionパラメータをコピーします。
Pipeline Manager
- Blueprint ID
Blueprint ID(アバターに付与される一意のID)の値をコピーします。
Phys Bone
Phys Bones
Avatar TypeがVRoid Avatarの場合
以下の項目からコピーしたいPhys Boneを選択してコピー先アバターへコピーします。全てのPhys Boneをコピーする場合、全て選択してください。
-
髪の毛
ルートボーン名に「Hair」が含まれるPhys Boneをコピーします。 -
スカート
ルートボーン名に「Skirt」が含まれるPhys Boneをコピーします。 -
袖
ルートボーン名に「Sleeve」が含まれるPhys Boneをコピーします。 -
胸
ルートボーン名に「Bust」が含まれるPhys Boneをコピーします。 -
その他
上記以外のPhys Boneをコピーします。
Avatar TypeがOther Avatarの場合
- コピー元アバターに設定されている全てのPhys Boneをコピー先アバターへコピーします。
- コピー実行前に、コピー先アバターに設定されていたPhys Boneは削除されます。
Phys Bone Coliders
- コピー元アバターに設定されているPhys Bone Coliderをコピー先アバターへコピーします。
- コピー実行前に、コピー先アバターに設定されていたPhys Bone Coliderは削除されます。
Objects
- アバターに配置されているオブジェクトをコピーします。
- コピー元アバターとコピー先アバターのオブジェクト構造の差分を比較し、「コピー元に有りコピー先に無い」オブジェクトをコピーします。
- コピー元アバターとコピー先アバターのボーン構造が違う場合、ボーンが差分として検出されコピーされる恐れがあります。
Constraints
-
Aim
AimConstraintをコピーします。 -
Look At
LookAtConstraintをコピーします。 -
Parent
ParentConstraintをコピーします。 -
Position
PositionConstraintをコピーします。 -
Rotation
RotationConstraintをコピーします。 -
Scale
ScaleConstraintをコピーします。