Vive Trackers
Full Body Tracking • Object Tracking • Avatar Support • SteamVR & OpenXR
SightLab provides a flexible and powerful set of tools for using HTC Vive Trackers and Vive Ultimate Trackers in VR research.
This page explains everything you need to know to use Vive Trackers for:
✔ Full-body avatars
✔ Object tracking
✔ Saving 6DoF tracker data
✔ Customizing avatars
✔ Using new SightLab 2.6+ full-body presets
1. Enabling Full Body Avatars
1.1. From the GUI (Single or Multi-User)
In both the SightLab GUI and Multi-User Client, simply:
- Open the project
- Go to Avatar Settings
- Enable ✔ Full Body
This unlocks the list of compatible avatars stored in:
C:\Program Files\WorldViz\Sightlab2\sightlab_resources\avatar\TrackedAvatars

Avatar Preview

- Multi-User Client shows the preview automatically.
- Single-user GUI → click Show to display the avatar in the scene.
1.2 Avatar Compatability
Vive Trackers require avatars with a compatible retargetable full-body skeleton.
- Complete Characters (CC Library)
All included in SightLab & fully supported for Tracker rigs.
(contact support@worldviz.com to see about getting the full library of Complete Character avatars).
2. Selecting the Correct Tracker Mode in SightLab
SightLab includes several presets for Vive Trackers. Choose the one that matches your hardware.
2.1 Full Body Tracking Modes (NEW – SightLab 2.6+)
| Your Hardware | Choose This Mode |
|---|---|
| SteamVR headsets (Vive Pro Eye, Vive Pro 2, Index, Varjo, etc.) with Vive/Ultimate Trackers | Vive Trackers Full Body |
| Vive Focus 3 / Focus Vision using Vive Business Streaming + Ultimate Trackers | Vive Trackers Full Body Focus Vision |
These presets automatically:
- Configure tracker roles (hips, feet, chest, elbows)
- Enable full-body IK
- Link the correct avatar bones
- Handle multi-user replication
This is the recommended modern workflow.
2.2 Legacy Tracker Configurations (Still Available)
These allow manual avatar swapping or specific older workflows.
| Dropdown Name | File Used | Avatar |
|---|---|---|
| Vive Trackers SteamVR | vizconnect_config_viveTrackers.py |
Mark avatar |
| Vive Trackers CC | vizconnect_config_viveTrackers_CC.py |
Complete Character (male) |
| Vive Trackers CC Female | vizconnect_config_CC2.py |
Complete Character (female) |
3. Object Tracking (Non–Full-Body)
If you want to track an object, not the user’s body:
- Use your normal headset config (e.g., “Vive Pro Eye”)
- Attach the Tracker to the physical object
- Use the example in:
ExampleScripts/ViveTrackers/Object_Tracking
This shows:
- How to attach a Tracker to a 3D model
- How to save its 6DoF pose into the data file
- How to visualize it in VR
4. Saving Tracker Data (6DoF Logging)
SightLab automatically logs gaze, head, and interactions.
Tracker data must be added manually, using custom columns.
Example:
import steamvr
import vizact
tracker = steamvr.getTrackerList()[0]
# Add custom columns
cols = ['Tracker1 X','Tracker1 Y','Tracker1 Z','Tracker1 Yaw','Tracker1 Pitch','Tracker1 Roll']
for c in cols:
sightlab.addCustomTrialDataColumn(c)
def log_tracker():
pos = [round(v,3) for v in tracker.getPosition()]
rot = [round(v,3) for v in tracker.getEuler()]
sightlab.setCustomTrialData(str(pos[0]), 'Tracker1 X')
sightlab.setCustomTrialData(str(pos[1]), 'Tracker1 Y')
sightlab.setCustomTrialData(str(pos[2]), 'Tracker1 Z')
sightlab.setCustomTrialData(str(rot[0]), 'Tracker1 Yaw')
sightlab.setCustomTrialData(str(rot[1]), 'Tracker1 Pitch')
sightlab.setCustomTrialData(str(rot[2]), 'Tracker1 Roll')
vizact.onupdate(0, log_tracker)
This works for:
- Hip, foot, chest, elbow trackers
- Handheld tools
- Props or objects
5. Mirror Scene
![]()
SightLab includes a mirror demo to help validate:
- Tracker alignment
- IK posture
- Tracker role assignment
- Avatar scaling
Located at:
ExampleScripts/ViveTrackers/Mirror
6. Replay Mode (Tracker Limitations)
Replay currently supports:
✔ Head and gaze
✔ Controller actions
✔ Interaction events
Replay does NOT yet support:
✘ Full-body avatar playback
✘ Tracker-driven skeleton recreation
Optional workaround (recommended):
Add a small visible avatar head so viewer movement is easier to interpret:
avatarHead = replay.sceneObjects[AVATAR_HEAD_OBJECT]['1']
glowbot = vizfx.addChild(r'.../GlowManBlue.osgb')
def replaceAvatarHead():
viz.link(avatarHead, glowbot)
vizact.onupdate(0, replaceAvatarHead)
7. Helpful Example Scripts
Located in:
ExampleScripts/ViveTrackers
Includes:
- Mirror Scene (self view)
- Full body IK demo
- Object tracking demo
- Saving Tracker 6DoF data
These are extremely useful starting points.
8. Further Setup Guides (Highly Recommended)
- Vive Trackers Setup
https://www.worldviz.com/tech-tips/htc-vive-tracker-setup - Vive Ultimate Trackers Setup Guide
https://help.worldviz.com/sightlab/vive-ultimate-trackers/ - Full Body Avatars (General)
https://help.worldviz.com/sightlab/full-body-avatars/