How to use Vive Trackers in UE 5.2 and later versions

Ok, Figured this out for those future googlers.

This is my use case - it may be different if you have different needs:

VR - not using controllers, but rather 2 Vive 3.0 Trackers to track an objects location and register inputs from either the “Power” button on the Vive Tracker or the POGO pin Trigger pin.

Using UE 5.3.2
Clean project using the VR template.
Enable the following plugins if not already enabled. (OpenXR, OpenXRViveTracker, Enhanced Input) - any other generic plugins that were already enabled should be fine.
Create a new Pawn.
Add a MotionControllerComponent to the Pawn’s Default Scene Root.
Add an XRDeviceVisualization Component as a child to the MotionControllerComponent.

In SteamVR, you need to assign a role to your trackers, and match this to your MotionController Component’s Motion Source in the Details Panel.

Next you’ll need to create your Input Action, I created one called “IA_TrackerButton”

Add that Input Action to your Input mapping context (I just added to default IMC_Default). Vive Tracker button presses seem to be recognized as regular Vive Controllers. I am using the Vive (R) Trigger as the input button.

In your Pawn blueprint add the Enhanced Input Event you want to trigger, (show in the first photo just as a print string.)

Back in Steam VR Settings, Under Controllers chose the option to manage controller bindings, I did not choose an application but chose Custom, then Edit This Binding.

That should bring up a Steam Controller binding page (Similar to the web interface used in 4.27 for controller mapping and binding). The first time it defaulted to the index controllers I’m using, so In the top left, choose the back button until you get to the main screen where you can choose the controller you want to edit and bind. Where it says current controller, choosing the text in the green box (this may differ for you based on your selected binding) will show you all the controllers/trackers you have attached to your system and their role.



Choose the one you wish to use and make sure its the right role. In my case I’m using the tracker I’ve assigned to the role “Right Foot” even though the application has nothing to do with feet.
*** I’ve noticed UE doesn’t want to recognize the tracker if it’s role is set to Held in Hand***

Once you have your tracker selected, this should reload the previous page and show you what binding profile you have, my photo above shows “Saved UTS53 configuration for Vive Tracker on Right Foot”. Choose Edit right next to that, and it will open the current bindings for that tracker or controller. Click the plus button next to the button you’d like to use, and select the type of button you’d like to be. I chose “Button”. It should default to the action of “Click”, and show “None” as the current assignment.

Click “None” and it will display a list of the current possible Inputs you have available in your project. In my example, I created the Input Event “IA_TrackerButton” as a boolean action so its shows as this. I select that as by action and choose, Save Personal Binding.

Now in my VR project, with everything setup when I press the power button on top of the tracker, I get my print string.

Hope this helps someone.

1 Like