Search Unity

Quest update breaks input and hand tracking

Discussion in 'AR/VR (XR) Discussion' started by PsychoStuey, Jul 26, 2019.

  1. PsychoStuey

    PsychoStuey

    Joined:
    Mar 4, 2015
    Posts:
    13
    Hey all, this morning my Quest received the tracking update. I went to test it with my project and suddenly.. no input detected.

    Oh yeh, and only one controller tracks at a time now. I can pick which controller gets tracked by holding a button on that controller down.

    Finally, the peripherals of the screen seem to get cut off.. before the edges were noticeably curved, now they are straight edges which results in some of the fov being cut off.

    Anybody come across this problem or have a fix? I'm using just the normal unity input system and the legacy XR helpers (Tracked pose drivers).
     
    enhawk and jewingo like this.
  2. PsychoStuey

    PsychoStuey

    Joined:
    Mar 4, 2015
    Posts:
    13
    For anyone else who has this problem, someone on reddit gave me the solution: With oculus beginning to add go emulation support, my app was being treated as a go app. You need to alter the android manifest and put it in Assets/Plugins/Android/.

    More specifically, the manifest needs to include <uses-feature android:name="android.hardware.vr.headtracking" android:required="true" android:version="1" />

    https://developer.oculus.com/documentation/quest/latest/concepts/mobile-native-manifest/
    https://docs.unity3d.com/Manual/android-manifest.html
     
  3. JoeStrout

    JoeStrout

    Joined:
    Jan 14, 2011
    Posts:
    9,859
    Thanks for posting this. I'm sure I would be running into this soon and would have been just as baffled.
     
  4. jewingo

    jewingo

    Joined:
    Oct 24, 2018
    Posts:
    4
    Any more info on this problem? I've added a custom manifest with the specified and also provided an edited gradle with the correct SDK references but I'm still getting "GearVR or Go = True Quest = False" when OVRGradleGeneration is triggered.
     
    pocketmikey likes this.
  5. tjeerdnet

    tjeerdnet

    Joined:
    Jul 20, 2019
    Posts:
    1
    @PsychoStuey thanks for your solution, I also just updated the Unity editor to v2019.1.12f to be sure, so at least this combination of a new Unity editor and the Android manifest file update works for me.

    I spent my whole day off yesterday to get movement working and I could barely move. When moving my thumbstick I could only move forward a few cm.'s in the virtual world instead of meters. I also noticed that sideloaded apps like QuakeVR and Pavlor VR were behaving very weird with movement or not reacting at all. So I expect a lot of apps having issues now.
     
  6. brichard0625

    brichard0625

    Joined:
    Dec 18, 2016
    Posts:
    26
    OMG im so happy I ran into this thread, I was ready to throw my Laptop out of the window. I spent about 12 hours trying to figure this out. Thank you so much
     
    P_Jong likes this.
  7. brichard0625

    brichard0625

    Joined:
    Dec 18, 2016
    Posts:
    26
    If anybody runs into this issue just these are steps I took to get this working.
    1. Make sure OVR camera is set to oculus quest not go/gear vr.
    2. Make sure you have a folder named plugins with another folder innside named android and in the android folder is where the manifest belongs. Don't have a manifest. Just go to your project folder>Temp>Staging Area. There should be an android manifest that you can copy and paste into the Plugins>Android folder.
    3. Add <uses-feature android:name="android.hardware.vr.headtracking" android:required="true" android:version="1" />
    to the manifest.
     
  8. jewingo

    jewingo

    Joined:
    Oct 24, 2018
    Posts:
    4
    Thank you! After failing to have any luck with the other solutions this did the trick.
     
  9. ButteredPotato

    ButteredPotato

    Joined:
    May 23, 2019
    Posts:
    2
    Bump. Spent about eight hours this past weekend trying to figure out why my hands just stopped working. These instructions fixed the issue.
     
  10. Bovine

    Bovine

    Joined:
    Oct 13, 2010
    Posts:
    195
    I'm really hoping that this explains why none of my new input classes are working on the device - I've bee debugging this for days only remembering that there was a controller update tonight....

    FYI to get the latest plugin via plugin manager (1.38.1 at the time of writing) I had to upgrade unity (to 2019.1.12f1). This is different to the Menu -> Oculus -> Tools -> Update OVR Utilities Plugin, or at least, that still returns 1.36

    Yep, adding that line and using a custom manifest, I now get 2d axis co-ordinates. I may add a gradle mod so that this line is always added and no custom manifest is then required.
     
    Last edited: Jul 30, 2019
    ROBYER1 likes this.
  11. enhawk

    enhawk

    Joined:
    Aug 22, 2013
    Posts:
    833
    thanks for this, have been wondering why it kept defaulting to Go setup
     
    snobalpaul likes this.
  12. ROBYER1

    ROBYER1

    Joined:
    Oct 9, 2015
    Posts:
    1,454
    What does this mean for us if we develop an app to run on the Oculus Go AND the Oculus Quest separately using native Unity VR? Will be getting an Oculus Go soon to test and compare
     
  13. kblood

    kblood

    Joined:
    Jun 20, 2012
    Posts:
    92
    I like this solution best. Saves you from having to build your project.

    https://developer.oculus.com/documentation/quest/latest/concepts/mobile-native-manifest/

    Find the AndroidManifest.xml file in the Plugins/Android folder. Then update the least 2 lines with this:

    Code (CSharp):
    1.     </application>
    2.   <uses-feature android:name="android.hardware.vr.headtracking" android:required="true" android:version="1" />
    3.   <uses-feature android:glEsVersion="0x00030001" />
    4. </manifest>
    That is insert the two lines:

    <uses-feature android:name="android.hardware.vr.headtracking" android:required="true" android:version="1" />
    <uses-feature android:glEsVersion="0x00030001" />

    between the application and manifest lines. Then you do not need the full manifest generated, which will properly work better in the long run.
     
    BrainSlugs83 likes this.
  14. kblood

    kblood

    Joined:
    Jun 20, 2012
    Posts:
    92
    I suspect you will have to make two different builds... but not sure. Seems likely you would have to do that anyway though?
     
  15. Javier_Gromep

    Javier_Gromep

    Joined:
    Jul 16, 2017
    Posts:
    5
    Hi, Oculus should get an asset update for Unity 3D, right? Do you know when?

    Thank you!!!
     
  16. smallg2023

    smallg2023

    Joined:
    Sep 2, 2018
    Posts:
    144
    tried to follow the instructions but it's still not working for me, i still get the one controller only + square display...
    can anyone point out what i'm doing wrong?
    i didn't have any plugin folder so i made one and added the android folder inside, made a file (tried naming it manifest.xml and copying the names from my temp/staging area folder but didn't make any difference - though all import fine)
    tried copy pasting the code
    Code (CSharp):
    1. <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.DefaultCompany.FNRemake"
    2. android:versionCode="1" android:versionName="1.0" android:installLocation="auto">
    3. <application>
    4. <meta-data android:name="com.samsung.android.vr.application.mode" android:value="vr_only"/>
    5. <activity android:screenOrientation="landscape"
    6.      android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
    7.      android:configChanges="density|keyboard|keyboardHidden|navigation|orientation|screenLayout|screenSize|uiMode"
    8.      android:launchMode="singleTask"
    9.      android:resizeableActivity="false">
    10. </activity>
    11. </application>
    12. <uses-feature android:name="android.hardware.vr.headtracking" android:required="true" android:version="1" />
    13. <uses-feature android:glEsVersion="0x00030001" />
    14. </manifest>
    or
    Code (CSharp):
    1. <?xml version="1.0" encoding="utf-8"?>
    2. <!-- GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN-->
    3. <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.DefaultCompany.FNRemake" xmlns:tools="http://schemas.android.com/tools" android:installLocation="auto">
    4.   <supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:xlargeScreens="true" android:anyDensity="true" />
    5.   <application android:label="@string/app_name" android:icon="@mipmap/app_icon" />
    6.     <uses-feature android:name="android.hardware.vr.headtracking" android:required="true" android:version="1" />
    7.     <uses-feature android:glEsVersion="0x00030001" />
    8. </manifest>
    neither made any difference.
    i'm using unity 2019.3.0a7

    if i call the file AndroidManifest.xml it returns an error after trying to build
    "UnityException: Could not find any valid targets to launch on for Android"
    but it exports to my quest if i use another name... just doesn't fix the tracking issue
     

    Attached Files:

    Last edited: Aug 1, 2019
  17. Javier_Gromep

    Javier_Gromep

    Joined:
    Jul 16, 2017
    Posts:
    5
    Hi, you have to create those folders in the "assets" directory. Then you must go to "C: \ Program Files \ Unity \ Hub \ Editor \ (or the version you use) 2019.1.12f1 \ Editor \ Data \ PlaybackEngines \ AndroidPlayer \ Apk" and copy that "AndroidManifest.xml" into the folder " Assets / plugins / Android "that you have created.
    Now you must open that manifest and add these lines:

    Code (CSharp):
    1.    </application>
    2.   <uses-feature android:name="android.hardware.vr.headtracking" android:required="true" android:version="1" />
    3.   <uses-feature android:glEsVersion="0x00030001" />
    4. </manifest>
    That's how it works for me but my hands don't appear. Even so I can manipulate objects and everything else.
     
    patrickxr likes this.
  18. patrickxr

    patrickxr

    Joined:
    Dec 13, 2018
    Posts:
    2
    Thanks,this worked for me.
     
  19. Javier_Gromep

    Javier_Gromep

    Joined:
    Jul 16, 2017
    Posts:
    5
    All right! :):):) Now to wait for an update of the Oculus asset ... Because this, although it works, is a fudge ...
     
  20. AlanOToole

    AlanOToole

    Joined:
    Sep 7, 2013
    Posts:
    132
    For those who are still struggling with this, it looks like the latest Oculus integrations if you go to Oculus -> Tools -> Create store-compatible AndroidManifest.xml has the fixes in the XML already. I was able to just click that, it build out the Plugins/Android folder along with the correct lines for headtracking, etc.

    Hope this helps!
    Alan
     
  21. Javier_Gromep

    Javier_Gromep

    Joined:
    Jul 16, 2017
    Posts:
    5
    Yes, I think that's better, thanks!
     
    Last edited: Aug 2, 2019
  22. Schneider21

    Schneider21

    Joined:
    Feb 6, 2014
    Posts:
    3,512
    You do not want to wait for Oculus to fix stuff. There'll be another update to the integration in another month or so, but it's less likely to fix old issues and more likely to only introduce new problems.
     
  23. mitikalicenses

    mitikalicenses

    Joined:
    Feb 7, 2019
    Posts:
    3
    We are experiencing some issues with the controllers too.
    We use this same solution on desktop and the Esc button was supposed to close the app.
    Now, after the update, if we press the B button, the app closes...
     
  24. smallg2023

    smallg2023

    Joined:
    Sep 2, 2018
    Posts:
    144
    still didn't work for me unfortunately, gets to exporting to my quest then errors with "no valid launch targets"

    thank you! this works fine, had my folder in the right place but didn't realise there was an androidmanifest file in the unity folders so now it works fine again :)
    as for the missing hands/controllers, no problem indeed, we can parent the anchors from the prefabs
     
  25. EXP_Dev

    EXP_Dev

    Joined:
    Jun 9, 2016
    Posts:
    6
    I have the same issue, will try this fix tonight
     
  26. docas

    docas

    Joined:
    Aug 28, 2013
    Posts:
    28
    Its a pitty that none of the solutions work for me

    even with a simple scene with Ovr CamRig & A
    vatar hands

    - Tried remove & Create Store Compatible manifest
    -Tried add "missing lines" to manifest both on "Assets / plugins / Android" & "C: \ Program Files \ Unity \ Hub \ Editor \ (or the version you use) 2019.1.12f1 \ Editor \ Data \ PlaybackEngines \ AndroidPlayer \ Apk"
    -Tried boot computer & Unity
    -Tried upgrade unity3d to 2019.2.0f1
    -Tried add App Id from oculus

    Still getting this message

    before the oculus upgrade everything (even some complex scenes) was ok

    anybody else in the same situation?

    ovr-error.jpg
     
  27. smallg2023

    smallg2023

    Joined:
    Sep 2, 2018
    Posts:
    144
    i got that error when my manifest was wrong (seems like it's missing some data in there), perhaps you can try mine and see if it helps
    name it AndroidManifest.xml and place it in your project folder under Assets/Plugins/Android folder
    Code (CSharp):
    1. <?xml version="1.0" encoding="utf-8"?>
    2. <manifest
    3.     xmlns:android="http://schemas.android.com/apk/res/android"
    4.     package="com.unity3d.player"
    5.     xmlns:tools="http://schemas.android.com/tools"
    6.     android:installLocation="preferExternal">
    7.     <supports-screens
    8.         android:smallScreens="true"
    9.         android:normalScreens="true"
    10.         android:largeScreens="true"
    11.         android:xlargeScreens="true"
    12.         android:anyDensity="true"/>
    13.  
    14.     <application
    15.         android:theme="@style/UnityThemeSelector"
    16.         android:icon="@mipmap/app_icon"
    17.         android:label="@string/app_name">
    18.         <activity android:name="com.unity3d.player.UnityPlayerActivity"
    19.                   android:label="@string/app_name">
    20.             <intent-filter>
    21.                 <action android:name="android.intent.action.MAIN" />
    22.                 <category android:name="android.intent.category.LAUNCHER" />
    23.             </intent-filter>
    24.             <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
    25.         </activity>
    26.     </application>
    27.         <uses-feature android:name="android.hardware.vr.headtracking" android:required="true" android:version="1" />
    28.   <uses-feature android:glEsVersion="0x00030001" />
    29. </manifest>
     
    efadah, PiFLYON and docas like this.
  28. docas

    docas

    Joined:
    Aug 28, 2013
    Posts:
    28
    Wow, perfect, everything is running ok now
    Thanks Gary
     
  29. Javier_Gromep

    Javier_Gromep

    Joined:
    Jul 16, 2017
    Posts:
    5
    : oops:: oops:: oops:

    Patience...
     
  30. chad_unity279

    chad_unity279

    Joined:
    Aug 12, 2019
    Posts:
    3
    Wow, thank you @garytrickett this is actually kind of crazy that we had to jump through this loop hole to make it work...

    How else would we get it to work if not for this...
     
  31. Corysia

    Corysia

    Joined:
    Mar 14, 2018
    Posts:
    108
  32. Corysia

    Corysia

    Joined:
    Mar 14, 2018
    Posts:
    108
    All that means is that your app won't autostart on "build and deploy". You can just go to Unknown Sources and launch your app -- and hope Oculus starts to QA their stuff for a change.
     
  33. xeroproject

    xeroproject

    Joined:
    Aug 15, 2019
    Posts:
    3
    I was able to get this working thanks for the info. One question though when I use the right control stick to turn left or right it only snaps to 4 positions. How do you correct this?
     
  34. xeroproject

    xeroproject

    Joined:
    Aug 15, 2019
    Posts:
    3
    Figured it out. Its in the Camera set up rotation ratchet. Web Dev, very new to Unity and VR here :)
     
  35. Jimbo_Slice

    Jimbo_Slice

    Joined:
    Oct 1, 2015
    Posts:
    44
    I've been having this issue too.

    At first my game was showing the Oculus Go controller. I made the manifest change and now it shows no controllers. I parented cubes under the OVRCameraRig's Hand anchors and it will only allow one cube /controller to be tracked at one time.

    Can people who have made the manifest change confirm if they are experiencing the same issue? Or are people now getting two tracker Quest controllers showing?
     
  36. Optrix

    Optrix

    Joined:
    May 30, 2017
    Posts:
    17
    The code is actually in there to generate some of this, it's just behind some odd "v2 Signing" conditions.

    If you update to the latest version of the OVR android package, check out OnPostGenerateGradleAndroidProject in OculusBuildProcessor.cs

    These lines appear...

    Code (CSharp):
    1. nodePath = "/manifest";UpdateOrCreateNameValueElementsInTag(manifestDoc, nodePath, "uses-feature", "name", "android.hardware.vr.headtracking", "required", "true", "version", "1");
    I just removed the 'if' condition around them and everything works. Still can't get the damn com.samsung.android.vr.application.mode to switch to 'dual' though.
     
  37. xeroproject

    xeroproject

    Joined:
    Aug 15, 2019
    Posts:
    3
     
  38. TomasRiker

    TomasRiker

    Joined:
    Jan 26, 2012
    Posts:
    48
    For those who don't use the OVR stuff, but only the Oculus XR package for Android:
    1. Go to your Unity install directory and find the file Editor\Data\PlaybackEngines\AndroidPlayer\Apk\UnityManifest.xml.
    2. Copy the file into <YourProjectFolder>\Assets\Plugins\Android.
    3. Rename it to AndroidManifest.xml.
    4. Edit it and add the following line just before </manifest>:
      <uses-feature android:name="android.hardware.vr.headtracking" android:required="true" android:version="1" />
     
    Last edited: Aug 20, 2019
  39. Jimbo_Slice

    Jimbo_Slice

    Joined:
    Oct 1, 2015
    Posts:
    44
    @xeroproject Thanks for this. I just copied and pasted this into my AndroidManifest.xml but I'm still having the same issue. Is yours located Assets/Plugins/Android ?
     
  40. ronshalev3d

    ronshalev3d

    Joined:
    Apr 30, 2019
    Posts:
    21
    hello
    I changed the target devices to Quest and edited the AndroidMainfest.
    what i got now is virtual rift controllers, rather than Quest controllers. and idea what's going on?
     
  41. ronshalev3d

    ronshalev3d

    Joined:
    Apr 30, 2019
    Posts:
    21
    hi

    first thing you should make sure is to add the correct package name to the manifest.

    secondly, what I did to solve it, is to go to the unity installation folder and into the proper unity version
    go to \Editor\Data\PlaybackEngines\AndroidPlayer\Apk and copy the manifest from there
     
    ROBYER1 likes this.
  42. ROBYER1

    ROBYER1

    Joined:
    Oct 9, 2015
    Posts:
    1,454
    Oculus Integration seems to have just updated to 1.40 on the Asset Store and this issue seems to be fixed for me now without any need to modify the Android Manifest :)
     
    Bovine likes this.
  43. snobalpaul

    snobalpaul

    Joined:
    Jul 17, 2019
    Posts:
    6
    Thank you! Setting the OVRCameraRig's target device from "Gear Vr or Go" to "Quest" fixed the issue for me.

    As a side note, this also made the touch controllers correctly detect - previously it was seeing them as OVRInput.Controller.LTrackedRemote + RTrackedRemote instead of the expected Touch/LTouch/RTouch (as on the Rift), and fixed the buttons not working too.
     
  44. R1PFake

    R1PFake

    Joined:
    Aug 7, 2015
    Posts:
    540
    I think I have the same problem with the built in XR components (the OVR stuff seems to work fine).
    Im using a "old" Unity version some 2019 alpha, what's the current state of this problem if we want to use "native" Unity XR without the Oculus OVR package, do we still have to edit some values in a file or was this "fixed" by Unity itself in a newer version (maybe 2020?)

    (Guess I will just use the Oculus package, it seems to be much easier to use anways, getting inputs is also much easier than the current native XR stuff and has many nice example scenes and prefabs which make developing for Quest easier)
     
    Last edited: Dec 25, 2019
  45. Radicals270

    Radicals270

    Joined:
    Jun 14, 2020
    Posts:
    13
    To anyone still struggling with this issue, I fixed it on my project by going
    Menu/Toolbar --> Oculus -->Tools --> OpenXR --> "Switch to Legacy OVR Plugin"

    And hands are back in the app!
     
    ROBYER1 likes this.