Blendshape Sync

The Blendshape Sync component allows you to ensure that a particular blendshape on one renderer always matches that of another.
When should I use it?
Often, avatars will have blendshapes to adjust the shape of their body. If you are creating (or using) an outfit for such an avatar, and the outfit has a matching shapekey, Blendshape Sync is the component for you!
This can also be useful in base avatars as well - to sync up blendshapes between different objects.
When shouldn't I use it?
Blendshape Sync cannot be chained - that is, you can copy from A to B and A to C, but you can't copy from A to B and B to C.
At runtime, Blendshape Sync only supports syncing blendshapes that are controlled by animators. Blendshapes controlled by VRChat's builtin eyelook or viseme systems cannot be synced accurately.
Setting up Blendshape Sync
Add the Blendshape Sync component to an object in your prefab. Then click the + button to open a selection window.

Double-click on a blendshape to add it to the list to sync. When you've added enough, click the X to close the editor window. If the name of the blendshape is different on the target object, you can adjust that after adding it by clicking on the "Target blendshape" dropdown.
You can adjust the way that the target blendshape responds to the source by clicking the "Remap" curve. This can be used to, for example, have the blendshape be inverted compared to the original. Note that, as with animation curves, it's necessary to set appropriate tangents on this curve to get the desired effect.
Blendshape Sync supports multi-selection editing as well, so you can select multiple meshes to configure at once.
Note that blendshape sync currently does not support syncing through multiple levels of objects (object A -> object B -> object C).
What does it do, exactly?
Blendshape Sync does two things:
- In edit mode, it copies the blendshape values from the base automatically, so changes to the base object's shapekeys will take effect in the other objects immediately.
- In play mode, it modifies any animations which animate the base object's blendshapes to also animate the other objects' blendshapes.