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 .
Technically, yes. But here’s why vrcfaceblendh is better practice:
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. 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.
| 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 | If you’ve ever dipped your toes into VRChat
Happy avatar building! 🧙♂️✨
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 )? It allows you to drive specific BlendShapes directly
Let’s break down what vrcfaceblendh actually is, why it matters, and how to use it without breaking your avatar. In simple terms: vrcfaceblendh is a float parameter that controls a custom facial BlendShape (morph target) on your avatar.