OPENXR in a BLANK template using HTC VIVE / STEAM VR / 5.1.0


I’m trying to setup a Virtual Production scene WITH the control of the VIVE CONTROLLERS and a static Cine Camera (NOT the HMD).

I tried doing it using #OpenXR temaplate for #VR - but it seems to be only working with the HMD - or does it not?

My second approach is to use a BLANK or a #VIRTUAL PRODUCTION template - set a custom Cine Camera to render the scene AND have the VIVE Controllers input movement AND triggers / buttons.

For now I managed to get the movement via #LiveLinkXR - but I can’t manage to get trigger/grip inputs from controllers.

I tried switching to OpenXR and Enhanced Input - but I get ZERO information from my VIVE controllers - while SteamVR is running and tracking. And SteamVR is communicating fine with the Unreal Engine because when I try to use the VR template with OpenXR plugin - everything works fine…

Any ideas on how can I have:

  • VIVE controllers movement input
  • VIVE controllers trigger/button input
  • custom CineCamera for rendering (and NOT the HMD)

ANy help would be much appreciated…


The XR system doesn’t seem to have any support currently for using it without rendering to the HMD. Not sure if it’s possible to do without reworking the engine.

To get input with the SteamVR OpenXR without wearing a HMD, you would have to enable the XR_MND_headless OpenXR extension. This would require either making a C++ plugin that enables it or modifying the OpenXR plugin itself.

Thank You for Your answer.
How about using a Spectator View in VR mode? Is the Spectator Cam subject to the same limitations as HMD cam? (no raytracing, forward rendering, OpenXR output resolution limitations…) ?

Not sure, I haven’t looked at it that much. It adds a new render pass though, so it would still try to render the VR views as well every frame.

You’re right about that - so no performance gains here - just more limitations.

There’s still the “old” method of MOTION ONLY input from controllers trackers - by disabling the OpenXR and tracking the movement of the controllers using LiveLinkXR and SteamVR plugins - works great on any UE template - but does not give any access to button and pad presses on the controllers - unless I’m doing something wrong…

The SteamVR plugin has been deprecated now. It probably hasn’t been updated to work with Enhanced Input.

We implemented XR_MND_headless in 5.1, and are currently working on making LiveLinkXR work with OpenXR/Enhanced Input. That includes Vive Trackers for both editor time and runtime.


Thanks for the info. How can I use XR_MND_headless in 5.1 ? How can I access this option? Is it doable in Blueprint or C++ only?

1 Like

Seems like it’s enabled by launching with the -xrtrackingonly command line parameter. Not sure how it’s supposed to work though, it doesn’t seem to update the tracking on motion controller components at least.

1 Like

I should have been clear that motioncontroller tracking and input is not yet implemented, but it’s currently being worked on.

1 Like

did you get it to work with UE 5.2.x ?

I have the same issues as you, however, I have seen people who were able to do it
however I just can not figure it out