Guides

Full-Body Tracking

🚧

Recent Changes!!

VRChat IK 2.0 has recently released! This was a major rework to many Full Body Tracking related systems. This page has been updated to reflect those changes. However, further changes to our Full-Body Tracking documentation may be added as needed.

VRChat supports additional tracking points using Lighthouse ecosystem trackers such as HTC Vive Trackers, Tundra Trackers, or others to permit tracking of these areas on the body:

  • Feet
  • Knees
  • Hip
  • Chest
  • Elbows + Shoulders (a single tracker will be mapped control elbows and shoulders simultaneously. That tracker must be worn above the elbow)

At this time, VRChat supports a maximum of eight additional trackers in addition to the headset and controllers. VRChat does not officially support any other method of Full-Body Tracking.

Some users have found success with various other methods using other hardware (such as the Kinect). We don't support these methods, but if it works for you, that's fine! We will be unable to help you via VRChat Support with these alternate methods, however.

❗️

Experimental Implementation

This system is experimental and is subject to change or overhaul that may deprecate or modify previous behavior! If you're using this system, pay close attention to updates to ensure you are adapting to new behavior and requirements.

Initial Setup

In order to avoid issues with mixed-up trackers and controllers, it is considered best practice to define which tracker goes where in SteamVR. Here's how you do this:

  1. Launch SteamVR. Keep your headset off.
  2. Turn on all your tracking devices, like controllers and trackers.
  3. In the SteamVR window, click the three lines (the "hamburger menu") in the top left. Hover over "Devices", then click on "Manage Vive Trackers."
  4. In the window that pops up, click "Manage Vive Trackers" again.
  5. You'll see a list of your tracking devices. You can click the dropdown to the right and assign them to your Left Foot, Right Foot, or Waist.
  6. To help identify them, choose one of your trackers. Hold down the button on the other two until they turn off. The screen will show a green icon next to trackers that are on, and a red icon next to the ones that are off. Now, you can see which tracker is which. Assign appropriately.
  7. Identify and assign the other two trackers. It may be helpful to label your trackers or keep track of them somehow so you always use them for the appropriate tracking location.

👍

It actually doesn't matter much which point you assign trackers to-- as long as none of them say "Held in Hand". However, for compatibility with other applications and potential changes to VRChat in the future, it is probably best to assign them properly.

Using Full-Body Tracking in VRChat

When you boot-up VRChat with the required trackers paired with SteamVR, it will automatically detect that you are in "Full-Body" mode causing new options to appear in the UI. Before using full body tracking you must click the "Calibrate FBT" button in your quick-menu, and you will have small spheres on the points where your trackers are located. This is called Calibration Mode.

🚧

Be careful while calibrating!

Make sure you aren't going to walk into a wall or object while calibrating! If your model is in an odd spot to calibrate, move into a better position, open your Quick Menu and click "Calibrate". This will reset the process.

To Calibrate, it is easiest to follow this procedure.

  1. Enter Calibration mode by clicking the "Calibrate" button in the Quick Menu.
  2. Ensure your Height setting in the Settings menu is correct. If this is incorrect, your feet may go through the floor!
  3. Make sure your playspace is calibrated properly and isn't offset by tools like OpenVR Advanced Settings or Playspace Mover.
  4. Your avatar will be attached or "pinned" to your HMD. This allows your viewpoint to always be correct, assuming you've set it correctly in the SDK.
  5. Look down and ensure your IRL feet are separated by the width of one of your feet. Because your avatar is "pinned" to your HMD, your legs will sink into the ground when you look down, because you're moving your head down. Don't worry, this is expected.
  6. Check your hip tracker and ensure it is in a reasonable location for your hip tracker.
  7. If using elbow/shoulder tracking, align your arms with your avatar's arms. Even without those trackers this can also help ensure your body rotation is on point.
  8. Lift your head and look directly forward! No need to worry about your viewpoint-- it will always be "as good as it can be". If you're looking down when you press the triggers, your viewpoint will be off. If you don't stand up straight and look forward, you won't be aligned with your feet or hips.
  9. Click both Interact buttons (typically Trigger) on your controllers simultaneously.
  10. Done!

If you want to use the old "legacy" method of calibrating, you can launch VRChat using the --legacy-fbt-calibrate launch options.

  1. Enter Calibration mode by booting into VRChat while wearing Full-Body tracking and clicking the "Calibrate" button in the Quick Menu.
  2. Align yourself with your avatar so you're "inside" of it.
  3. Align your feet with your avatar's feet using the spheres. If your legs are too long on your avatar, this may appear as if you are putting your feet in your shins. That's OK, but you'll be on "stilts".
  4. Align your hip tracker with the approximate position of your tracker on your own hip.
  5. If using elbow/shoulder trackers, align your arms with your avatar's arms. This can also help ensure your body rotation is on point even when not arm trackers.
  6. Look directly forward! Ensure your viewpoint is in roughly the right position. If it isn't, you might want to try toggling the Avatar Measurement option to "height mode" and then restart calibration.
  7. Click both Interact buttons (typically Trigger) on your controllers simultaneously.

Congratulations, you are now calibrated for Full-Body!

Rigging Requirements

There are special considerations if you are using Full-Body tracking. There are several recommendations that will ensure that your avatar works well when using Full-Body tracking. If you are using an avatar that hasn't had these refinements/checks performed, you may run into odd behavior.

First, a short glossary:

  • Bone Head - The bone's position. In Blender and most other 3D software, there is a Head and Tail to any given bone. Unity only uses the "tail" or "length" of a bone to determine the rotation of the bone transform. The Head determines the location of the bone transform.
  • IK-driven Bone - Any bone that is mapped in the Mechanim Rigging Configuration screen.
  • Bone Roll - The rotation of the bone along its local Y (up/down) axis.

Full-Body Tracking works best when:

The avatar being used is proportional to a typical human being in regards to limb and torso length. This is not a hard requirement, but it is ideal. If your limbs are disproportionate, you may experience behavior like "arm pull" (your avatar's arms are too short), "stilts" (your avatar's legs are too long), or other strange behavior. You may also have trouble aligning your viewpoint when calibrating if your general Legs>Hips>Spine>Chest>Neck>Head chain proportions are off.

The spine should not have sudden bends. While it's fine if the spine is not completely straight, any bend in the spine will be treated as "slack" that the IK system will attempt to straighten. If the rest-pose of your avatar has sharp bends in the spine it may look strange once those bends are straightened out when IK solving is active.

"Roll" on all IK-driven bones should be set to zero. In reality, it doesn't really matter what value this is-- as long as all IK-driven bones have the same value.

There are no "Full-Body Hacks" in use such as flipped hips, extra leg bones, zero-length or unweighted necks, or other similar changes. These changes can have greatly detrimental effects to rig behavior, and will eventually break with future Full-Body Tracking changes.

Your User Height is set properly in Settings, and you do not crouch while calibrating. In addition, ensure that your playspace is "zeroed out"-- as in, you're not using Playspace Mover or OpenVR Advanced Settings to have an offset before calibrating. Doing so will cause significant issues.

The distance between bones is greater than zero. You shouldn't ever stack bones on top of each other when they're part of the IK-driven armature and are parented/children of each other. This is especially important for the Hip>Spine>Chest>Neck>Head chain!

The bottom of your hip bone should be above the top of your upper leg bones. The Hip should always be above the top of the leg bones! Don't move it too far, or you may run into issues where your hip "flips" upward during locomotion.

1263

Move the hip up above the line established by the two upper leg bones.

📘

Keep in mind that Unity does not care about the "tail" or "length" of a bone as described in Blender and other 3D software, aside from using it to determine the rotation of the bone transform.

There is a very slight bend in the knee and elbows. This is required for the IK solver to operate properly. The bend can be extremely small, but it should bend "dominantly" in the appropriate direction. The bend for the elbows should be towards the back of the rig, and the bend for the knees should be towards the front of the rig. In other words, the corner formed at the elbow by the rig bones should always be pointing to the back, and the corner formed at the knee by the rig bones should always be pointing forward. Additionally, your legs should not be buckled inward-outward when viewed from in-front.

Here's some examples of what you should be aiming for:

1040

Orthographic Side/Front View. Example for Leg bones. The bone below the Lower Leg is the Ankle/Foot.

1430

Orthographic Top View. Example for Arm bones.

Tweaking your Rig

Although the full-body tracking system in VRChat is quite robust, it works especially well when you have a well-proportioned avatar. If you're interested in fixing up some common issues with your rig and making it feel perfect in Full Body Tracking, check out Kung's guide. It is extremely well-made, and very easy to follow given some basic existing knowledge of Unity and Blender.

Some of the fixes there are targeted for pre-IK2.0 / legacy IK so don't feel obligated to apply a fix if you aren't already having an issue. Any of the fixes labeled "RIG HACK" are not recommended, however-- if you do use them, you should expect your rig to have issues if VRChat makes tweaks or changes in the future.

Avatars 3.0 Features

When you're creating an avatar with Avatars 3.0, you will have two new options that may be relevant to you while using Full-Body Tracking.

Use Auto Footstep

This option is on by default. It only applies to 3-point or 4-point tracking. Turning it off means you're disabling the procedural lower body animation for room-scale movement. This procedural animation is what plays when you move around in room-space while in 3 or 4-point tracking.

Leaving "Auto Footsteps" on (which is the default state) will still allow you to enable/disable tracking via the Tracking Control state behavior.

If "Use Auto Footsteps" is off, enabling/disabling tracking on your legs and hips won't do anything, and you're relying on your animations to drive your lower body at all times.

Force Locomotion Animations

This option is on by default. It only applies to 6-point+ tracking.

When "Locomotion Animations" is on, locomoting in FBT (as in, moving your joysticks) will play a walking/running animation, as it does in Live currently.

When "Locomotion Animations" is off, locomoting in FBT will NOT play the walking/running animation. This is useful if you wish to "mime" your walking with your full-body tracking movement.

If you are turning off "Locomotion Animations", do not use the default Base and Additive layers. You're expected to make your own!