# ContactGloveOSCトラブルシューティング
# ContactGloveOSC
アバターのアップロードに失敗する
- 画像のようなエラーが出てアップロードに失敗する場合
アバターのVRC Avatar Descriptor > Expressions に ExpressionMenu と ExpressionParameter が設定されていないことが原因です。
- Customize もしくは None となり、設定されていない様子
上記に該当する場合は以下の手順に従って、追加のセットアップを行って下さい。
- UnityのAssets内で右クリックします。
- Create > VRChat > Avatars > ExpressionMenu をクリックしてVRCExpressionMenu.assetを作成します。
- 1.をもう一度行い、Create > VRChat > Avatars > ExpressionParameters をクリックしてVRCExpressionParameters.assetを作成します。
- VRC Avatar DescriptorのExpressionsにExpressionMenuとExpressionParameterをそれぞれDrag&Dropでセットします。
- Customizeとなっている場合は、Customizeボタンをクリックすると画像の様にセット先が表示されます。
- セット後
- もう一度アバターのアップロードを行って下さい。
Write Defaultsについて
- ギミック用Contorollerは Write Defaults = OFF で統一されています。
- アバター側のControllerが Write Defaults = ON である場合にもギミックは動作しますが、それによる不具合等が起きた場合は、以下の手順でギミック用Contorollerの Write Defaults = ONにすることが出来ます。
- ギミック動作が不安定になる可能性があるため、推奨は致しません。
セットアップ後のアバター直下にある[ContactGloveOSC]~と名の付くPrefabをクリックします。
InspectorにPrefabについたModular Avatarコンポーネントが表示されるので、画像の赤枠部分にチェックを入れます。
※仕様上、”自動セットアップ/変更を元に戻す”操作、Prefab再配置のたびにチェックは初期化されます。
[ContactGloveOSC]をONにした後、すぐにOFFになってしまう
アバターに古いOSC設定が残っています。ActionMenu(リングメニュー)を開き、以下を実行してOSC設定を初期化してください。
- Options > OSC > トグルを "Disabled" にする。
- Options > OSC > "Reset Config" を押す。
- Options > OSC > トグルを "Enabled" にする。
OSCハントラの有効化/無効化や、ハンドトラッキングが上手く作動しない
以下を満たさない場合、Modular Avatarでのギミックが上手く動きません。
- AvatarのExpressionMenu最上位に空きが一つある
- 空きがない場合はサブメニューを作成して項目を入れ子にする等、最上位のExpressionMenuスロットを削減してください。
- ギミック導入前のAvatarのExpressionParameterにおける、同期パラメータの利用bit数が以下を満たす
Full ver : 79bit以下
Lite ver : 149bit以下
- 超えている場合は利用する同期パラメータ数を削減してください。
Controller内のGesture関係のParameterを条件に含むアニメーション遷移 (Animation Transition)が破損している
- Rename Parameter Tool ( Automatic Setup ) でのパラメータ書き換え後に、ごく稀にアニメーション遷移 (Animation Transition)が破損する場合があります。
- ContactGloveOSCセットアップ時のパラメータ書き換え初回実行時には、Gesture/FX Controllerは名称接頭に"[ContactGloveOSC]"を付けて複製され、以後は複製したGesture/FX Controllerへパラメータ書き換えを実行する仕様になっています。
- お手数ですが、複製元のGesture/FX Controllerをそれぞれ以下にセットし、Rename Parameter Tool ( Automatic Setup ) でのセットアップを再度実行してください。
- アバターのVRCAvatarDescriptor > Playable Layer > Base > Gesture/FX
[ContactGloveOSC]をONにしているのに、GestureToggle(OSC)機能が動作しない
VRChat > DivingStation の順番で起動した場合は、ActionMenuを開き
Expressions > Quick Actions > Reset Avatar
を実行してください。
- ActionMenuから[ContactGloveOSC]を再度ONにする必要があります。
# "Automatic Setup Avatar / 手順[ 1 ]・[ 2 ]"
自動セットアップ時に一瞬白いウィンドウが出現する
エディタ拡張の実装上の仕様となります。
ギミックを外してすべての変更を元に戻す場合
- HierarchyのアバターがAutomatic SetupウィンドウのAvatarフィールドにセットされていることを確認します。
- ウィンドウの「変更を元に戻す」 ボタンを押します。
- 画像の様に”現在の設定: Not Set ContactGloveOSC”とギミックが外れた旨が、ステータスに”[ AutomaticSetup ]: 全ての変更が元に戻りました。”と表示され、全ての変更が初期化されます。
Full/Lite ver変更や、ハンドサイン設定等を後から変更したい場合
- ウィンドウのAvatarフィールドにAvatarがセットされていることを確認します。
- ウィンドウでFull/Lite ver変更や、ハンドサイン設定を変更します。
- そのまま「自動セットアップ」ボタンを押して下さい。
- 上手くいかない場合は一度「変更を元に戻す」ボタンを押し、全ての変更を初期化してから「自動セットアップ」を再度試してください。
# "Parameter Rename Tool / 手順[ 1 ]"
パラメータの変更を元に戻す場合
- HierarchyのアバターがAvatarフィールドにセットされていることを確認します。
- ウィンドウの「変更を元に戻す」 ボタンを押します。
- ステータスに”変更が正常に戻されました( Gesture用 & FX用パラメータ )”と表示され、パラメータ名が書き戻されます。
"Gesture/FX パラメータ '[パラメータ名]' が見つかりませんでした。"と出て、リネームが中止される
- Gesture / FX Controller に該当パラメータ("GestureLeft", "GestureRight", "GestureLeftWeight", "GestureRightWeight")が無い場合に発生します。
- アバターの以下のフィールドをダブルクリックすると、Animatorタブが出現しコントローラの中身が表示されます。
- VRC Avatar Descriptor > Base > Playable Layer > Gesture / FX
- Parametersを選択し、該当パラメータが正しい名前になっているかどうかを確認して下さい。
"Gesture/FX Controller が選択されていません!"と出て、リネームが中止される
アバターに設定された以下の項目
- VRC Avatar Descriptor > Base > Playable Layer > Gesture / FX Controller
- 上記が以下の様になっている場合に発生します。
- None / Default Gesture
- Playable LayarのCustomizeが無効 ( 全てのコントローラが設定されていない )
以下の手順でGesture / FX Controllerを新規作成してください。
- Packages/com.vrchat.avatars/Samples/AV3 Demo Assets/Animation/Controllers/vrc_AvatarV3HandsLayer をクリックして選択します。
- ctrl + Dで1.のコントローラを複製します。
- 複製したコントローラを選択し、右クリック > Rename で任意の名前を付けます。
- ドラッグアンドドロップでAssets以下の任意のファイルに配置します。
- 配置したコントローラをアバターの下記へセットします。
- VRC Avatar Descriptor > Playable Layer > Gesture / FX
- フィールドがDefault Gesture / FX となっている場合、ボタンを押すとフィールドがNoneとなり、コントローラをセットできるようになります。
# "HandSign Copy Tool / 手順[ 2-2 ]"
コピー先Animationを一度リセットしたい場合
ウィンドウ下部の「ContactGlove用ハンドサインの初期化」ボタンを押してください。しばらくするとステータスに”Glove用Animationを全て初期化しました。”と表示され、コピー先Animationの初期化が完了します。
"手動でフィールドにAnimationをセットしてください"とメッセージが出る場合
アバターにセットされているGestureコントローラの構造が特殊である場合、手動でAnimationをセットする必要があります。以下の手順にしたがってセットアップを行ってください。
- アバターの VRC Avatar Descriptor >Playable Layer > Gesture にセットされているコントローラを確認します。
- 以下の手順に従い、表示されたGestureコントローラから左手用ハンドサインAnimationを確認し、HandSign Copy Tool > 左手用ハンドサインを選択 の対応する各フィールドに左手用ハンドサイン用Animationをそれぞれセットします。
手順で示される、Gestureコントローラ内のハンドサインLayer内の構造は一例です。アバターによっては異なる構造である場合があります。
- [ハンドサインAnimationセット手順]
- 3.でDoubleClickすると、Animatorタブが表示され、3.で確認したGestureコントローラの中身が表示されます。
- Avatarの左手用ハンドサインを設定しているLayerを見つけ、クリックします。
- Layer内のハンドサインStateの一つをクリックします。
- Inspectorにセットされている、ハンドサイン用Animationを確認します。
- HandSign Copy Toolウィンドウの、確認したハンドサインの種別に対応するフィールド端をクリックします。
- Select Animation Clipウィンドウが表示されるので、ウィンドウ上部にハンドサイン用Animationの名前を入力します。
- 4.で確認したハンドサイン用Animationを見つけ、クリックするとHandSign Copy Toolウィンドウのフィールドにセットされます。[※]
- 7つの各ハンドサインに対して3.~7.を繰り返します。
- [※] Unity 2022でAnimationが見つけられない場合
- Unity2022の仕様上、該当AnimationがPackageディレクトリ以下にある場合、Select Animation Clipウィンドウで名前を入力してもAnimationが表示されません。
- 画像の様にSelect Animation Clipウィンドウ上の目のマークのボタンをクリックし、ボタンが暗くなるとPackageディレクトリ以下のAnimationが表示されるようになります。
- 表示切替はフィールド毎に行う必要があります。
- [ハンドサインAnimationセット手順]
4.と同様の手順で、HandSign Copy Tool > 右手用ハンドサインを選択 の対応する各フィールドに、4.で確認した右手用ハンドサイン用Animationをそれぞれセットします。
- ハンドサイン用Animationが左手と同じものである場合
- ウィンドウ右上の**「左手用ハンドサインを右手用にもセットする」**ボタンを押すと、右手用のフィールドに左手と同じAnimationがセットされます。
- ハンドサイン用Animationが左手と同じものである場合
ウィンドウ下部の 「ハンドサインをコピー」 ボタンを押し、Animationをコピーします。
- statusにコピー元Animationとコピー先Animationの名称、コピーが完了した旨が表示されます
一部ハンドサイン用AnimationがNone / 一部ハンドサインにAnimationを設定せず、ハンドトラッキングを継続したい場合
HandSign Copy Toolウィンドウの該当フィールドを空のままにします。
[ContactGloveOSC]AutoSet_HandSign を利用している場合
- Packages/ContactGloveOSC/Runtime/Gesture/HandSign[Experimental]/BlendTree
- [ContactGloveOSC] BlendHandSign_L
- [ContactGloveOSC] BlendHandSign_R
- 上のBlendTree内の該当AnimationがセットされているMotionフィールドに、それぞれPackages/ContactGloveOSC/Runtime/Gesture/FingerAnim/BlendTree/Defaultにある以下のBlendTreeをセットします。
- BlendHandSign_Lのフィールドの場合:/Left/[ContactGloveOSC] FingerBlend_L
- BlendHandSign_Rのフィールドの場合:/Right/[ContactGloveOSC] FingerBlend_R
- Packages/ContactGloveOSC/Runtime/Gesture/HandSign[Experimental]/BlendTree
[ContactGloveOSC]Lite_AutoSet_HandSign を利用している場合
- Packages/ContactGloveOSC/Runtime/Gesture/HandSign[Experimental]/BlendTreeにある
- [ContactGloveOSC] BlendHandSign_L_Lite
- [ContactGloveOSC] BlendHandSign_R_Lite
- 上のBlendTree内の該当AnimationがセットされているMotionフィールドに、それぞれPackages/ContactGloveOSC/Runtime/Gesture/FingerAnim/BlendTree/Liteにある以下のBlendTreeをセットします。
- BlendHandSign_L_Liteのフィールドの場合:/Left/[ContactGloveOSC] FingerBlend_L
- BlendHandSign_R_Liteのフィールドの場合:/Right/[ContactGloveOSC] FingerBlend_R
- Packages/ContactGloveOSC/Runtime/Gesture/HandSign[Experimental]/BlendTreeにある
# "手順[ 3 ]"
GestureToggle ( OSC ) バインドの優先設定について
Gesture Toggle (OSC) バインドが有効であるとき、バインドは他のバインドに優先され、そのボタンに割り当てられた他のバインドは無効になります。
- 例)”Aボタン バインド”にボタン(下)を割り当てている場合
- ”Gesture Toggle (OSC) バインド”にボタン(下)を割り当てる
- ”Gesture Toggle (OSC) バインド”が有効時に”Aボタン バインド”は無効化されます。
- 例)”Aボタン バインド”にボタン(下)を割り当てている場合
Gesture Toggle (OSC) バインドは以下をすべて満たす場合のみ有効になり、それ以外では自動的に無効になります。
- Gesture Toggle (OSC) バインド 割り当て時
- VRChat起動時
- ContactGloveOSCセットアップ済みアバター装着時
- VRChat内ActionMenu > Options > OSC > "Enabled"
- VRChat内ActionMenu > Expressions > [ContactGloveOSC]Enable = True ( ON )
GestureToggle (OSC) の挙動詳細
以下の条件の場合の図となります。
DivingStationでGesture Toggle (OSC) にバインドされたボタン
= VRChatでGestureToggleにバインドされたボタン
= Aボタン