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.