# ContactGloveOSCトラブルシューティング

# ContactGloveOSC

アバターのアップロードに失敗する
  • 画像のようなエラーが出てアップロードに失敗する場合
    ContactGloveOSC_NoSetExpression_1

アバターのVRC Avatar Descriptor > Expressions に ExpressionMenu と ExpressionParameter が設定されていないことが原因です。

  • Customize もしくは None となり、設定されていない様子
    ContactGloveOSC_NoSetExpression_2
    ContactGloveOSC_NoSetExpression_3

上記に該当する場合は以下の手順に従って、追加のセットアップを行って下さい。

  1. UnityのAssets内で右クリックします。
  2. Create > VRChat > Avatars > ExpressionMenu をクリックしてVRCExpressionMenu.assetを作成します。
  3. 1.をもう一度行い、Create > VRChat > Avatars > ExpressionParameters をクリックしてVRCExpressionParameters.assetを作成します。
    ContactGloveOSC_NoSetExpression_4
  4. VRC Avatar DescriptorのExpressionsにExpressionMenuとExpressionParameterをそれぞれDrag&Dropでセットします。
    • Customizeとなっている場合は、Customizeボタンをクリックすると画像の様にセット先が表示されます。
      ContactGloveOSC_NoSetExpression_5
    • セット後
      ContactGloveOSC_NoSetExpression_6
  5. もう一度アバターのアップロードを行って下さい。
Write Defaultsについて
  • ギミック用Contorollerは Write Defaults = OFF で統一されています。
  • アバター側のControllerが Write Defaults = ON である場合にもギミックは動作しますが、それによる不具合等が起きた場合は、以下の手順でギミック用Contorollerの Write Defaults = ONにすることが出来ます。
    • ギミック動作が不安定になる可能性があるため、推奨は致しません。
  1. セットアップ後のアバター直下にある[ContactGloveOSC]~と名の付くPrefabをクリックします。

    TroubleShoot_WD_1

  2. InspectorにPrefabについたModular Avatarコンポーネントが表示されるので、画像の赤枠部分にチェックを入れます。

TroubleShoot_WD_2

※仕様上、”自動セットアップ/変更を元に戻す”操作、Prefab再配置のたびにチェックは初期化されます。

[ContactGloveOSC]をONにした後、すぐにOFFになってしまう

アバターに古いOSC設定が残っています。ActionMenu(リングメニュー)を開き、以下を実行してOSC設定を初期化してください。

  1. Options > OSC > トグルを "Disabled" にする。
  2. Options > OSC > "Reset Config" を押す。
  3. 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 ]"

自動セットアップ時に一瞬白いウィンドウが出現する

エディタ拡張の実装上の仕様となります。

ギミックを外してすべての変更を元に戻す場合
  1. HierarchyのアバターがAutomatic SetupウィンドウのAvatarフィールドにセットされていることを確認します。
  2. ウィンドウの「変更を元に戻す」 ボタンを押します。
  3. 画像の様に”現在の設定: Not Set ContactGloveOSC”とギミックが外れた旨が、ステータスに”[ AutomaticSetup ]: 全ての変更が元に戻りました。”と表示され、全ての変更が初期化されます。
    ContactGloveOSC_AutoSet_10
Full/Lite ver変更や、ハンドサイン設定等を後から変更したい場合
  1. ウィンドウのAvatarフィールドにAvatarがセットされていることを確認します。
  2. ウィンドウでFull/Lite ver変更や、ハンドサイン設定を変更します。
  3. そのまま「自動セットアップ」ボタンを押して下さい。
  4. 上手くいかない場合は一度「変更を元に戻す」ボタンを押し、全ての変更を初期化してから「自動セットアップ」を再度試してください。

# "Parameter Rename Tool / 手順[ 1 ]"

パラメータの変更を元に戻す場合
  1. HierarchyのアバターがAvatarフィールドにセットされていることを確認します。
  2. ウィンドウの「変更を元に戻す」 ボタンを押します。
  3. ステータスに”変更が正常に戻されました( 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を新規作成してください。

    1. Packages/com.vrchat.avatars/Samples/AV3 Demo Assets/Animation/Controllers/vrc_AvatarV3HandsLayer をクリックして選択します。
    2. ctrl + Dで1.のコントローラを複製します。
    3. 複製したコントローラを選択し、右クリック > Rename で任意の名前を付けます。
    4. ドラッグアンドドロップでAssets以下の任意のファイルに配置します。
    5. 配置したコントローラをアバターの下記へセットします。
    • VRC Avatar Descriptor > Playable Layer > Gesture / FX
    • フィールドがDefault Gesture / FX となっている場合、ボタンを押すとフィールドがNoneとなり、コントローラをセットできるようになります。

# "HandSign Copy Tool / 手順[ 2-2 ]"

コピー先Animationを一度リセットしたい場合

ウィンドウ下部の「ContactGlove用ハンドサインの初期化」ボタンを押してください。しばらくするとステータスに”Glove用Animationを全て初期化しました。”と表示され、コピー先Animationの初期化が完了します。

ContactGloveOSC_setup_16
"手動でフィールドにAnimationをセットしてください"とメッセージが出る場合

アバターにセットされているGestureコントローラの構造が特殊である場合、手動でAnimationをセットする必要があります。以下の手順にしたがってセットアップを行ってください。

  1. アバターの VRC Avatar Descriptor >Playable Layer > Gesture にセットされているコントローラを確認します。
ContactGloveOSC_setup_13
  1. 以下の手順に従い、表示されたGestureコントローラから左手用ハンドサインAnimationを確認し、HandSign Copy Tool > 左手用ハンドサインを選択 の対応する各フィールドに左手用ハンドサイン用Animationをそれぞれセットします。
  • 手順で示される、Gestureコントローラ内のハンドサインLayer内の構造は一例です。アバターによっては異なる構造である場合があります。

    • [ハンドサインAnimationセット手順]
      ContactGloveOSC_setup_14
      1. 3.でDoubleClickすると、Animatorタブが表示され、3.で確認したGestureコントローラの中身が表示されます。
      2. Avatarの左手用ハンドサインを設定しているLayerを見つけ、クリックします。
      3. Layer内のハンドサインStateの一つをクリックします。
      4. Inspectorにセットされている、ハンドサイン用Animationを確認します。
      5. HandSign Copy Toolウィンドウの、確認したハンドサインの種別に対応するフィールド端をクリックします。
      6. Select Animation Clipウィンドウが表示されるので、ウィンドウ上部にハンドサイン用Animationの名前を入力します。
      7. 4.で確認したハンドサイン用Animationを見つけ、クリックするとHandSign Copy Toolウィンドウのフィールドにセットされます。[※]
      8. 7つの各ハンドサインに対して3.~7.を繰り返します。

      • [※] Unity 2022でAnimationが見つけられない場合
        • Unity2022の仕様上、該当AnimationがPackageディレクトリ以下にある場合、Select Animation Clipウィンドウで名前を入力してもAnimationが表示されません。
        • 画像の様にSelect Animation Clipウィンドウ上の目のマークのボタンをクリックし、ボタンが暗くなるとPackageディレクトリ以下のAnimationが表示されるようになります。
          Unity2022_AnimationSelect
        • 表示切替はフィールド毎に行う必要があります。
  1. 4.と同様の手順で、HandSign Copy Tool > 右手用ハンドサインを選択 の対応する各フィールドに、4.で確認した右手用ハンドサイン用Animationをそれぞれセットします。

    • ハンドサイン用Animationが左手と同じものである場合
      • ウィンドウ右上の**「左手用ハンドサインを右手用にもセットする」**ボタンを押すと、右手用のフィールドに左手と同じAnimationがセットされます。
        ContactGloveOSC_setup_15
  2. ウィンドウ下部の 「ハンドサインをコピー」 ボタンを押し、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
  • [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

# "手順[ 3 ]"

GestureToggle ( OSC ) バインドの優先設定について
  • Gesture Toggle (OSC) バインドが有効であるとき、バインドは他のバインドに優先され、そのボタンに割り当てられた他のバインドは無効になります。

    • 例)”Aボタン バインド”にボタン(下)を割り当てている場合
      • ”Gesture Toggle (OSC) バインド”にボタン(下)を割り当てる
      • ”Gesture Toggle (OSC) バインド”が有効時に”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ボタン

GestureToggleOSC_Structure