Skip to main content
New Participant
November 24, 2020

[Unity] OVR Avatar shows wrong controllers on quest 2

Hi,
I'm trying to show the users controllers with ovr avatar in unity.
On quest 2 it shows the original rift controllers.
Is this normal / is there a way to fix this ? I've already tried to regenerate the manifest file.

It works fine on other devices (quest / rift s / rift)

    11 replies

    Inspiring
    December 10, 2020


    Hi,
    I'm trying to show the users controllers with ovr avatar in unity.
    On quest 2 it shows the original rift controllers.
    Is this normal / is there a way to fix this ? I've already tried to regenerate the manifest file.

    It works fine on other devices (quest / rift s / rift)


    Same issue - did you manage to fix it?
    Participant
    February 3, 2021
    Same issue here, Rift Touch controllers showing on Quest 2 when using OvrAvatar.
    Using Unity 2018.4..22f1 and Oculus Integration 23.1 (Dec 22nd 2020). 

    OVRControllerHelper debug shows the correct controller type being detected:
    OVRControllerHelp: Active controller type: Quest2 for product Oculus Quest
    The OVRControllerHelper also contains the correct references to OculusTouchForQuest2 models, but still the Rift Touch controller is shown when built for the Quest 2.

    Anyone an idea on how to fix this?
    Up and Coming
    April 3, 2021

    Adding Quest 2 controller support will depend on how you have implemented controllers in your app.

     

    If you are using OVRControllerPrefab from the Oculus SDK then it should "just work". They have already updated this script (OVRControllerHelper) and prefab to support the Quest 2 controllers. The actual controller models, animations, and materials can be found in:

    Oculus/VR/Meshes/OculusTouchForQuest2/*

     

    If you are using the Oculus Avatar system and the Local Avatar prefab for controller support (which is necessary to see your hands on the controllers), unfortunately this is not yet supported by the Oculus Avatar SDK. I suggest you implement a short-term work around to show the Quest 1 controllers on Quest 2 rather than the Rift CV1 controllers:

    Below OvrAvatarDriver.cs:77 (in OvrAvatarDriver.Start()) add

     

    case OVRPlugin.SystemHeadset.Oculus_Quest_2

     

     

    Oculus needs to update the Avatar SDK in order to support Quest 2 controller rendering with hands because the Avatar SDK's C API is responsible for setting the controller model. I downloaded the headers for the C API of the Avatar SDK and confirmed that no enum value exists for the Quest 2. See:

    // Oculus Unity integration
    OvrAvatarDriver.UpdateTransformsFromPose(IntPtr sdkAvatar)
    
    // Oculus Avatars SDK C-API
    /// Controller Types
    ///
    typedef enum ovrAvatarControllerType_ {
      ovrAvatarControllerType_Touch,
      ovrAvatarControllerType_Malibu,
      ovrAvatarControllerType_Go,
      ovrAvatarControllerType_Quest,
    
      ovrAvatarControllerType_Count,
    } ovrAvatarControllerType;

    Any attempt to work around this limitation would likely get really hairy and I don't recommend it. Oculus is building a new avatar system for Horizon which will eventually roll out to the rest of us. It's possible that they haven't noticed this support is missing because they're using the new SDK internally?

    New Participant
    April 7, 2021

    Great find! Unfortunately this only enables Quest 1 Controllers. Did you find out how to display the white controllers?

    Up and Coming
    April 10, 2021

    I updated my reply with more information regarding Quest 2 controller support.

    Up and Coming
    May 22, 2021

    ny update from Oculus on this? Would be great to get Quest controllers in the Avatar system...

    Up and Coming
    November 26, 2021

    I just tried it and did not work for me (no controllers rendered in game)