Search Unity

[SOLVED] Cross-platform VR: Squashed input ranges on mobile VR touchpads

Discussion in 'AR/VR (XR) Discussion' started by BrendanLoBuglio, Apr 15, 2019.

  1. BrendanLoBuglio

    BrendanLoBuglio

    Joined:
    Apr 9, 2014
    Posts:
    6
    We're making a project that's launching on all the Android-based VR platforms -- Daydream, Oculus Go, Oculus Quest, etc. -- and we're using Unity's cross-platform XR functionality (TrackedPoseDrivers and Unity InputManager Buttons / Axes) so that we don't have to import the conflicting GVR and OVR plugins.

    Everything has been working really well so far, except that the Input.GetAxis and Input.GetAxisRaw mappings for the Daydream and Oculus Go touchpads are pretty far divorced from the position of the player's actual finger; the X and Y values increase very quickly as the finger moves from the center, and they hit their max of 1 while the finger is still 20-30% away from the edge on a given axis. This leads to data loss for where the finger is within those edges, and causes the input to move in a "square" when the finger makes a full revolution around the circumference of the circular touchpads. Meanwhile, the GVR and OVR plugins used to give us a very accurate finger position.

    Among other things, this inaccuracy makes it basically impossible to visualize the finger position on a virtual controller. Have other people experienced this issue, and do any of you know of workarounds for getting an accurate finger position?
     
  2. BrendanLoBuglio

    BrendanLoBuglio

    Joined:
    Apr 9, 2014
    Posts:
    6
    Update: I had 3x sensitivity set on the axis bindings in my Input Manager! I thought that GetAxisRaw circumvented this, but apparently it doesn't; resetting the sensitivity to 1 fixes the problem.

    I will leave this thread up (in my shame) in case it proves useful to others, but this problem is solved!
     
    JoeStrout likes this.