Jump to content
 
chengnay

How to manage your trackers?

Recommended Posts

Many developers often complain some of the following problems,

1. Cannot get input from trackers

2. Sometimes trackers recognize as controllers

 

How to correctly manage your tracking devices:

- ✔️ If your apps/games only involved **2 handed controllers** (Vive Controller, Knuckles, Oculus Touch, WMR Controller)
- No additional settings required, SteamVR will automatically apply bindings for Left/Right Hand.

 

- ⚠️ If your apps/games involved **2 handed controllers** and **numbers of Vive Trackers**
- Open "Manage Vive Trackers" UI and set your trackers to the following roles individually
- Left Foot
- Right Foot
- Left Shoulder
- Right Shoulder
- Waist
- Chest
- Camera
- Keyboard
- Notice that orders is unimportant, just make sure all trackers have different role.
- Notice that you only able to setup up roles for up to 8 trackers in this case. For other connected trackers with no role(disabled) or duplicated role, VIU only handles their tracking data but not input data, because there is no default binding is applied. If someone knows how to do that, please let us know.

 

- ⚠️ If your apps/games only involved **numbers of Vive Trackers**
- Open "Manage Vive Trackers" UI and set your trackers to the following roles individually
- Left Hand
- Right Hand
- Left Foot
- Right Foot
- Left Shoulder
- Right Shoulder
- Waist
- Chest
- Camera
- Keyboard
- Notice that orders is unimportant, just make sure all trackers have different role.
- Notice that you only able to setup up roles for up to 10 trackers in this case. For other connected trackers with no role(disabled) or duplicated role, VIU only handles their tracking data but not input data, because there is no default binding is applied. If someone knows how to do that, please let us know.

 

- If your apps/games involved **more then 2 Vive Controllers**
- VIU will handle tracking & input data for two of the connected controllers. For other controllers, VIU only handles their tracking data but not input data. Like Vive Trackers without roles, there is no default binding applied for them. If someone knows how to bind actions for other controllers, please let us know.
- Notice that VIU handles the two controller that are assigned to Left/Right Hand, witch is controlled by SteamVR runtime. You can rebind the two controller to other VIU roles in your project and get their inputs as usual, but for other controllers, VIU will never get their inputs even if you rebind them into VIU role RightHand and LeftHand.

 

Reference: Vive Input Utility GitHub Wiki

Share this post


Link to post
Share on other sites

Still not working, i can get input from two controller and 1 tracker at most time
everytime i change the role for the tracker, the detection of input will be changed.
e.g. i can get input from tracker A, but not Tracker B & C. If i change the role of any of tracker, i may get input from Tracker B or C. But i can only get input from TWO trackers at most, i had never get three trackers input at the same time.
I have played with these all day, i am gonna crazy with such unreasonable settings.

here is my enviroment
vive pro
2 x controllers
3 x trackers
unity 2019.1.7f1
STEAMVR 1.5.9
STEAMVR Plugin 2.3.2 (sdk 1.4.18)
INPUT UTILITY PLUGIN (1.10.4)

Please help!!! Thank you so much!

@chengnay

Share this post


Link to post
Share on other sites

Thanks for the explanation.

You mention that the roles in SteamVR do not really matter. I am building a fullbody IK script based on the VIU and an old IKController script that works with animator.SetIkPosition() and SetIkRotation() and weights. I managed to get it working (had to do a little extra effort for the hip, since that is not an IK target in the animator), but currently I have the roles hardcoded (tracker1 is the hip, tracker2 is the left foot and tracker3 is the right foot).

How is that order determined? It looks like it depends on the order in which you switch on the trackers, is that correct? And what happens if the headset goes to sleep when it is not used for a while? Or when I close my laptop and reopen it again? I remember from working with the SteamVR deviceIds directly that those actions could change the values of the deviceIds and thus mess up my IK.

@chengnay

Share this post


Link to post
Share on other sites

This is handled by Role mapping in VIU - please check out the UI that's built in to do the mapping (right shift B).

https://github.com/ViveSoftware/ViveInputUtility-Unity/wiki/Embedded-Binding-Interface

Under the covers it's bound by serialnum - so doesn't matter what order you turn on trackers or if hmd falls asleep etc. No need to deal with device ids You may even map 2 trackers to the same role as a backup tracker to quickly replace at runtime when one runs low on battery. And you can actually physically label the trackers to make it easier. I've seen live performances use 10+ trackers, with the ability to do mapping while the app was running using the role mapping interface.

 

@mgyeung @jboss

Share this post


Link to post
Share on other sites

@Dario, unfortunately it does not work.

Upgraded to the latest VIU (although in the asset store it said v1.10.7 and in the settings I see now that it says 1.10.6, even after restarting my project. Weird....). The settings are as shown in the link you sent.

When I press right-shift and B nothing happens. No pop-up screen, no errors or warnings, just nothing. I tried the repair define symbols, just to see if that made a difference, but no effect.

Is there a pre-requisite that is not mentioned in the description? I am using SteamVR 1.2.3, because when updating to 2.x earlier the open bindings button did not work. I just now tried the update again (to 2.5.0) and altough that button works I get a gazillion of compile errors because SteamVR_Controller and _ControllerManager and _TrackedObject no longer exist. Not only in my code but also in NewtonVR, which is no longer maintained. Great! And after this SteamVR update I don't see the VIU settings in the preferences anymore, so that seems to be broken now as well. Great!

@chengnay

Share this post


Link to post
Share on other sites

@jboss Regarding the version still shows 1.10.6, it is because VIUVersion.cs is not updated to 1.10.7. Please ignore this part.

To bring up the binding interface window, may I know which scene did you test on?

Could you refer to this wiki page and try again?

Please note that "Make sure your app gets input focus (by clicking the app preview window or editor scene window)"

Share this post


Link to post
Share on other sites

@chengnay I tried it in my start-up scene. And just now as a test I tried it in two different scenes and there it works. I can see the pop-up menu and I can see the VIUBindingInterface(Clone) GameObject. In my selection scene that GameObject is not created. The selection scene has an on-screen canvas and in-world canvasses, but one of the other scenes as well.

I tried a different key combination (Esc + B) to make sure the old one was not used for something else, but that also did not work in the selection scene.

Share this post


Link to post
Share on other sites

@jboss Are you able to share your sample project?

Or simply screenshot(scripts and key components) what you have in your scene?

Did you try VIU example scene (7.RoleBindingExample)? Does it work?

Share this post


Link to post
Share on other sites

I found the reason. In the selection Scene I am not using VIU. I have the regular SteamVR [CameraRig]. When I added the VivecameraRig it works.

I guess this should be added to the documentation as pre-requisite.

 

@chengnay

Share this post


Link to post
Share on other sites

Hi @chengnay, I managed to use `SteamVR_Action.trackedDeviceIndex` to distinguish different trackers with the same tracker role. Hope it helps:)

  • Like 2

Share this post


Link to post
Share on other sites

Please sign in to comment

You need to be a member in order to leave a comment

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...