Open Cases

Known Bugs and Limitations

Wrong Controller Pivot on Different Platforms

It has come to our attention that controllers are off on some platforms. It turns out that every platform has different pivot for every controller. This is either an engine bug or a just a pre-OpenXR era thing. Anyway, we implemented a way to solve this. But we need your help to complete it.

HMD

OculusHMD

SteamVR

WMR

OpenXR

Valve Index

---

OK

---

OK

HTC Vive

---

---

---

OK

HTC Cosmos

---

---

---

Needed

Oculus Rift

OK

Needed

---

Needed

Oculus Rift S

OK

OK

---

OK

Oculus Quest

OK

OK

---

OK

Oculus Quest 2

OK

Needed

---

Needed

WMR

---

Needed

OK

Needed

What You Need to Do

Have a look at the table. If you have a hmd that we need help with, perform these tests to find an offset.

  • For SteamVR, disable OculusVR and enable SteamVR plugin.

  • For OpenXR, disable OculusVR, enable SteamVR and OpenXR plugin. And opt in to Beta for SteamVR.

  • To verify whether you are on the correct platform, print Get HMDDevice Name on BeginPlay.

  1. Set the 'Settings>Visibility' to 'Controller' in BP_VRPawnGS.

  2. If you are testing for SteamVR, set the 'Display Device Model' to 'true' and 'Display Model Source' to 'SteamVR' in BP_MotionController>MotionController>Details. This will tell SteamVR to show where controller is in VR.

  3. Try to bring the controller to real position as close as possible with DT_PlatformOffsets.

  4. Touching the controllers together or returning to platform menu will help a lot.

  5. Send us the transform you found.

AutoDetect for SteamVR and OpenXR

AutoDetect only works with Oculus HMDs at the moment. Adding other HMDs are possible but we don’t know how to identify them. Please contact us if you know how to identify them.

Directional Thumbsitck Inputs for OpenXR not Working

On 4.26 and 4.27, Thumbstick Up, Down, Left and Right events for Oculus Quest does not fire on OpenXR. This problem doesn't exist on other platforms. So we implemented an emulation for every Oculus devices. If you see this behaviour in other HMDs, reach out to us on Discord. We'll show you how to enable emulation for those HMDs.

New Features/Improvements

Input Actions

It has come to our attention with a review that, the way we are currently using the input mappings are cumbersome and a comprimise for some usecases. It didnt cross our mind that this would happen when we were developing. But that review made us realize this possibility. That is why we are experimenting with new input mappings.

The problem with the current input mappings is that, we need to have an action input for everykind of button for hand anims to work. This results in too many input mappings and the Input Graph overwhelms new users.

First Solution

We deleted every action mapping and used 'Any Key' to get every input registered. This works like a charm on Oculus. But it doesnt work on SteamVR and OpenXR. Basically, if an input is not registered in the action manifest, the engine cannot pick that input on SteamVR. We described how to test this in BP_VRPawn_GS_Exp. Let us know if there is a way around this.

Second Solution

We kept every action mapping like before but we at least wanted to hide them from the end user. In theory, this can be achieved with SteamVR Input. SteamVR Input allows you to specify Action Sets (basically group of action mappings) and allows you to hide certain Action Sets from the end user. However, for some stupid reason, multiple Action Sets are still not supported on UE4. Have a look at the ActionSetExample binding we provided in the Config folder. Compare these with the default bindings that SteamVR Input generates.

"action_sets": [
	{
		"name": "/actions/dev",
		"usage": "hidden"
	},
	{
		"name": "/actions/main",
		"usage": "leftright"
	}

Regenerating bindings overrides these changes.

With this setup, we can actually hide the bindings from the end user in the bindings dashboard. But the editor and packaged game doesn't recognize these changes. Because of this, controllers are not tracked on runtime. Let us know if there is a way around this.

Last updated