| Direct BlendShape | vrcfaceblendh Parameter | |------------------|----------------------------| | Hardcoded to one mesh | Works across LODs / multiple meshes | | May conflict with visemes | Easily blended with other face parameters | | No built-in normalization | Can be remapped (0–100% to 0–1 float) | | Can break avatar dynamics | Fully supported by Expression Menu & Actions |
While VRChat provides built-in parameters for visemes ( vrc_viseme_* ) and eye tracking ( vrc_eyelid_* ), vrcfaceblendh is part of the custom expression pipeline. It allows you to drive specific BlendShapes directly from an animation or a gesture.
The "h" in vrcfaceblendh ? That stands for (or historically, "head")—it's designed for face BlendShapes on a humanoid rig. Why Use vrcfaceblendh Instead of Direct BlendShape Control? You might ask: Can't I just animate the BlendShape by its original name (e.g., smile_left )?
Technically, yes. But here’s why vrcfaceblendh is better practice:
If you’ve ever dipped your toes into VRChat avatar creation—specifically custom visemes or eye tracking—you’ve likely stumbled upon a peculiar term in the Unity Animator parameters list: vrcfaceblendh .
So next time you're wiring up a custom blush, eyebrow raise, or exaggerated laugh—don't hardcode the BlendShape. Have you run into a weird issue where your vrcfaceblendh isn't responding? Double-check the parameter is in the Expressions Parameters list AND that the animation clip has the correct Skinned Mesh Renderer selected. 90% of the time, it’s one of those two.