Due to the high performance impact of Animator Layers in an Animator Controller, it is often a lot better to combine things such as toggles and radial menus into a single Animator Layer by using a Direct Blend Tree.
Direct Blend Trees allow you to assign a parameter directly to each Animation or Blend Tree child, instead of blending between them. This allows you to animate more than one thing at the same time in the same Blend Tree.
For VRChat, we can abuse this behaviour to create multiple toggles and radial puppets within a single Direct Blend Tree, similar to how we would in separate Animator Layers.
The structure and functionality of a Direct Blend Tree is very similar to that of an Animator Controller, so it might be easier to understand them if you look at them as if they were Animator Controllers. This is a very simplified way to look at and understand Direct Blend Trees, so it should be noted that while they are very similar to Animator Controllers, they are NOT the exact same!
<aside> ⚠️ There are a few key differences between the two which heavily limit the use cases and implementations of Direct Blend Trees compared to Animator Controllers. More info can be found in the Current Limitations And Known Issues section.
</aside>
A Direct Blend Tree with 3 Clothing Toggles
Making toggles and radial puppets in a Direct Blend Tree is not much different or any more difficult than creating a regular toggle in an Animator Layer.
Direct
Weight
Normalized Blend Values
unchecked.1D
<aside> ⚠️ Using only one animation clip like you would with a WD On workflow will not work! You need separate animation clips or a combined clip.
</aside>
float
bool
An example of combining multiple radial puppets and toggles can be found at Direct Blend Tree Toggle.
Repeat steps for every toggle and radial puppet you want to create, there is no limit to how many you can add.
An example of combining multiple radial puppets and toggles can be found at Direct Blend Tree Radials and Toggles.