SlimeVR Skeleton Example

Introduction

SlimeVR uses forward kinematics to calculate the position of a point on your body based on the rotations of a SlimeVR tracker. Inverse kinematics is typically used by games to calculate the rotations of a virtual skeleton to match the position of a SteamVR tracker.

To summarize

  1. SlimeVR tracker rotations -> SlimeVR Server
  2. Forward kinematics (SlimeVR) -> Rotations to positions
  3. SlimeVR Server positions -> SteamVR
  4. Inverse kinematics (SteamVR/Games) -> Positions to rotations

Illustration

Physical trackers

The images below illustrate wearing two physical trackers, a chest tracker mounted on the front and a hip tracker mounted on the back. These trackers are the input data for SlimeVR.

Note: The input does not include the skeleton, the outline is purely for illustrative purposes.

Click on an image to view it larger

SlimeVR server internal skeleton

The images below illustrate the internal skeleton of SlimeVR calculated from the rotational data from the two SlimeVR trackers and a resulting SteamVR waist tracker attached to the bottom of the skeleton’s hip bone. The rotation of the chest tracker is used for the top bone of the spine and the rotation of the hip tracker is used for the bottom bone of the spine.

Note: The illustrated skeleton does not accurately represent the skeleton used for SlimeVR, it is an artistic approximation.

Click on an image to view it larger

SteamVR output

The images below illustrate the resulting SteamVR waist tracker. This tracker is the output data from SlimeVR and is what is seen in SteamVR and games.

Note: The output does not include the skeleton, the outline is purely for illustrative purposes.

Click on an image to view it larger

Credit

The cases used for the illustration of SlimeVR trackers are the Hyperion cases (https://github.com/Smeltie/Hyperion) by Smeltie and contributors as listed on the GitHub page.