Controller Emulation in ReLive VR - GPUOpen-LibrariesAndSDKs/Radeon-ReLive-VR GitHub Wiki

Choosing Which Headset to Emulate

Streaming to standalone headsets like Oculus Quest or HTC Vive Focus Plus is not part of OpenVR's default functionality. ReLive VR emulates one of the supported wired headsets, such as HTC Vive, HTC Vive Pro or Oculus Rift. VR applications running in the OpenVR environment think that they are displaying to one of these headsets and decide how to render and handle controllers based on the headset type they see. Some applications use the default render models provided by OpenVR, while others supply their own - this is why controllers may look slightly differently in different applications. Currently ReLive VR can emulate the following headsets:

  • HTC Vive
  • HTC Vive Pro
  • Oculus Rift CV1
  • Oculus Rift S

Headset emulation determines the look and the behavior of hand controllers in VR applications.

Starting with the Adrenalin 2020 driver you can configure which headset you want to emulate from Radeon Settings. Navigate to the VR Streaming section of the General tab of the Settings page and simply select the headset type you want to emulate from the VR Headset Emulation drop-down box. Alternatively you can select which headset to emulate from the Headset page of the Web browser-based UI

You can also configure which headset is being emulated manually by editing the HeadsetProfile variable in the Application section of the settings.json file:

  • "HeadsetProfile" : "HTC Vive" - for HTC Vive emulation
  • "HeadsetProfile" : "HTC Vive Pro" - for HTC Vive Pro emulation
  • "HeadsetProfile" : "Oculus Rift CV1" - for Oculus Rift CV1 emulation
  • "HeadsetProfile" : "Oculus Rift S" - for Oculus Rift S emulation

Once you've changed the headset profile, save the settings.json file and restart SteamVR. Controllers will appear and operate according to the value set.

Typically you would want to emulate HTC Vive or Vive Pro with controllers that have trackpads (like the HTC Vive Focus Plus 6DoF controllers or all 3DoF controllers like HTC Vive Focus, GearVR/Oculus Go and Daydream) and emulate Oculus Rift for controllers with joysticks and A, B, X, Y buttons (Oculus Quest). There might be cases however, when you want to emulate Vive/Vive Pro with Oculus Quest and vice versa. This might be useful, for example, if the application does not support the desired type of controllers (as it would be with Oculus-only games injected with Revive played with Oculus Go, HTC or Daydream). There are also games that support both Vive and Rift, but default to the native Oculus API when they detect an Oculus device - this would result in controllers not functioning at all.

Control mappings might be incomplete or cumbersome when emulating controllers that don't match your physical controllers:

  • Joysticks would operate like trackpads and vice versa. This might cause issues with some games that rely on certain behavior of these controls - you can lift your thumb off a trackpad at any coordinates while a joystick would always return to its 0 position when released
  • Pressing on the joystick button in its off-center position to emulate a click on the trackpad may be cumbersome for some users
  • A and X buttons of the Oculus Touch controllers map to the Application menu buttons of the Vive controllers
  • B and Y buttons of the Oculus Touch controllers map to the System menu buttons of the Vive controllers. The Menu button on the left Oculus Touch controller also opens the System menu
  • Fully depressed analog grip buttons of the Oculus Touch controllers are equivalent to pressing the grips of the Vive controllers
  • A, B, X and Y buttons currently do not have equivalents on the HTC Vive Focus Plus controllers

There are also limitations when using Oculus Go/Gear VR controllers:

  • Controller position is emulated using the elbow model
  • The Grip button is not available
  • There is no analog Trigger button. Games requiring analog trigger might have limited functionality
  • A click on the top edge of the trackpad maps to the press of the System button on the original Vive controller
  • A click on the bottom edge of the trackpad maps to the press of the Menu button on the original Vive controller

HTC Vive Focus Plus controllers map to Vive controllers one-to-one with one exception:

  • System button of the Vive controller is emulated with a simultaneous press of the Grip and Menu buttons

Daydream controller uses the following mappings:

  • Click on the top of the trackpad emulates the Trigger button of the Vive controller
  • Short press on the App button maps to the Application menu button of the Vive controller
  • Long press on the App button maps to the System menu button of the Vive controller

Using Third-Party Controllers (gamepads, steering wheels and alike)

Most games and professional application require two 6DoF controllers to operate properly, which limits the use of headsets with 3DoF controllers. Also some users might prefer the Xbox style gamepad to 6DoF controllers when playing certain type of games (car racing is a good example, since holding a single gamepad with both hands resembles holding the steering wheel more closely). Some games might exhibit unpridictable or incorrect behavior when both 6DoF controllers and a gamepad-like controller are detected at the same time. You can disable your headset controllers by setting the Use Third-Party Controller to Enabled in the VR Streaming section of the General tab in Radeon Settings. Restart SteamVR after changing this setting.