Skip to content

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:

  1. Open the project
  2. Go to Avatar Settings
  3. Enable ✔ Full Body

This unlocks the list of compatible avatars stored in:

C:\Program Files\WorldViz\Sightlab2\sightlab_resources\avatar\TrackedAvatars

img

Avatar Preview

img

  • 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:

  1. Use your normal headset config (e.g., “Vive Pro Eye”)
  2. Attach the Tracker to the physical object
  3. 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

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.