Quick answer: Unity blendshape mirror copying L-side weights to nothing on R? Mirror tool maps by bone hierarchy; blendshapes are named, not bone-positioned. Use _L / _R suffix convention or script the copy.
Mirroring a facial pose maps left bones to right but the left eye-blink blendshape weight doesn’t copy to the right one.
Naming Convention
Blendshapes named eye_close_L and eye_close_R let you pair them by suffix. Mirror script can iterate, copy weight from _L to _R.
Custom Mirror Script
foreach (var name in namesWithSuffix("_L")) {
float w = mesh.GetBlendShapeWeight(mesh.GetBlendShapeIndex(name));
mesh.SetBlendShapeWeight(mesh.GetBlendShapeIndex(name.Replace("_L", "_R")), w);
}One small editor utility lets you mirror facial poses in seconds.
Centered Blendshapes
For non-mirrored blendshapes (mouth-open, brow-up), don’t copy — they’re symmetric. Skip names without _L / _R.
AR Kit Set
If using Apple AR Kit blendshape names, both sides exist (eyeBlink_L / _R). Map them directly without renaming.
Verifying
Mirroring a facial expression produces correct left-right symmetric weights across both bones and blendshapes.
“Blendshapes mirror by name. Use _L/_R suffixes and a small copy script.”
Adopt _L/_R from the start of every face rig — renaming later is painful and breaks every animation that references the old name.