# ContactGloveOSC Troubleshooting

# ContactGloveOSC

Failure to Upload Avatar
  • If you encounter an error like the one shown in the image, the upload may fail.
    ContactGloveOSC_NoSetExpression_1

The cause is that ExpressionMenu and ExpressionParameter are not set in the VRC Avatar Descriptor > Expressions for the avatar.

  • It shows as Customize or None, indicating that it is not configured.
    ContactGloveOSC_NoSetExpression_2
    ContactGloveOSC_NoSetExpression_3

If the above applies, please follow these steps for additional setup.

  1. Right-click within Unity's Assets.
  2. Choose Create > VRChat > Avatars > Click on ExpressionMenu to create VRCExpressionMenu.asset.
  3. Repeat step 1, and choose Create > VRChat > Avatars > Click on ExpressionParameters to create VRCExpressionParameters.asset.
    ContactGloveOSC_NoSetExpression_4
  4. Drag & Drop ExpressionMenu and ExpressionParameter onto the Expressions section of the VRC Avatar Descriptor.
    • If it shows Customize, clicking the Customize button will display the destination for the set, as shown in the image.
      ContactGloveOSC_NoSetExpression_5
    • After setting
      ContactGloveOSC_NoSetExpression_6
  5. Perform the avatar upload once again.
About Write Defaults
  • The Gimmick Controller is unified with Write Defaults = OFF.
  • Even if the Avatar's Controller is set to Write Defaults = ON, the gimmick will still work. However, if any issues occur, you can set the Gimmick Controller's Write Defaults to ON using the following steps.
    • Due to the potential instability of gimmick behavior, it is not recommended.
  1. Click on the Prefab named [ContactGloveOSC] located directly under the Avatar after setup.

    TroubleShoot_WD_1

  2. In the Inspector, check the red-boxed area of the Modular Avatar component attached to the Prefab.

TroubleShoot_WD_2

*Note: The check will be reset after each automatic setup/change operation and Prefab relocation.

[ContactGloveOSC] turns ON but immediately turns OFF

There are old OSC settings remaining on the Avatar. Open the ActionMenu (Ring Menu) and perform the following steps to reset the OSC settings.

  1. Options > OSC > Toggle to "Disabled."
  2. Options > OSC > Press "Reset Config."
  3. Options > OSC > Toggle to "Enabled."
Issues with enabling/disabling OSC handlers or Hand Tracking not working properly

Modular Avatar gimmicks may not work properly if the following conditions are not met:

  • There is an empty slot at the top level of the Avatar's Expression Menu.
    • If there is no empty slot, reduce the top-level Expression Menu slots by creating submenus and nesting items.
  • The bit usage of synchronization parameters in the Avatar's ExpressionParameter before introducing the gimmick meets the following criteria:
    • Full ver: Below 79 bits

    • Lite ver: Below 149 bits

      • If exceeded, reduce the number of synchronized parameters in use.
Animation Transitions containing Gesture-related Parameters in the Controller are corrupted
  • Rarely, Animation Transitions may become corrupted after parameter modification with the Rename Parameter Tool (Automatic Setup).
  • During the initial execution of parameter modification during ContactGloveOSC setup, Gesture/FX Controllers are duplicated with the prefix "[ContactGloveOSC]" and subsequent parameter modifications are applied to the duplicated Gesture/FX Controllers.
  • Please set the original Gesture/FX Controllers to the following and rerun the setup with the Rename Parameter Tool (Automatic Setup).
    • Avatar's VRCAvatarDescriptor > Playable Layer > Base > Gesture/FX
[ContactGloveOSC] is ON, but GestureToggle (OSC) function is not working

If you launched VRChat > DivingStation in that order, open the ActionMenu and execute Expressions > Quick Actions > Reset Avatar.

  • GestureToggle [ContactGloveOSC] needs to be turned ON again from the ActionMenu.

# "Automatic Setup Avatar / Step[ 1 ]・[ 2 ]"

White window briefly appears during automatic setup

This is a specification of the editor extension implementation.

To revert all changes without removing gimmicks
  1. Confirm that the Avatar in the Hierarchy is set in the Avatar field of the Automatic Setup window.
  2. Click the "Revert Changes" button in the window.
  3. The status will display "[AutomaticSetup]: All changes have been reverted to the original state," and the settings will be reset, as shown in the image below.
    ContactGloveOSC_AutoSet_10
If you want to change Full/Lite version or Hand Sign settings later
  1. Confirm that the Avatar is set in the Avatar field of the window.
  2. Make changes to Full/Lite version or Hand Sign settings in the window.
  3. Press the "Auto Setup" button without making any changes.
  4. If it doesn't work, press the "Revert Changes" button once, reset all changes, and then try "Auto Setup" again.

# "Parameter Rename Tool / Step[ 1 ]"

To revert parameter changes
  1. Confirm that the Avatar is set in the Avatar field of the window.
  2. Press the "Revert Changes" button in the window.
  3. The status will display "Changes have been successfully reverted (Gesture and FX parameters)," and the parameter names will be restored.
Error: "Gesture/FX Parameter '[Parameter Name]' not found!" and renaming is aborted
  • This occurs when the specified parameter ("GestureLeft," "GestureRight," "GestureLeftWeight," "GestureRightWeight") is not found in the Gesture/FX Controller.
  • Double-click on the following fields of the Avatar to reveal the Animator tab and view the contents of the controller.
    • VRC Avatar Descriptor > Base > Playable Layer > Gesture / FX
  • Select Parameters and check if the specified parameters have the correct names.
Error: "No Gesture/FX AnimatorController selected!" and renaming is aborted
  • This occurs when the following items set on the Avatar are as follows:

    • VRC Avatar Descriptor > Base > Playable Layer > Gesture / FX Controller
    • The above is set to one of the following:
      • None / Default Gesture
      • Playable Layer Customize is disabled (no controllers are set)
  • Follow these steps to create a new Gesture / FX Controller:

    1. Click on Packages/com.vrchat.avatars/Samples/AV3 Demo Assets/Animation/Controllers/vrc_AvatarV3HandsLayer.
    2. Duplicate the controller from step 1 by pressing ctrl + D.
    3. Select the duplicated controller, right-click > Rename, and give it any name.
    4. Drag and drop the duplicated controller into any file under Assets.
    5. Set the controller in the following locations on the Avatar:
    • VRC Avatar Descriptor > Playable Layer > Gesture / FX
    • If the field shows Default Gesture / FX, pressing the button will change the field to None, allowing you to set the controller.

# "HandSign Copy Tool / Step[ 2-2 ]"

If you want to reset the destination Animation before copying

Press the "Initialize ContactGlove Gesture Animations" button at the bottom of the window. After a while, the status will display "All Glove Animations have been initialized," indicating the completion of the destination Animation initialization.

ContactGloveOSC_setup_16
If you see the message "Refer to the Document and manually set the Animation to the field."

If the structure of the Gesture Controller set on the Avatar is complex, you may need to manually set the Animation. Follow these steps to perform the setup:

  1. Confirm the controller set in VRC Avatar Descriptor > Playable Layer > Gesture on the Avatar.

    ContactGloveOSC_setup_13

  2. Follow the steps below and set up the left-hand Gesture Animation from the displayed Gesture Controller in the window to the corresponding fields of HandSign Copy Tool > Select Left HandSign.

    • The structure inside the Gesture Controller's HandSign Layer shown in the steps is just an example. The structure may vary depending on the Avatar.

    • [Steps to set HandSign Animation]

      ContactGloveOSC_setup_14

      1. Double-clicking in step 3 will display the Animator tab, showing the contents of the Gesture Controller confirmed in step 3.
      2. Find the Layer setting the left-hand Gesture in the Avatar and click it.
      3. Click one of the HandSign States in the Layer.
      4. Check the Animation set in the Inspector for the HandSign.
      5. Click the edge of the field corresponding to the type of the confirmed HandSign in the HandSign Copy Tool window.
      6. The Select Animation Clip window will appear. Enter the name of the HandSign Animation at the top of the window.
      7. Find and click on the HandSign Animation confirmed in step 4, and it will be set in the field of the HandSign Copy Tool window. [※]
      8. Repeat steps 3-7 for each of the 7 HandSigns.

      • [※] If Animation cannot be found in Unity 2022
        • Due to the specifications of Unity 2022, if the Animation is located in the Package directory, entering the name in the Select Animation Clip window will not display the Animation.
        • Click the eye icon button on the Select Animation Clip window as shown in the image, and the Animations in the Package directory will be displayed.
          Unity2022_AnimationSelect
        • The display switching needs to be done for each field.
  3. In the same way, set the right-hand Gesture Animation confirmed in step 4 in the corresponding fields of HandSign Copy Tool > Select Right Source Gesture Animation.

    • If the HandSign Animation is the same for both hands
      • Press the "Set Left for Right Gesture Animation" button in the upper right corner of the window, and the same Animation will be set in the fields for the right hand.
        ContactGloveOSC_setup_15
  4. Press the "Copy Gesture Animations" button at the bottom of the window to copy the Animations.

    • The status will display the names of the source and destination Animations, indicating that the copy is complete.
If some HandSign Animations are None / If you want to continue Hand Tracking without setting Animations for some HandSigns

Leave the corresponding fields in the HandSign Copy Tool window empty.

  • If using [ContactGloveOSC]AutoSet_HandSign

    • In Packages/ContactGloveOSC/Runtime/Gesture/HandSign[Experimental]/BlendTree, for the following BlendTrees:
      • [ContactGloveOSC] BlendHandSign_L
      • [ContactGloveOSC] BlendHandSign_R
    • Set the Motion field, which contains the corresponding Animation, to the following BlendTrees in Packages/ContactGloveOSC/Runtime/Gesture/FingerAnim/BlendTree/Default:
      • For the BlendHandSign_L field: /Left/[ContactGloveOSC] FingerBlend_L
      • For the BlendHandSign_R field: /Right/[ContactGloveOSC] FingerBlend_R
  • If using [ContactGloveOSC]Lite_AutoSet_HandSign

    • In Packages/ContactGloveOSC/Runtime/Gesture/HandSign[Experimental]/BlendTree, for the following BlendTrees:
      • [ContactGloveOSC] BlendHandSign_L_Lite
      • [ContactGloveOSC] BlendHandSign_R_Lite
    • Set the Motion field, which contains the corresponding Animation, to the following BlendTrees in Packages/ContactGloveOSC/Runtime/Gesture/FingerAnim/BlendTree/Lite:
      • For the BlendHandSign_L_Lite field: /Left/[ContactGloveOSC] FingerBlend_L
      • For the BlendHandSign_R_Lite field: /Right/[ContactGloveOSC] FingerBlend_R

# "Step[ 3 ]"

Priority Settings for Gesture Toggle (OSC) Binding
  • When Gesture Toggle (OSC) binding is enabled, it takes precedence over other bindings, and any other bindings assigned to that button are disabled.

    • Example: If assigning the button (Down) to "A Button Binding"
      • Assign the button (Down) to "Gesture Toggle (OSC) Binding"
      • When "Gesture Toggle (OSC) Binding" is active, "A Button Binding" is disabled.
  • Gesture Toggle (OSC) Binding is only active under the following conditions and automatically becomes inactive otherwise.

    • When Gesture Toggle (OSC) Binding is assigned
    • VRChat is launched
    • Avatar with ContactGloveOSC setup is worn
    • VRChat ActionMenu > Options > OSC > "Enabled"
    • VRChat ActionMenu > Expressions > [ContactGloveOSC]Enable = True (ON)
Behavior Details of Gesture Toggle (OSC)

The diagram below illustrates the conditions for the following scenario.
Button bound to Gesture Toggle (OSC) on DivingStation
= Button bound to GestureToggle in VRChat
= A Button

GestureToggleOSC_Structure