OpenXR Development
Recently active
Hi I wanted to know if it was possible to run an OpenXR app in the background to monitor Quest 2 controller inputs and forward this information on to a peripheral device via Bluetooth or WiFi? I'm trying to avoid having to individually code every app / game to provide haptic feedback, it would be much easier to just gather this information every instant the Quest 2 is active. The information only needs to be of a binary nature if a button is pressed for example and duration. Is that even possible?
I downloaded the SDK from here. I tried running the sample apps under the folder XrSamples, however, I cannot run these apps on my Quest 2 headset. I keep getting the following errorExecution failed for task ':XrSamples:XrHandsFB:Projects:Android:compileDebugJavaWithJavac'.I open up the project in Android Studio, in a Ubuntu system. What is the problem here?
This is when directly accessing the OpenXR hand tracking EXT in StereoKit (not Unity). Quest 2 thumbs are about 90 degrees off from what I expect to see from the OpenXR spec! It appears as though the thumb is using +Y to face up from the back of the hand, rather than the top of the thumb. This is inconsistent from the spec, as well as from other runtimes.The OpenXR spec defines +Y like this: "The up (+Y) direction is pointing out of the back of and perpendicular to the corresponding finger nail at the fully opened hand pose." A little hard to understand without a visible hand here, but you can see +Y (green) coming out the side of the thumb here. This is running on Quest 2. Same scene running on a HoloLens 2, you can see here +Y (green) coming out the top of the thumb, not the side.
Dear Oculus Team!In previous (older) versions of Oculus integration in the OVR overlay module there was support for a Fisheye 180 mesh. Could you please inform me if there are any plans to add support to the new system with OpenXR, as well as make it possible to move the camera inside the mesh.Thanks in advance!
According to Unity, the Oculus implementation of OpenXR in Unity doesn't yet support changing the display frequency on the Quest headsets to 90 or 120 Hz. Any plans on when this will be possible?
I've managed to set up a native Quest app running Vulkan via OpenXR. It renders (clears the screen to a colour) - but only in Cast - the view from the headset remains black. No crashes, Vulkan validation errors, or OpenXR errors.What could I be missing?
Hope someone might be able to point me in the right direction with this one because it's got me scratching behind my ear.We're having an interesting issue that when we turn on recording in the Quest (testing on a Quest 2), that the left eye stops updating. It looks like it's no longer releasing the texture in the swapchain, as if the recording takes it over or something. At some point all 3 images in the swapchain are locked up and that freezes the left eye.I'm assuming I'm forgetting a step somewhere, that when screen recording starts I need to react on something to ensure things work right?Did just notice we may still be on v38 of the SDK, will try moving to v39 in a minute.Cheers,BasGodot Engine
I'm having trouble getting the thumb up trigger to work correctly after migrating to the OpenXR API. If I use the …/input/thumbrest/touch it is only the flat space without buttons that trigger the action. I can of course combine …/input/thumbrest/touch, …/input/thumbstick/touch, …/input/x/touch and …/input/y/touch to check if the thumb is not touching anything, but there is another issue as well. …/input/thumbrest/touch is a boolean action which is only true when the thumb is completely in contact with the thumbrest. The old ovrTouch_ThumbUp seemed to be trigrgered when the thumb got a certain distance from the thumbrest. So you actually had to put the thumb pretty far up before the in game hand would do the thumb gesture. How do I replicate this behavior with the OpenXR API?
Last night I tried using OVRPlugin OpenXR and Native OpenXR as XR API in my project. Turned out that capacitive touch events on Oculus Touch controllers don't work with OpenXR 😞I am using Oculus fork of UE 4.27.2 with 1.70 integration (the latest available from Oculus for UE4 devs). Here is the setup: When touching thumbstick, nothing happens. When moving finger toward trigger and then touching it, value always stays at 0.0
I am using XR rig with custom hands that are ready prefabs with all needed scripts and animations. They are tracked correctly on Oculus BUT when I press any key there is no animation on the hands and NO movement of any finger. It looks so cheap! This is official asset and it is not working? Can someone tell me what is going on?
So far, Quest has been shipping with a custom Android openxr_loader. Now that openxr_loader supports Android properly, I would love to know when, or if Quest will support the official openxr_loader? Any news would be great, as this would really help with development! I've been looking forward to it for a while 🙂 Thanks!
Currently researching the development of OpenXr, does Oculus have any open source projects that I can refer to?
I'm on Windows 10 with released v38 Oculus Desktop software, and a Quest 2 with v38, running over AirLink. I'm working on switching to openxr from the proprietary API, and building up a simple "hello" app to get the hang of it before doing a full integration into my codebase. I quickly noticed that every time my app starts up, it spends a very long (10 second) time inside xrCreateInstance. I'm using the Khronos OpenXR-SDK loader. I debugged inside xrCreateInstance, and the time is all spent inside a call to the _get_instance_proc_addr() function pointer, which points to a location inside LibOVRRT64. I work very hard to make my application load quickly, and I don't want to take a 10 second hit just trying to initialize openxr. I don't see anything like this with the proprietary API. What could be causing this? Is it because I have Steam installed on my PC? Is it some option I need to pass to xrCreateInstance to skip some sort of check
I can't get it to work even in the provided sample (Oculus OpenXR Mobile SDK, 38.0, XrCompositor_NativeActivity).Tried creating foveation profile first and use it for all swapchains, tried to create on per swapchain and delete afterwards (just as in the sample and as OpenXR's docs say it is allowed). Tried setting before enumerating images, after. Of course, the extensions are enabled, there is XrSwapchainCreateInfoFoveationFB attached to XrSwapchainCreateInfo and so on, done just as docs say it should be done, double-checked with provided sample. The thing itself seems like it should be fairly easy to code and use but... it just doesn't work. With VRAPI I had some peculiarities, like I had some glFlush that I did for some testing and it was disabling foveated rendering. I wouldn't be surprised then that I did something else in my code. But why the sample does not work? And what's more important, what to check/do to make foveated rendering work?
I'm developing an app that runs in both non-VR and VR. I want the user to be able to be using the app outside of VR, then get their headset out, put it on, (in the case of the Quest 2, connect to AirLink), and the app detects the headset and seamlessly transitions to VR. If they take it off, they're back in non-VR. In the proprietary Oculus SDK, I can do this in my app's event loop by calling ovr_GetHmdDesc(), then creating a session, and then checking HmdMounted. This is polling based, but is fine because the functions return quite quickly (in the 1ms range, which means I can call it a few times a second and still be quite snappy about detecting VR). I'm trying to do the equivalent in OpenXR. I think this is meant to be done by:1. xrGetSystem() and check that I got a valid system ID.2. xrCreateSession().3. Service the event queue via xrPollEvent, looking for XR_SESSION_STATE_READY event.4. xrBeginSession(). I've got this all w
I've developing the integration of OpenXR and Quest with our own graphic engine using OpenXR and native apiI've ported the Hello_xr sample and it is working perfectly on Desktop devices (Oculus Rift with Link and other devices), but when I deploy the app on Quest 2, the xrLocateSpace() function never return a valid pose, and every time that I call this method, this message is showed in the console: [Telemetry] [OpenXR] data field; input path binding invalid; I've checked everything in the Hello_xr sample to see if there is an issue with action bindings, but in desktop there is no issues at all. Any idea? Thanks in advance 🙂
Beta testers using the Oculus OpenXR runtime in my Unity game Vermillion are reporting that the graphics are disorienting when using their Rift S. Switching to the SteamVR OpenXR runtime immediately resolves the issue. I am still awaiting my Rift S from my Start kit, so I can't test it myself yet. It seems to be a serious issue however. I will try to enforce SteamVR OpenXR to be used until this is looked into and resolved.Unity 2021.1.11f1OpenXR integration 1.2.3Instanced Stereo
On steamVR (with an Index), these artifacts don't appear. I can run the app with 0 validation errors in the Oculus runtime. I'm using a Quest 1 + link cable.The behavior changes depending on whether I use msaa.With msaa:The game works well until a sufficient # of chunks have been loaded (this is an open world voxel game). Once that is the case (~30s in), a flickering artifact slowly grows from the bottom right of the right eye, and moves left to cover both eyes over the course of ~5s.Without msaa:The game works well until a large # of chunks have been loaded (requires more chunks to be loaded than when msaa is enabled). Once that is the case, it is as though my draw calls get cut off before finishing, but only in my right eye. As an example: I first render my opaque chunks (front-to-back), and then my transparent chunks (back-to-front). When I have sufficient # of chunks in view, the right eye stops rendering the transparent chunks entirely (as well as many of the distant opaque c
Hi,can't get on Oculus Quest 2 depth swapchain with neither of reported supported swapchain formats for opengl in OpenXR API runtime always reports Unsupported depth/stencil texture format OVR_FORMAT_R32_FLOAT. I have tried to pass GL_DEPTH_COMPONENT16,GL_DEPTH24_STENCIL8,GL_DEPTH_COMPONENT32F, GL_DEPTH32F_STENCIL8. However for all passed depth formats error is the same. some info of the env:System properties for "Oculus Quest2":maxLayerCount: 16maxSwapChainImageHeight: 4096maxSwapChainImageWidth: 4096Orientation Tracking: truePosition Tracking: trueOpenGL minApiVersionSupported:4.0.0OpenGL maxApiVersionSupported:4.6.0Current Api version :4.6.0OpenXR referenceSpaces:XR_REFERENCE_SPACE_TYPE_VIEWXR_REFERENCE_SPACE_TYPE_LOCALXR_REFERENCE_SPACE_TYPE_STAGE2 view Configurations:viewConfigs[0]:recommendedImageRectWidth: 1568maxImageRectWidth: 3136recommendedImageRectHeight: 1568maxImageRectHeight: 3136recommendedSwapchainSampleCount: 1maxSwapchainSampleCount: 4
When I'm creating `xrSwapchain` with usage `XR_SWAPCHAIN_USAGE_COLOR_ATTACHMENT_BIT| XR_SWAPCHAIN_USAGE_MUTABLE_FORMAT_BIT`, but when I try to create views for swapchain images with different (yet compatible) format, Vulkan validation layers give an error `VUID-VkImageViewCreateInfo-image-01019`, `Formats MUST be IDENTICAL unless VK_IMAGE_CREATE_MUTABLE_FORMAT BIT was set on image creation.`. It seems Oculus OpenXR Runtime doesn't take into account MUTABLE_FORMAT_BIT when creating swapchain images.
Is there somewhere that lists the supported features and capabilities available through the Oculus implementation of OpenXR? Additionally some tutorials/code snips would be very welcome for items such as MultiView and setting the frame rate.
When I run my WebVR app in the editor with my VR headset connected, TrackedDeviceRaycaster works and the UI responds to being pointed at by the controllers. When I run the WebVR build and switch to VR, the UI does not respond to being pointed at by the controllers. I did some digging around and this is what I am observing. When running in the editor, the eventData passed to TrackedDeviceRaycaster.Raycast has pointerType = UIPointerType.Tracked, which causes the method to call PerformRaycast. When running as a WebVR build, pointerType = MouseOrPen, which causes PerformRaycast NOT to be called. Furthermore, I believe InputSystemUIInputModule.GetPointerStateIndexFor sets the pointer type. It seems the bug is in there.
Looking to switch over to OpenXR SDK, especially with the new Mixed Reality with Passthrough only being released in OpenXR --- but need to have Oculus hand tracking in VR apps... The best way I know how to do this is with the "Oculus Integration" package -- ie. adding the OVRCameraRig -- see the following youtube showing where I learned how to do this (https://youtu.be/vSia7t_WlbQ?t=169) So what's the best strategy to do this same hand tracking for Oculus Quest 2 and use the OpenXR SDK? Thanks in Advance!
I've written an oculus hand tracking plugin for unity openxr, In it I call xrcreateHandTrackerEXT with right and left handles. The mesh I get back is for the correct hand, but when I call locatejoints, I get the joints for the opposite hand, i.e. the left handle gets the right hand positions. Am I doing something stupid or is this broken? XrHandTrackerCreateInfoEXT lh_create = new XrHandTrackerCreateInfoEXT(1); XrHandTrackerCreateInfoEXT rh_create = new XrHandTrackerCreateInfoEXT(2); int retVal=0; retVal = GetInstanceProc<Type_xrCreateHandTrackerEXT>("xrCreateHandTrackerEXT")(curr_session, rh_create, out handle_right); if(retVal!=0) { Debug.Log("Couldn't open right hand tracker: Error "+retVal); return; } retVal = GetInstanceProc<Type_xrCreateHandTrackerEXT>("xrCreateHandTrackerEXT")(curr_session, lh_create, out handle_left); if(retVal!=0) {
Black Screen error when I use Vulkan and OpenXR on any Unity 2021 to 2022 version, is there any upcoming fix for this?
Already have an account? Login
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.