Search Unity

Official Unity support for OpenXR in preview

Discussion in 'AR/VR (XR) Discussion' started by rickmus, Dec 17, 2020.

Thread Status:
Not open for further replies.
  1. the_real_apoxol

    the_real_apoxol

    Unity Technologies

    Joined:
    Dec 18, 2020
    Posts:
    467

    We have looked into this and so far have not been able to find a fix for it within OpenXR. However upgrading to the latest InputSystem preview seems to resolve it. Will be contacting the InputSystem team today to see if I can get more clarification.
     
  2. the_real_apoxol

    the_real_apoxol

    Unity Technologies

    Joined:
    Dec 18, 2020
    Posts:
    467
    This is likely a difference in what the runtime does when you take the headset off. You should be able to see in the editor.log (or player.log if running standalone) the OpenXR states that are getting set by the runtime. As long as you are in focused or visible then unity will render, but if the runtime drops you out of either of those then unity has to stop rendering. It is possible that steam does not drop the visible state when the headset is taken off.
     
  3. the_real_apoxol

    the_real_apoxol

    Unity Technologies

    Joined:
    Dec 18, 2020
    Posts:
    467
    I looked into this further and am unable to reproduce the results you were seeing. Using 1.2.0 and 1.2.2 produces identical results on the controller position and rotations on both the Oculus OpenXR Runtime and the SteamVR OpenXR Runtime. However the results between the Oculus OpenXR runtime and the Steam VR OpenXR runtime are not identical. Are you sure you used the same runtime for each test?

    When it comes to controller positions with OpenXR unity has very little to do with where they show up. We just call an OpenXR API to get the controller pose and move the controller using that pose. There is no special logic for any runtime so it would be very unlikely for poses to change between Unity OpenXR plugin versions, however, that being said anything is possible.
     
  4. the_real_apoxol

    the_real_apoxol

    Unity Technologies

    Joined:
    Dec 18, 2020
    Posts:
    467

    How are you setting offsets per device?
     
  5. Thomas-Mountainborn

    Thomas-Mountainborn

    Joined:
    Jun 11, 2015
    Posts:
    501
    Can instanced stereo and post processing not work together in OpenXR? I just tried enabling single pass instanced again, but I get a white display in VR with the following error: "A multisampled texture being bound to a non-multisampled sampler. Disabling in order to avoid undefined behavior. Please use Texture2DMS in the shader.". Turning off the post processing layer or the MSAA on the VR camera fixes the issue, but that's not the option I'm looking for.
     
  6. the_real_apoxol

    the_real_apoxol

    Unity Technologies

    Joined:
    Dec 18, 2020
    Posts:
    467
    I suggest reporting an issue via (Help -> Report a bug) on this one and when you have the issue # let me know. I would think it should work but I will need to discuss with the XR graphics team and they will want an issue to reference.

    If you are able to make a test project that demonstrates the issue that will help to getting it resolved ASAP as well.
     
  7. the_real_apoxol

    the_real_apoxol

    Unity Technologies

    Joined:
    Dec 18, 2020
    Posts:
    467
    Got a chance to look into this today but so far I am unable to reproduce it. What runtime/device are you using? If you are still seeing it please submit a bug using (Help -> Report a bug) and include a repro project as well as the editor.log (or player.log if running standalone) after seeing it be set to null.

    The script I was using to test was the following:

    Code (CSharp):
    1. public class PrintRuntime : MonoBehaviour
    2. {
    3.     private string _lastRuntime;
    4.  
    5.     void Update()
    6.     {
    7.         if (_lastRuntime != OpenXRRuntime.name)
    8.         {
    9.             _lastRuntime = OpenXRRuntime.name;
    10.             Debug.Log(_lastRuntime);
    11.         }
    12.     }
    13. }
    I tried this on both SteamVR OpenXR Runtime and Oculus OpenXR Runtime using Oculus Quest 2 device in both cases.
     
    EdEddnEddy likes this.
  8. jamie_xr

    jamie_xr

    Joined:
    Feb 28, 2020
    Posts:
    67
    We just have the transform with the pose driver on it, and one underneath that acts as an offset, then our hand model is under that. We detect devices using the InputDevice.name after using the GetDeviceAtXrNode() function. Of course I do no offsets in the sample scene from which my screenshots and tests were undertaken.
     
  9. the_real_apoxol

    the_real_apoxol

    Unity Technologies

    Joined:
    Dec 18, 2020
    Posts:
    467
    Ok that will sort of work, but only temporarily. The way OpenXR works you should be able to specify the Microsoft Motion Controller and run against the Oculus runtime and it should still work. When that happens the device you will see will be the Microsoft Motion controller even though the real device is the Oculus Controller. Currently the Oculus and SteamVR runtimes are not doing this properly but you can specify only the Oculus Controller and run against the WinMR runtime using a WinMR device and it works, but the device in Unity will still be Oculus. Just a warning that what you are doing will eventually not work.

    The offsets for different devices is an issue with OpenXR and we are trying to work with the runtimes and Kronos to find a solution that is more consistent.
     
  10. Thomas-Mountainborn

    Thomas-Mountainborn

    Joined:
    Jun 11, 2015
    Posts:
    501
    I created the bug report with sample project yesterday, but I still haven't received a confirmation mail with an issue number. :/
     
  11. AndreasWang

    AndreasWang

    Joined:
    Jul 31, 2019
    Posts:
    23
    Yep, it seems like the Oculus runtime follows the OpenXR spec more closely and transitions to the idle lifecycle state whenever you take off the HMD while the SteamVR runtime keeps you in the focused state. While I can understand that unity needs to stop rendering to the HMD at that point it also seems to stop all other cameras that for example could be used for desktop UI (cameras with target eye "None (Main Display)" to be precise). Is there any way to return rendering control outside of XR when this happens?

    I've tried hooking into the OpenXR lifecycle state changes with a feature and disable the XR camera + stopping XR subsystems but this does not seem to have any effect. I would assume that there is some intended way to allow the user to interact with things on the desktop once the HMD goes to idle state that I am missing here
     
    Last edited: Jun 15, 2021
  12. jamie_xr

    jamie_xr

    Joined:
    Feb 28, 2020
    Posts:
    67
    So theoretically the user can link any device to any runtime ? or only ones that are compatible. In that case I can't reconcile any differences between controllers. I would have very little confidence shipping a game in those circumstances. Right now I'm using https://github.com/shiena/OpenXRRuntimeSelector to force the app to use SteamVR runtime. That way I can eliminate a variable, and gain some degree of control, All I have to worry about then is different offsets on each controller, although there are the previously documented issues with Oculus controllers. Right now I'm just waiting for a fix for that. Do you forsee any issues with this approach?
     
  13. FishStickies94

    FishStickies94

    Joined:
    Jul 27, 2019
    Posts:
    70
    Yeah I don't use SteamVR because I tend to get better performance from Oculus OpenXR. Between updating to the Latest LTS and changing from 1.2 to 1.2.2 I got a big rotational offset. In 1.1 you could have the Oculus Touch Controller model at 0,0,0 both positonal and rotational and it was spot on. Then in 1.2.0 I had to offset on the Z by 0.055, then on 1.2.2 it was crazy offset. I can confirm this because I can go into a previous build I made before updating and the controllers were fine.

    I've found with 1.2.2 that if you set it to point position/rotation there is better alignment, however point pos/rot do not get read by OculusXR, which is what I use for building to the Quest. Just going to keep building with OculusXR until all this offset stuff is sorted out between the different runtimes.
     
  14. the_real_apoxol

    the_real_apoxol

    Unity Technologies

    Joined:
    Dec 18, 2020
    Posts:
    467
    I see your bug and we have already discussed it internally. It looks like QA responded to you, maybe the email is incorrect? It looks like there may be a fix for this bug that just needs to be backported to 2020.3 but still trying to verify that.
     
    Thomas-Mountainborn likes this.
  15. the_real_apoxol

    the_real_apoxol

    Unity Technologies

    Joined:
    Dec 18, 2020
    Posts:
    467
    You can not link any device to any runtime, the WinMR runtime will only work with the devices they support and the Oculus will only work with Oculus. SteamVR is the only exception since they are specifically designed to work with any device.

    What the runtimes do though is support controller profiles from other devices and map them to their own. For example, lets say you were making a game and all you had to test with was an Oculus Quest 2. You would set up your project with only the Oculus Quest Controller Profile and set up all your bindings to the buttons on that controller. Now someone wants to play your game on a WinMR headset so they have the WinMR OpenXR Runtime active and run your game. Well you never set up bindings or added a controller profile for WinMR so only the Oculus Controller Profile gets submitted to the WinMR runtime. The WinMR runtime would then recognize this and do its best to convert the bindings you set up for the oculus controller over to the WinMR controllers so the game is still playable. Sometimes this conversion requires a binding table that can be provided to the runtime (for support of controllers that you dont even know about yet without having to rebuild your game). So you can see, in this example you told WinMR about Oculus bindings, and it converted them to WinMR bindings, but the actual device that will be created in unity will still be an Oculus Controller because WinMR is just mapping that over and Unity does not know this. In this case if you were using the registered device name/type to determine the controller then you would be tricked into thinking the user had an oculus controller in their hand when they really had a WinMR controller in their hand. This is something we are trying to work with the runtime providers on as we feel it is quite problematic for our users. There are currently a few discussions ongoing with the OpenXR group, one centered around how to determine and render the controller the user actually has in their hand and another to add a third pose to controllers that follows strict rules as to how it aligns to your hand to prevent/limit the need for any offsets.

    While cross mapping of controllers is how OpenXR is supposed to work, it is not fully realized yet as both Oculus and SteamVR do not yet support cross mapping controller profiles, however the WinMR runtime does. That being said you will still always get the most control if you provide bindings for the various known controllers yourself. The more data the runtimes have about how you are trying to set up the the bindings for your game the better.
     
  16. the_real_apoxol

    the_real_apoxol

    Unity Technologies

    Joined:
    Dec 18, 2020
    Posts:
    467
    The correct way would be to shut down XR based on the lifecycle event you want as documented here.

    https://docs.unity3d.com/Packages/com.unity.xr.management@4.0/manual/EndUser.html

    You would need to have a way for the user to manually turn XR back on at that point though as once you shut it down it will no longer be able to detect when you put the headset back on.
     
  17. Thomas-Mountainborn

    Thomas-Mountainborn

    Joined:
    Jun 11, 2015
    Posts:
    501
    Strange, I haven't received anything, and my e-mail is definitely correct. I'm hoping it will get fixed soon then.
     
  18. jackpr

    jackpr

    Unity Technologies

    Joined:
    Jan 18, 2018
    Posts:
    50
    The OpenXR spec has a few extensions for hands. The big one is 12.27. I believe the plan of record from Valve is to use this to expose finger positions on Index. I am not sure what the status is on that. I will poke at our contacts to see what they can share.
     
  19. jackpr

    jackpr

    Unity Technologies

    Joined:
    Jan 18, 2018
    Posts:
    50
    This is a requirement of the InputSystem, unfortunately. In newer versions of the OpenXR package we have improved the messaging on this.
     
  20. Thomas-Mountainborn

    Thomas-Mountainborn

    Joined:
    Jun 11, 2015
    Posts:
    501
    I'm experiencing a strange issue - when the Oculus OpenXR runtime is used, my game stops responding after 30 seconds - 5 minutes of play time. When running on SteamVR, it runs fine for hours on end. There are no exceptions, errors of any kind logged, it just stops responding when the Oculus runtime is used. Any ideas?
     
  21. Thomas-Mountainborn

    Thomas-Mountainborn

    Joined:
    Jun 11, 2015
    Posts:
    501
    All of my testers just confirmed that it runs fine when using the native Oculus runtime, but freezes after a few seconds to minutes when using the Oculus OpenXR runtime. This seems like a very important issue, and is causing me concern. I will have to use the Oculus runtime on the Oculus Store, and force the SteamVR OpenXR runtime on Steam. But then, on SteamVR using Oculus hardware, the controllers are entirely offset as mentioned by @jamie_xr, and the performance is also a lot worse. Oculus users are reporting some kind of weird lagginess, even though the framerate is fine. SteamVR hardware users have no issues. So what is a developer supposed to do? Oculus users can still buy games on Steam, but using the Oculus OpenXR runtime freezes the application, and using the SteamVR runtime has bad performance.

    Another issue is resetting the room origin. When launching a SteamVR OpenXR game, the reset orientation button disappears from the in-headset SteamVR menu - just great. When resetting position in an Oculus OpenXR game, the camera gets put in the floor! It works fine when using the Oculus native runtime.

    Third issue: WMR controllers are not tracking at all. I have attached the OpenXR log, I'm not sure if that helps. Interesting note here is that the device name for controllers, which I use to enable different Input control schemes to cope with different control sets, are empty on WMR.
     

    Attached Files:

    Last edited: Jun 17, 2021
  22. dpcactus

    dpcactus

    Joined:
    Jan 13, 2020
    Posts:
    53

    I can confirm all of that! Same issues, was just too lazy to make a post about it. The WMR Controller do track when using the WMR Runtime though, but not though SteamVR, however, my tester reported, at some point the controllers just freeze. Game still runs, but Controller tracking and inputs just stop working.
     
    Thomas-Mountainborn likes this.
  23. yarsrvenge

    yarsrvenge

    Joined:
    Jun 25, 2019
    Posts:
    87
    Ive noticed a lot of those things as well. The recenter button disappearing in SteamVR is one I’m glad someone else mentioned. I thought I was going crazy. The option in the desktop dashboard app to recenter still works oddly enough. Not sure how critical that is, I ended up coding something to change from seated to standing position manually as I think that’s what is recommended. (I use device rather than floor due to gameplay reasons)

    I think I’ve also found something different with input manager across OculusXR and UnityXR but need more investigation before I post about it.
     
  24. jamie_xr

    jamie_xr

    Joined:
    Feb 28, 2020
    Posts:
    67
    I've gone back to basics in an attempt to explore the possibility of allowing OpenXR to decide whichever runtime is most appropriate. I've made an empty project with Unity 2020.3.6f1 and OpenXR plugin 1.2.2.

    I imported the controller sample scene, and built it out. It won't launch VR.

    This also happens inside unity if I select "System Default" as the runtime in the project settings/OpenXR tab.
    Here's the log. Seems like it can't find a good runtime?

    I'd like a little more understanding about how open XR selects it's runtimes.

    ==== Start Unity OpenXR Diagnostic Report ====


    [XR] [25632] [09:24:25.811][Info ] ==== Report Reason: System Shutdown ====


    [XR] [25632] [09:24:25.811][Info ] ==== OpenXR Support Details ====
    [XR] [25632] [09:24:25.811][Info ] OpenXR Runtime:
    [XR] [25632] [09:24:25.811][Info ] UNKNOWN COMPANY, which is not a Unity supported partner
    [XR] [25632] [09:24:25.811][Info ] Unity OpenXR Features:
    [XR] [25632] [09:24:25.811][Info ] HtcViveCosmosInputFeature Standalone: HTC, which is not a Unity supported partner
    [XR] [25632] [09:24:25.811][Info ] HPMixedRealityControllerProfile Standalone: Microsoft, which is a Unity supported partner
    [XR] [25632] [09:24:25.811][Info ] HTCViveControllerProfile Standalone, OculusTouchControllerProfile Standalone: Unity
    [XR] [25632] [09:24:25.811][Info ] Unity Support:
    [XR] [25632] [09:24:25.811][Info ] Unity doesn't support some aspects of the runtime and Unity OpenXR Features above. Please attempt to reproduce the issue with only Unity supported aspects before submitting an issue to Unity.
    [XR] [25632] [09:24:25.812][Info ]
    [XR] [25632] [09:24:25.812][Info ] ==== OpenXR Init Info ====
    [XR] [25632] [09:24:25.812][Info ]
    [XR] [25632] [09:24:25.812][Info ] Stage 1 Missing Entry Points: (1)
    [XR] [25632] [09:24:25.812][Info ] xrInitializeLoaderKHR
    [XR] [25632] [09:24:25.812][Info ]
    [XR] [25632] [09:24:25.812][Info ] ==== OpenXR Provider Info ====
    [XR] [25632] [09:24:25.812][Info ] Spec Version: 1.0.12
    [XR] [25632] [09:24:25.812][Info ] Provider Version: 1.2.2
    [XR] [25632] [09:24:25.812][Info ] App: OpenXR Controller Test 0.1 #3159629941
    [XR] [25632] [09:24:25.812][Info ] Engine: 2020.3.6f1 #790474107
    [XR] [25632] [09:24:25.812][Info ]
    [XR] [25632] [09:24:25.812][Info ] ==== OpenXR Runtime Info ====
    [XR] [25632] [09:24:25.812][Info ]
    [XR] [25632] [09:24:25.812][Info ] Features requested to be enabled: 4
    [XR] [25632] [09:24:25.812][Info ] Name=HP Reverb G2 Controller Profile Extension=XR_EXT_hp_mixed_reality_controller Version=0.9.3
    [XR] [25632] [09:24:25.812][Info ] Name=HTC Vive Controller Profile Extension=NA Version=0.0.1
    [XR] [25632] [09:24:25.812][Info ] Name=HTC Vive Cosmos Controller Support Extension=NA Version=0.0.1
    [XR] [25632] [09:24:25.812][Info ] Name=Oculus Touch Controller Profile Extension=NA Version=0.0.1
    [XR] [25632] [09:24:25.812][Info ]
    [XR] [25632] [09:24:25.812][Info ] Features with extensions that failed to be enabled: 1
    [XR] [25632] [09:24:25.812][Info ] Name=HP Reverb G2 Controller Profile Extension=XR_EXT_hp_mixed_reality_controller Version=0.9.3
    [XR] [25632] [09:24:25.812][Info ]
    [XR] [25632] [09:24:25.812][Info ] Available Extensions: (12)
    [XR] [25632] [09:24:25.812][Info ] Name=XR_EXT_hand_tracking SpecVersion=2
    [XR] [25632] [09:24:25.812][Info ] Name=XR_EXT_eye_gaze_interaction SpecVersion=1
    [XR] [25632] [09:24:25.812][Info ] Name=XR_KHR_D3D11_enable SpecVersion=5
    [XR] [25632] [09:24:25.812][Info ] Name=XR_KHR_D3D12_enable SpecVersion=7
    [XR] [25632] [09:24:25.812][Info ] Name=XR_KHR_win32_convert_performance_counter_time SpecVersion=1
    [XR] [25632] [09:24:25.812][Info ] Name=XR_KHR_visibility_mask SpecVersion=2
    [XR] [25632] [09:24:25.812][Info ] Name=XR_HTC_vive_cosmos_controller_interaction SpecVersion=1
    [XR] [25632] [09:24:25.812][Info ] Name=XR_KHR_opengl_enable SpecVersion=9
    [XR] [25632] [09:24:25.812][Info ] Name=XR_KHR_vulkan_enable SpecVersion=7
    [XR] [25632] [09:24:25.812][Info ] Name=XR_KHR_vulkan_enable2 SpecVersion=1
    [XR] [25632] [09:24:25.812][Info ] Name=XR_EXT_debug_utils SpecVersion=3
    [XR] [25632] [09:24:25.812][Info ] Name=XR_KHR_convert_timespec_time SpecVersion=1
    [XR] [25632] [09:24:25.812][Info ]
    [XR] [25632] [09:24:25.812][Info ] Available Layers: (2)
    [XR] [25632] [09:24:25.812][Info ] Name=XR_APILAYER_VIVE_hand_tracking SpecVersion=0 LayerVersion=0.0.1 Description=ViveVR OpenXR Hand Tracking
    [XR] [25632] [09:24:25.812][Info ] Name=XR_APILAYER_VIVE_eye_tracking SpecVersion=0 LayerVersion=0.0.1 Description=ViveVR OpenXR Eye Tracking
    [XR] [25632] [09:24:25.812][Info ]
    [XR] [25632] [09:24:25.812][Info ] Available Extensions for layer XR_APILAYER_VIVE_hand_tracking: (1)
    [XR] [25632] [09:24:25.812][Info ] Name=XR_EXT_hand_tracking SpecVersion=2
    [XR] [25632] [09:24:25.812][Info ]
    [XR] [25632] [09:24:25.812][Info ] Available Extensions for layer XR_APILAYER_VIVE_eye_tracking: (1)
    [XR] [25632] [09:24:25.812][Info ] Name=XR_EXT_eye_gaze_interaction SpecVersion=1
    [XR] [25632] [09:24:25.812][Info ]
    [XR] [25632] [09:24:25.812][Info ] ==== Last 20 non-XR_SUCCESS returns ====
    [XR] [25632] [09:24:25.812][Info ] [FAILURE] xrCreateInstance: XR_ERROR_INITIALIZATION_FAILED (1x)
    [XR] [25632] [09:24:25.812][Info ] [FAILURE] xrPollEvent: XR_ERROR_FUNCTION_UNSUPPORTED (1x)
    [XR] [25632] [09:24:25.812][Info ]
    [XR] [25632] [09:24:25.812][Info ] ==== Last 20 Events ====
    [XR] [25632] [09:24:25.812][Info ]

    ==== End Unity OpenXR Diagnostic Report ====
     
  25. Thomas-Mountainborn

    Thomas-Mountainborn

    Joined:
    Jun 11, 2015
    Posts:
    501
    Any word from Unity on this? I just made a bug report in the SteamVR forums about the performance, I hope @runeberg-valve will take a look. I'm just wondering here - how are we actually supposed to make a cross platform title?

    - Using OpenVR means it runs well on Steam, but it is not compatible with the Unity input system. This means you have to maintain a separate code base for Oculus development which uses the Unity input system and removes all mentions of SteamVR, as to not be marked as malware by their system.
    - SteamVR OpenXR only works well with SteamVR hardware. Using Oculus hardware, the performance is terrible. The controller positions are at least fixed in the latest SteamVR beta. WMR controller tracking is not working properly. The reset orientation button is not implemented, and has just been removed by Valve.
    - Oculus OpenXR freezes after a few seconds to minutes of gameplay. The reset orientation button puts you in the floor.

    If it weren't for the fact that the OpenVR renderer is only compatible with the SteamVR input system, I'd scrap OpenXR all together and have a separate build using OVR and SteamVR. Seriously, how are other developers doing this? I'm dying to know.
     
  26. the_real_apoxol

    the_real_apoxol

    Unity Technologies

    Joined:
    Dec 18, 2020
    Posts:
    467

    I dont know which runtime is active on your machine but whichever it is there seems to be an issue with it. It would seem that maybe it is an HTC runtime? I am not sure as the company comes up as UNKNOWN.

    OpenXR does not select a runtime, the active runtime is a fixed value on your machine set in the registry. In Unity you can temporarily override that value using the runtime selector in the options but if you select `System Default` then it is just using the runtime that is set on your machine. SteamVR and Windows Mixed Reality can both update this active runtime from within their respective applications, otherwise you need to set the registry key manually. What device do you have ?
     
  27. the_real_apoxol

    the_real_apoxol

    Unity Technologies

    Joined:
    Dec 18, 2020
    Posts:
    467
    Do you have a project we can try where the freezing on the Oculus Runtime occurs? I cant remember if you already sent me a player.log file for when this happens, but if not could you do that? We just want to make sure that what is happening is not something we can resolve at Unity. If it is deemed a runtime issue we will make sure to forward it to Oculus to get attention, but they will need something to reproduce it with as well. If you want to submit a unity bug on this with a sample project that works too, just let me know what the issue # is if you do so we can escalate it.
     
  28. rasto61

    rasto61

    Joined:
    Nov 1, 2015
    Posts:
    352
    @the_real_apoxol is there a known issue with running openxr with the steamvr runtime and controller offsets? Im using 1.2.2. and with steamvr runtime selected, there is an offset for the controllers when I use a WMR device running through steamvr. If I add the tracked pose drivers to an object, it does not align with the position of the controllers.
     
  29. dpcactus

    dpcactus

    Joined:
    Jan 13, 2020
    Posts:
    53
    If the binaries are sufficient, Cactus Cowboy 3 Fully Loaded that I have just released on Steam (freeware) does have this issue right now. You can try this one if you one to.
     
  30. yarsrvenge

    yarsrvenge

    Joined:
    Jun 25, 2019
    Posts:
    87
    This happened to me again, and I think it might know what is going on if it helps. When you have both the OculusXR and OpenXR plugins installed, the OpenXR Oculus Touch profile doesn't show. I can tell because it does not have "OpenXR" at the end of the name and does not have a devicepose/position action, only a deviceposition action. It's basically like a profile associated with the OculusXR plugin is interfering with Unity's.

    I eliminated the problem by re-installing everything but NOT installing the OculusXR plugin since hopefully I wont need it anymore.
     
  31. dpcactus

    dpcactus

    Joined:
    Jan 13, 2020
    Posts:
    53
    Since the SteamVR Runtime seems to be a complete clusterfuck of rotation/poses between the main branch and the beta, is there a way I can get the the version of SteamVR so I can adjust the offsets/rotations?
     
  32. AndreasWang

    AndreasWang

    Joined:
    Jul 31, 2019
    Posts:
    23
    I'm not sure if it is related, but there seems to be a memory leak that happens whenever the HMD goes into idle life cycle state. It happens in the Oculus OpenXR runtime, while the SteamVR OpenXR runtime is fine from what I've tested so far (potentially because SteamVR does not seem to change the OpenXR life cycle state whenever the HMD is inactive). The leak manages to eat up most of the RAM on my desktop machine after a few minutes (both in editor and player), which causes freezes on both the application and OS level.

    There is a bug report (issueId 1344762) on it at least, so hopefully it is resolvable.
     
  33. the_real_apoxol

    the_real_apoxol

    Unity Technologies

    Joined:
    Dec 18, 2020
    Posts:
    467
    I believe Valve is working with microsoft to get the correct offsets for WinMR controllers still.
     
  34. the_real_apoxol

    the_real_apoxol

    Unity Technologies

    Joined:
    Dec 18, 2020
    Posts:
    467
    OpenXRRuntime.version is the version number of the runtime.
     
  35. dpcactus

    dpcactus

    Joined:
    Jan 13, 2020
    Posts:
    53
    Cool, but I need the SteamVR Version.This one returns 0.1.0 but it should be 1.17.16
     
  36. the_real_apoxol

    the_real_apoxol

    Unity Technologies

    Joined:
    Dec 18, 2020
    Posts:
    467
    Not sure then, that is a runtime thing.
     
  37. rasto61

    rasto61

    Joined:
    Nov 1, 2015
    Posts:
    352
    So this is a WMR specific issue? I will be looking to valve/ms for this then. (do you by any chance have a link to the relevant discussions/reports for this?)
    I didnt test with vive, but will. Oculus should be good as well?
     
    Last edited: Jun 22, 2021
  38. jackpr

    jackpr

    Unity Technologies

    Joined:
    Jan 18, 2018
    Posts:
    50
    FishStickies94 likes this.
  39. chrpetry

    chrpetry

    Joined:
    Mar 7, 2018
    Posts:
    65
    Since the last OpenXR update I get the following error:

    Could not create a device for 'Microsoft Windows MR Controller OpenXR (XRInputV1)' (exception: System.InvalidOperationException: Cannot find parent 'devicepose' of control 'devicepose/istracked' in layout 'XRInputV1::Microsoft::WindowsMRControllerOpenXR'
    at UnityEngine.InputSystem.Layouts.InputDeviceBuilder.InsertChildControl (UnityEngine.InputSystem.Layouts.InputControlLayout layout, UnityEngine.InputSystem.Utilities.InternedString variant, UnityEngine.InputSystem.InputControl parent, System.Boolean& haveChildrenUsingStateFromOtherControls,
    ...


    I'm currently on:
    InputSystem 1.0.2 R
    OpenXR Plugin 1.2.2 R
    -- Windows XR Plugin 5.3.0 R --
    XR Interaction Subsystems 1.0.1 R
    XR Interaction Toolkit 1.0.0-pre.4 Pre
    XR Plugin Management 4.0.6 R

    Is this a known issue? I can't get a WMR headset or a Oculus Quest headset running on OpenXR anymore.

    EDIT:
    After reading the info on Windows XR Plugin and removing this, I still get errors but my headset works again.
    But controller rotation/orientation does not get updated.
    Could not recreate input device 'Microsoft Windows MR Controller OpenXR (XRInputV1)' with layout 'WMRSpatialController' and variants 'Default' after domain reload
    UnityEngine.InputSystem.LowLevel.NativeInputRuntime/<>c__DisplayClass7_0:<set_onUpdate>b__0 (UnityEngineInternal.Input.NativeInputUpdateType,UnityEngineInternal.Input.NativeInputEventBuffer*)
    UnityEngineInternal.Input.NativeInputSystem:NotifyUpdate (UnityEngineInternal.Input.NativeInputUpdateType,intptr)
    UnityEditor.EditorAssemblies:ProcessInitializeOnLoadAttributes (System.Type[])


    EDIT2:
    A reset of my room setup fixed the rotation issue. Still I get these errors.
     
    Last edited: Jun 23, 2021
  40. Thomas-Mountainborn

    Thomas-Mountainborn

    Joined:
    Jun 11, 2015
    Posts:
    501
    @chrpetry I believe everyone gets spammed with those errors, but they seem to be safe to ignore.

    A beta tester noticed that the Vive wands are no longer rumbling, and I verified in the OpenXR 1.2.2 controller sample scene that this is indeed the case, whereas the Knuckles and Touch controllers still rumble just fine. I filed a bug report, #1345052.
     
  41. zezba9000

    zezba9000

    Joined:
    Sep 28, 2010
    Posts:
    992
    I'm trying to add support for HTC Vive Cosmos in OpenXR but the Cosmos "Interaction Profile" doesn't exist.
    Was this removed? How to I get this profile now?
    Using Unity3D LTS 2020.3.12f
     
  42. jamie_xr

    jamie_xr

    Joined:
    Feb 28, 2020
    Posts:
    67
    Over the last couple of days our QA department have been reporting that they are experiencing degraded performance, sometimes after playing for a while, but sometimes after just loading a single level. The problem continues for a while (sometimes up to 10 minutes before fixing itself, sometimes only around 10 seconds).

    I am assured this issue does not happen on our oculus builds (Our game is fully released on oculus store using the Oculus XR plugin directly and has had many hours of testing against it). I asked one of our QA guys to reproduce it in editor, he managed to, We captured a profile of it. The profile can be found here: https://drive.google.com/file/d/1dzQA1erznHvMbKJYM-j2HrORnVziAPO-/view?usp=sharing

    The problem seems to be Gfx.WaitForPResentOnGfxThread waiting (A gpu thread synchronization issue).

    We have been running on the steam vr runtime on various devices.
    Unity 2020.3.12f1
    Latest OpenXR plugin.

    Is this a known issue?
     
  43. the_real_apoxol

    the_real_apoxol

    Unity Technologies

    Joined:
    Dec 18, 2020
    Posts:
    467
    I do not know of any public discussions on this, but I will ask Valve. Keep in mind that controller poses are still different per controller.
     
  44. the_real_apoxol

    the_real_apoxol

    Unity Technologies

    Joined:
    Dec 18, 2020
    Posts:
    467
    The errors are a known issue. The only solution to removing them at this time is to upgrade your InputSystem to the latest preview version as the bug was in the InputSystem and has since been resolved. OpenXR depends on the last verified version of the InputSystem which is 1.0.2 but many fixes have been made since then, just not released as verified yet.
     
  45. the_real_apoxol

    the_real_apoxol

    Unity Technologies

    Joined:
    Dec 18, 2020
    Posts:
    467
    The vive controller haptic issue is known and is fixed in the upcoming 1.2.3 release. There is a work around of creating your own interaction profile feature if a fix is needed immediately, however 1.2.3 should be out soon.
     
  46. the_real_apoxol

    the_real_apoxol

    Unity Technologies

    Joined:
    Dec 18, 2020
    Posts:
    467
    The Vive cosmos interaction profile is not fully ratified in the OpenXR spec (still an extension) so it is currently only externally supported. I found this that seems to have a link to an interaction profile for it.

    https://forum.vive.com/topic/9141-vive-cosmos-controller-openxr-feature-for-unity/
     
    zezba9000 likes this.
  47. the_real_apoxol

    the_real_apoxol

    Unity Technologies

    Joined:
    Dec 18, 2020
    Posts:
    467
    The only performance issue that seems to be known at this time is when depth submission is enabled on SteamVR. We will take a look at the profile though and see if we can find anything.
     
  48. zezba9000

    zezba9000

    Joined:
    Sep 28, 2010
    Posts:
    992
    There seems to be a bug possibly in Unity3D preventing the profile from being added.
    The "Open XR Package Settings.asset" file seems to get littered with duplicates & I also can't seem to find what value flags them on or off. Trying to manually add it to see if that works.
     
  49. the_real_apoxol

    the_real_apoxol

    Unity Technologies

    Joined:
    Dec 18, 2020
    Posts:
    467
    IS the profile show
    Is the profile showing up in the list of interaction profiles?

    There are duplicates in that list usually because there is one for each of the platforms.
     
  50. zezba9000

    zezba9000

    Joined:
    Sep 28, 2010
    Posts:
    992
    Yes it shows up but wont add. See this link for more info: https://forum.vive.com/topic/9141-v...ature-for-unity/?do=findComment&comment=41139


    No its duplicate entries in the "Open XR Package Settings.asset" file. The same "--- !u!114" types are just listed over and over like it never cleans up anything.
    upload_2021-6-24_16-2-48.png

    The dev for this profile thinks there is a Unity bug... but if he hasn't already reported this IDK why not. Its got to be something basic but I for the life of me can't figure what is wrong.
     
    Last edited: Jun 25, 2021
Thread Status:
Not open for further replies.