When we’re referring to runtime in this context we’re talking about the software on your computer that is the interface between your devices (HMD/Controllers) and the application (Unreal Engine). In your case it would either be the Windows Mixed Reality OpenXR Runtime (which is built into recent versions of Windows) or SteamVR. I talk a bit about it in the webinar we did recently: https://youtu.be/Asw4C51RH9I
The runtime returns device information to Unreal, so if the runtime returns “Windows Mixed Reality” that’s unfortunately all we have to work with. I suggest you make sure you’re using the WMR OpenXR Runtime, you can find details on how to use it on Msft’s documentation: Getting started with OpenXR - Mixed Reality | Microsoft Learn
I noticed some issues with the template when using the Valve Index controllers.
The menu input is set up to use the Index controller system buttons, which are reserved for the SteamVR overlay, so it’s not possible to open the menu without rebinding the input first. If you use the SteamVR OpenXR runtime, it will also reserve the menu button on the left Oculus Touch controller and likely the WMR controllers too, so those would fail depending on what runtime the user has active.
The index controller grip position is offset down, so the controller rendermodels are misaligened. I’m guessing this is a regression on SteamVRs side, so I reported the issue to them too.
Here are the rendermodels with the ones rendered by the SteamVR dashboard overlaid:
@VictorLerp It would be nice if you included a basic “debug 3d-widget” in the template. Something that could be easily extended but could also serve as a basic template for setting one up ready to go.
I’ve noticed 2 issues when using the template, not sure if they are bugs or I’m doing something wrong:
Context: Using Oculus Quest 2, both through oculus link and also launching in standalone mode.
Tests made in:
-PIE ‘VRPeview’ Editor button (Oculus Link)
-PIE ‘Standalone Game’ Editor button (Oculus Link)
-Packaged WIndows
-Launch on Android-Quest2 (for Quest2 Standalone mode)
1st Issue:
When launching in PIE ‘Standalone Game’ mode or in Packaged Windows (‘start in VR’ on), the point of view of the user goes to ground level (when I have my helment on, my head is in the floor, like if user’s heigh was 0).
With VRPreview (PCVR-OculusLink) or Launch to Quest2 (standalone play) the user’s heigh is ok and plays normal.
2nd issue:
If I open VRPawn asset blueprint in the editor and play VRPreview and I try to use the teleport function, the teleport trace does not appear and I’m not able to teleport myself (the teleport blue circle appears on the floor just beside me and never moves from there)
If I close the VRPawn asset, all goes back to normal and teleport functionallity is ok.
I know, this last one maybe is not a big deal, I can allways close the asset before making a VRPreview but it’s a bit annoying, and mainly I post it here in case it’s a smoking gun for a bigger bug.
It’s an issue with the models’ origin, not SteamVR. I thought I got all of the ones that were offset updated in 4.27.1 but apparently not. The “fix” is to re-export the Index controller model with a new origin.
Good call on the system menu buttons. We’ve gone ahead and removed them from the list of available input actions since they can’t be used, and I’m updating the template to use thumbstick press instead.
I can get it to work with SteamVR, though I have to manually add the bindings for the editor mode. I’ve noticed that in the json files with the SteamVRBindings, I can only see the editor mode bindings for the vive_controller.
Mind, once in game it all works fine, it’s the VR Editor mode that seems to have issues.
There is a hand menu example in the template. Doing the “debug”-version is simply having a function that Print String and dynamically adds a Text widget component to the Menu-widget and sets its text
VR Editor Mode is currently not supported with OpenXR, but it will be in 5.0. VR Preview works with WMR HMD’s, and if you’re using the Reverb G2 enable the HP Controller Input plugin.
Should there be any issue with the XR motion controllers triggering OnComponentBeginOverlap Events? I’m spinning my wheels messing with collision settings wondering why I can’t trigger a box collider with my controllers…
@Victor1erp
Is there any roadmap where the controllers will have rigged button response, e.g. Joystick movement, trigger/grip/button depression?
Or, is this going to be developer side expectation?
and if so, does that that mean no longer using built in Motion Controller Visualization and instead rigging custom controllers?
AFAIK no, however, there’s a chance that OnBegin and OnEnd will trigger multiple times due to late updates (special function in the render thread for tracked VR devices) - it’s generally better to trace or check for overlaps manually.
Not on any current roadmap, but it’s something that could happen in the future as the OpenXR specification matures. If that’s a feature you want in your project you’ll have to implement it yourself. You can find all of the individual meshes for controllers and their buttons here: https://github.com/immersive-web/webxr-input-profiles/tree/main/packages/assets/profiles
Note that they’re in .glb format so you’ll have to enable the GLTF importer in UE or convert them in a DDC.
Slightly off topic @VictorLerp but… where should I look to get information about that weird unlit material that did black magic with the sun position (or something like that) to fake shadows that you mentioned on the OpenXR template stream?
Just the name of the technique or some forum post on the topic would be greatly appreciated.
I was talking about using Unlit materials that fake self shadowing by applying a bias opposite of a Vector3 (which simulates a sunlight direction). This method doesn’t apply shadows from meshes to other meshes however, and requires most if not all of your content to be designed with it in mind.
This annoying error started popping when I try to Launch to my Quest 2.
LogPlayLevel: Error: ERROR: System.ArgumentException: Attempt to construct staged filesystem reference from absolute path (/T_Grid.ubulk). Staged paths are always relative to the staging root.
It looks like there is something wrong with T_Grid.ubulk? (that’s a texture on the Template afaik)
The “solution” to this problem seems to be to remove the project via adb every time I want to launch again (I took that from a generic android answer to that specific deploying problem)
What can be so special about that texture in particular that breaks the launch? what is an .ubulk?
PS: tried in various clean projects based on the OpenXR template, and the problem persists, it might be something on my quest tho, a corrupted file there or something like that.
@VictorLerp There’s an issue with the controllers snapping to VRPawn 0,0,0 when tracking is lost. Link to more details posted below, can we get any official comment on this?
I’m back from winter break and I got Covid right before new years eve so apologize for late response.
I tested this right before break and I wasn’t able to reproduce it. I 100% occluded my controllers and the MotionControllerComponent would stay in the transform it last reported.
Can you provide me with more details: Which HMD, Controllers, and Runtime are you using?
I’m getting it with the Valve Index headset and controllers with the SteamVR OpenXR runtime. Note that I’ve had the same issue with the 4.26 SteamVR plugin as well, and had to patch the engine to fix it.
Edit: The issue with the OpenXR plugin is with version 4.27.2.