Vive trackers - how to?

Hi All

I am trying to make vive trackers work with UE4(.21) however I have a hard time finding any documentation on the subject or any recent in-depth tutorials.

Any pointers would be warmly welcome


Create a character/actor BP
In the + Add Component search for the Motion Controller component
Under the Details tab, change its role from “Left” ( default ) to be “Special1”
Attach a cube ( scale it to 0.1 ) to the Motion Controller component
Turn on the Vive Tracker and hit Play or Simulate, move the Vive Tracker and you’ll see the cube moving accordingly

Thanks a lot - it works!
Actually the only tutorial I could find only was your video “Development vlog#2” - however apparently I needed the steps ‘carved out in wood’. Thanks again.

Are there a way to identify each tracker by a unique id in Unreal so one can assign the right motion source (special 1-11) by code?

Have you tried the ‘no hmd’ work-around?
Steam v1.21 beta made a lot of mess for me so I had to role back to v1.14 (not beta) before managing to make the trackers work with unreal.
I will test it out. But comments are very welcome.
My intension is to use the trackers without the hmd or vive controllers

What are the best practices to calibrate the ‘tracked 3d space’ to the ‘unreal 3d space’?


Hey Søren,

Sounds like you want to do Full Body Mocap :slight_smile:
I’m already doing thatusing IKinema Orion and the Vive Mocap Kit, so if you want to develop your own solution is going to be fun!

About the Vive Tracker assignment, as far as I know the ID ( Special1,2 ) is assigned based on how they’re switched on, so the first one is going to be named “Special1”, the second “Special2” and so on.
You can get the name of each one and then assign them using Blueprints, and then do the calibration onto a character, but then again I’m using existing softwares/plugin that already do this job, so no need for me to do the entire logic from scratch.

About the “No HMD” trick, I tried that a while ago and it didn’t work, not usre if now something has changed, but I always have my Vive plugged in and my 10 USB ports with the dongles, so every time I need to do mocap I just switch the Trackers on and let IKinema/Vive Mocap Kit do its job, and record the entire thing using UE4.

Actually I am not going to use full body mocap. Just one point pr. Person/object -
I have seen your videos with full body mocap with vive trackers and they look really good. The gloves from noitom looks awesome.

For full body I have been evaluating different inertial systems. Xsens is awesome. The Rokoko are great too. Both suffer from drifting without any additional tracking system ie. like the Star tracker object tracker or vive tracker. Actually Rokoko can be used with vive trackers.

I have noticed that starting steamVR one have to start the trackers in a specific order for them to be assigned to the correct/programmed motion source ‘special_1 -11’ like you said. But afterwards turning trackers on/off make them keep the assigned ID as long as steamVR isn’t restarted.
Not sure what node/BP code to use to extract the unique trackerID and afterwards assigning them to the intended motion source.
what software do you use / recommend for that? Does Ikenama handle that for you?

do you use the steamVR beta drivers?

I have yet to figure out the best way to calibrate the unreal 3D space and vive tracked space.
As far as I can see the trackers move relative to the spawn position? Correct?


Yep, IMU based mocap suits all have the same drifting issue, and I managed to create a custom solution for the Perception Neuron Mocap Suit ( shameless self promotion here ), and yes, adding a tracked object does solve the issue properly.
The ID issue is whenever you restart SteamVR, so unless you’re willing to switch on the Trackers in a precise order, you’re going to have that issue.
About the ID, it really doesn’t matter that much, since based on other solutions ( both IKinema and Vive Mocap Kiot as far as I know ), use proximity within a volume, in order to identify that the Tracker correspond to say “Left Hand”, so once it gets that information, the setup does the linking and calibration in space.

You can choose either IKinema or Vive Mocap Kit, both have trials/demos you can try, so feel free to evaluate both and see what works for you…also because both are targeted to be used for mocap or VR projects, so you need to see what suit your needs.

Regarding calibration and other stuff, let’s say that it can’t be explained in few words, and there is a reason why there are so few softwares/plugin that are able to accomplish that.

Good luck :wink:


Gotcha :wink:

Thanks Nicolas

Sorry to resurrect this thread, but it was the only link I found. I am in possession of a few trackers that I wanted to use in UE4 (4.22). I tried adding a MotionController with “Special_n”, however it does not seem to work. Could this be because the trackers are the 2017 variant? They work if I get set the orientation and location manually, though.
Is it possible to flash them? The steamvr doesn’t seem to say that they need to be updated.

What else could be wrong? I have basically just created a BP with a motioncontroller as root and a staticmesh as child. The motioncontroller is associated to Special_1 (I have tried them all but they don’t work either).

Hi Nicolas, Im using a third person template, that has steam vr activated as a plugin. And im trying to use a vive tracker for moving an object on 3d space. Made a simple actor blueprint that contains a MotionController component and a cube. On my Pawn blueprint im telling on begin play to spawn that blueprint and attach it to my pawn. This is the common way i usually use my trackers in my VR projects and never had issues. But now i just cant find the way to make the tracker work on this one, any ideas? thanks a lot

I had the same issue a while back - (with 2018 trackers, UE4.21.2)
SteamVR introduced a change so that you have to define input bindings for each controller/tracker for them to show up in an application, unreal included. In steamVR.
If you define them i.e as’ keyboard’ they show up just fine when using the ‘others’ device id category in the blueprint. Depending on how you define the bindings from the options on the list in steamvr they show in a different device id category in the blueprint.

Could you please give a bit more explanation as to what you do to make it work? I’m also struggling with the trackers and I’m not entirely sure what you do to make it work.

I did a quick test and on 4.21.1 ( I’m still on this version for technical reasons ), if you create an ActorBP, insert a MotionController component and assing Special_1, the Tracker does its job and I can see the sphere I assigned as a child of the MotionController moving accordingly.
What I usually do is to first turn on the Vive controllers, then turn on the Tracker, so that the ID won’t be an issue, but I also did a test where I first turn on the Vive Tracker and then the Motion Controllers, and it does work properly and there aren’t any switching of role.
I’m on SteamVR 1.14.18 by the way.

Here is a copy of the ActorBP, that is super simple: