VRM perfect sync not working? It's usually naming, not sculpting
If VSeeFace or Warudo says it only recognised 45 of your 52 shapes, your mesh is probably fine — the shapes just aren't named or wired the way the app expects.
When perfect sync doesn't work, the cause is usually not missing geometry: it's that your blendshapes aren't named, or aren't wired into VRM expression clips, the way VSeeFace, Warudo or VMagicMirror look them up — which is what produces the classic 'recognized 45 of 52' message. Work through it in order: read the shape-key names on the mesh, confirm the clips actually exist in the VRM, check your model's VRM version against what the app expects, then confirm which naming convention the app matches. Only after all four should you conclude that shapes are genuinely missing. The first three are wiring fixes you can make yourself in UniVRM without touching geometry. A different problem entirely is a model that has no face shapes to begin with — that one Riggle solves, by building a VRM 1.0 expression set from about twenty seconds of marking.
Why perfect sync 'breaks'
Perfect-sync apps look your expressions up by exact name. A handful of things commonly go wrong, and they all look the same from the outside:
- Naming mismatches. Your shapes are called something close but not exact —
eyeBlink_Lwhere the app wantseyeBlinkLeft— so it matches some and drops the rest. - Shapes exist but aren't wired. The mesh carries the deformations, but they were never referenced by a VRM BlendShapeClip (0.x) or Expression (1.0). A model can hold all 52 and expose none of them.
- VRM version mismatch. VRM 1.0 reworked the expression system. A 0.x-era tool reading a 1.0 file, or a 1.0 app reading a converted 0.x file, can silently drop expressions on import.
- Wrong convention. ARKit, VRoid and Unified Expressions naming are three different sets. Matching the wrong one is indistinguishable from missing shapes.
- Genuinely missing shapes. Some of the 52 were never created — the only case that needs actual sculpting or generation.
Diagnose it in this order
- Read the shape-key names on the mesh. Open the file in any glTF/VRM inspector, or in UniVRM in Unity, and list the mesh's blendshape names. Half of all perfect-sync problems end here.
- Check the clips, not just the mesh. Shape keys do nothing on their own — something has to reference them as a VRM expression. Confirm the clip list, not the shape list.
- Check the VRM version against your app. Find out whether your file is VRM 0.x or 1.0 and what your app expects, and migrate with UniVRM if they disagree.
- Check the app's expected naming convention. VSeeFace, Warudo and VMagicMirror each document which set they match; align your names to that document rather than to a forum post.
Tools for the fix: UniVRM in Unity lets you inspect, rebuild and rename expression clips by hand on any model, and handles VRM 0.x ⇄ 1.0 migration. For VRoid-topology models, HANA_Tool can add and wire the 52 shapes from scratch, which sidesteps the naming question entirely. None of this requires you to sculpt anything.
If the shapes are genuinely missing
If some of the 52 don't exist on the mesh at all, no amount of renaming helps — the deformations have to be created, which is a sculpting job rather than a wiring one. That is worth knowing before you spend another evening in UniVRM chasing a name that was never there: check the mesh's shape-key list first, and if the geometry is absent, stop debugging the wiring.
Riggle doesn't produce the 52 ARKit shapes, and it doesn't rename or re-wire the ones you already have — that's roadmap, not product. It solves the neighbouring problem below, which is the one people most often mistake for this one.
A different problem: a face with no shapes at all
There's a failure that looks similar and isn't. If your model came from Tripo, Meshy or a marketplace, it's usually rigged from the neck down and completely inert above it: no visemes, no blink shapes, often no jaw bone. That's not a naming bug — there is nothing to name, and no amount of UniVRM work will conjure geometry that was never made.
That's the case Riggle is built for. Upload the rigged .glb (or a .vrm to re-rig) and spend about twenty seconds marking the face: trace a polygon around the lips, click a point inside the mouth opening, tag the upper and lower lip, click each eye centre. Riggle turns those marks into a real lip mask on the mesh, zips the mouth into a closed rest pose biased toward the upper lip, and generates aa, ih, ee, oh, ou, blink with independent blinkLeft and blinkRight, happy, angry and surprised, plus eye-bone lookAt when the rig has eye bones. Out comes a VRM 1.0 with a video of every expression, each one pixel-diffed against the neutral render so a dead morph can't ship.
That's the VRM expression set, not perfect sync — enough for the avatar to talk, blink and react in a VRM app. Results are best on models generated with an open mouth, since the cavity geometry is what the visemes re-open; sealed mouths can be carved but come out coarser, and you'll see which you got in the preview before spending a token.
Face doesn't move at all? That we can fix.
If your model is rigged from the neck down and dead above it, mark its lips and eyes in about twenty seconds and download a VRM 1.0 that lip-syncs, blinks and emotes. First model free.
Get early access
GLB or VRM in · VRM 1.0 out · first model free · we'll email you when your invite is ready, plus the occasional product update.
FAQ
Why does VSeeFace only recognise some of my shapes?
Almost always a naming or wiring mismatch: the deformations exist on the mesh but aren't named the way the app looks them up, or aren't referenced by a VRM expression clip at all. Check the shape-key names, then the clips, then the VRM version, then the naming convention — in that order.
Do I need to re-sculpt my model to fix perfect sync?
Usually no. If the shapes are present but unrecognised, it's a naming and wiring fix you can make in UniVRM without touching geometry. Only genuinely missing shapes need generation, which is a sculpting job rather than a wiring one.
Can Riggle fix my perfect sync?
No. Riggle doesn't produce the 52 ARKit shapes and doesn't rename or re-wire existing ones. What it does is build a working VRM 1.0 expression set — visemes, blink and winks, happy/angry/surprised, eye-bone look-at — for models that have no face animation at all, which is most AI-generated and marketplace rigs.