Advanced Parameter Setup - regzo2/VRCFaceTracking GitHub Wiki

This wiki page will go over the various parameter types, which ones are appropriate to use, and how to set them up in Animator Controllers in order to use them for VRCFaceTracking.

This page also assumes you know how to already setup animations and animation controllers in Unity for VRChat avatars. A lot of the terminology used is relevant to being able to set the parameters up appropriately.

Parameters in General

VRCFaceTracking provides the user with many parameters that can be used to control animations on a VRChat Avatar, using Animation Controllers. You can find all the available parameters here, with their given functionality and Range.

All parameters come in various forms: Float, Binary, and Bool. Each of them have their own advantages and drawbacks, so picking which parameters will be using what type will be important to getting the best face tracking performance and space-savings.

It's also important to use Combined Lip parameters when using lip parameters as much as possible, as you will be getting a huge amount of space savings by using them.

Float Parameters

Float parameters are, for the most part, the best parameter type to use: they are the most flexible, have priority*, get smoothed over the network (if under priority*), and the easiest to setup parameter. Float parameters have the ability to be used in Blend Trees, which gives them the ability to blend between multiple animations at a time.

*Priority is an attribute given to a Float parameter which makes it operate under IK Sync, the fastest network sync available in VRChat. Only float parameters and only up to 8 of them can operate in this mode.

Float parameters are typically driven with a Blend Tree, such as the one pictured below:

There are multiple Float parameters that are given in an X and Y distinction, and using a 2D Blend Tree is the best way to control these parameters. Here is an example of how you would drive such a parameter:

Boolean Parameters

Boolean parameters are the most space-effective form of parameters, which includes Binary Parameters and Bool Toggles.

Below is an example how they typically appear in a VRC Avatar Descriptor's Parameters:

Pictured: SmileRightPout as a Binary Parameter

Binary Parameters

Binary parameters are a set of parameters which take advantage of the binary counting system in order to save space inside of the VRC Avatar Descriptor's Parameters. All binary parameters are able to be smoothed using animation transitions, and All parameters are binary parameter-applicable, so if you are looking to compact your face tracking setup, Binary Parameters are a good solution for that purpose.

You can use the Binary Parameter Tool, a Unity Editor plugin, to create animation layers that a Binary Parameter can be used with.

Binary Parameters come in two forms: Normal and Combined.

Normal Binary Parameters are setup as you would expect, by using the binary counting bools to count between a minimum and maximum value of a given parameter.

Pictured: Example of an animation layer that uses a Normal Binary Parameter.

Pictured: Example of one of the animation transitions (in this case it is from AnyState to JawForward1 state), the transition settings, and the conditions used.

Combined Binary Parameters are setup in a similar way, except they also have an extra ...Negative bool parameter that acts as a negative sign.

Pictured: Example of an animation layer that uses a Combined Binary Parameter.

Pictured: Example of one of the animation transitions (in this case it is from AnyState to PuffSuckRight1 state), the transition settings, and the conditions used. Note the additional Negative bool parameter as well, as this indicates if the parameter is currently positive or negative.

Bool Toggles

Bool Toggles are simply a bool parameter that return a true or false. All float parameters are able to be set as a bool toggle parameter.

Most Bool toggles activate whenever the Float value of a parameter returns greater that 0.5. Exceptions are given on the Parameters wiki page.