DAZ3D Blendshape Guide (Eye Movement + Visemes, Genesis 2 to 9)
DAZ Blendshape Guide (Eye Movement + Visemes, Genesis 2 to 9)
This guide explains what CrystalLipSync expects for both:
Eye Movement blendshapes (CrystalEyeBlink)
Viseme blendshapes (CrystalLipSyncBlendshapeTarget)
for DAZ Genesis 2, 3, 8, 8.1, and 9.
Scope
This page covers:
Eye Movement look blendshape mapping expectations
Brow Sync mapping expectations
Viseme blendshape expectations by Genesis generation
Which visemes are required vs recommended
Bone fallback behavior when mappings are empty
What happens when mappings are left
None
Important policy in this project:
Genesis 9 Eye Movement is bone-driven in CrystalEyeBlink.
Detect actions keep Genesis 9 Eye Movement look/brow mappings empty (
None) by design.
Quick Behavior Summary
Condition
Result in CrystalEyeBlink
Look blendshapes are mapped
Eye direction uses look blendshapes (with optional bone fallback for missing axes)
Look blendshapes are empty (None) and eye bones exist
Eye direction uses eye bones
Look blendshapes are empty and eye bones are missing
No directional eye movement can be applied
Brow blendshapes are mapped
Brow Sync animates brows with vertical gaze
Brow blendshapes are empty (None)
Brow Sync produces no brow deformation
Force Bone Rotation = true
Eye direction uses bones even if look blendshapes are mapped
Viseme Behavior Summary
A viseme is mapped to one or more blendshapes
That phoneme group drives mouth deformation
A viseme is None (-1)
That viseme contributes no deformation
All visemes are None
Lip sync has no visible mouth movement
Only some visemes are mapped
Lip sync works but articulation quality is reduced
CrystalLipSync uses a 15-viseme set:
SIL, PP, FF, TH, DD, KK, CH, SS, NN, RR, AA, E, I, O, U
Eye Movement: Expected Look Blendshape Patterns by Genesis Generation
The detector is case-insensitive and separator-insensitive (underscores, dots, hyphens are normalized), so naming variants still match.
Genesis 2 / 3 / 8 (typical DAZ eCTRL style)
Most common expected controls are bipolar eye controls:
eCTRLEyesUp-DownLeCTRLEyesUp-DownReCTRLEyesSide-SideLeCTRLEyesSide-SideR
How these are interpreted:
Up-Downcontrols map to both Up and Down for that eye (signed weight at runtime)Side-Sidecontrols map to both Left and Right for that eye (signed weight at runtime)
This gives full per-eye directional control with only 4 DAZ controls.
Genesis 8.1 (common ARKit/FACS style, depending on export)
Many G8.1 rigs include ARKit-like directional shapes such as:
eyeLookUpLeft,eyeLookUpRighteyeLookDownLeft,eyeLookDownRighteyeLookInLeft,eyeLookInRighteyeLookOutLeft,eyeLookOutRight
These map directly to per-eye look directions. If your rig still uses DAZ eCTRL-style names, those are also supported.
Genesis 9
Eye movement is intentionally bone-driven in CrystalEyeBlink.
Detect actions keep Eye Movement look/brow mappings empty (
None).Head/eye bones are used to drive gaze.
Expected Brow Sync Patterns
Brow detection is broad and supports DAZ-style variants, including bipolar and directional patterns.
Common successful patterns include names containing:
Raise concepts:
brow+raise,up,innerUp,outerUpLower concepts:
brow+down,furrow,compress,angryBipolar DAZ style:
brow+ bothupanddownin one control (signed behavior)
For DAZ rigs, both per-eye brow controls and combined brow controls can be recognized.
Visemes: What CrystalLipSync Expects (Genesis 2 to 9)
CrystalLipSync auto-mapper supports multiple DAZ naming families:
Genesis 2 style:
vsm*Genesis 3/8 style:
eCTRLv*Genesis 8.1 / 9 FACS style:
facs_ctrl_v*/facs_bs_v*(and variants)
Normalization is forgiving (case, _, -, ., mesh prefixes).
Viseme families by generation
Genesis 2 (typical)
Common expected controls include:
vsmRestvsmM,vsmF,vsmK,vsmLvsmAA,vsmEH,vsmOW,vsmUW,vsmW
Genesis 3 / Genesis 8 (typical)
Common expected controls include:
eCTRLvResteCTRLvM,eCTRLvF,eCTRLvK,eCTRLvLeCTRLvAA,eCTRLvEH,eCTRLvOW,eCTRLvUW,eCTRLvW
Genesis 8.1 (FACS/viseme style)
Common expected controls include:
facs_ctrl_vAA,facs_ctrl_vEHfacs_ctrl_vIY/facs_ctrl_vEEfacs_ctrl_vSH(postalveolar family)plus other
facs_ctrl_v*mouth viseme controls
Genesis 9
Primary viseme matching still works from facs_ctrl_v* / facs_bs_v* style names.
Additionally, CrystalLipSync can apply Genesis 9 FACS supplementary mouth entries (e.g. mouth close/funnel/pucker/stretch/tongue) to improve articulation when those shapes exist.
Note:
This Genesis 9 rule only affects viseme mapping quality.
It does not change the Eye Movement policy (which remains bone-driven with look/brow slots empty).
Which Visemes Are Required?
Strictly required:
None at engine level (the system allows partial mappings).
Practically required for understandable speech:
Recommended minimum set:
PP,FF,AA,E,I,O,U
Recommended full-quality set:
All 15 visemes mapped.
Special DAZ note:
For DAZ Genesis (including Genesis 9), SIL is often intentionally left unmapped to avoid an undesirable rest deformation.
What Happens If Slots Are None
NoneEye Movement slots (CrystalEyeBlink)
CrystalEyeBlink)If Eye Movement look slots are left None in the inspector:
No look blendshape deformation is written.
Eye movement can still work through bones if eye bones are available.
If eye bones are not found, the component has no target to apply look direction.
If Brow Sync slots are None:
Brow Sync has nothing to drive and will not deform brows.
Viseme slots (CrystalLipSyncBlendshapeTarget)
CrystalLipSyncBlendshapeTarget)Any
Noneviseme contributes no mouth deformation for its phoneme group.If all are
None, lip sync plays with no visible mouth animation.Partial mappings are valid but reduce clarity/naturalness.
Runtime behavior:
Eye Movement mappings intentionally left empty are not auto-populated at runtime.
Viseme mappings also remain whatever you configured; runtime does not invent new mappings unless you run explicit detect/auto-map workflows.
Recommended Setup (Genesis 2 to 9)
Assign/verify blink mesh and blink shapes.
Eye Movement:
Genesis 2/3/8/8.1: use Detect Eye Movement if you want blendshape-driven gaze.
Genesis 9: keep Eye Movement look/brow slots
Noneand use eye bones.
Visemes:
Run viseme auto-map, then manually review core vowels/consonants.
Ensure at least the minimum set (
PP,FF,AA,E,I,O,U) is mapped.
For highest quality, map all 15 visemes and tune weights.
Troubleshooting
Detect found fewer/more mappings than expected
Check if your morph names are exported with prefixes/suffixes that still preserve core tokens (
eye,look,up/down/in/out,brow, etc.).Confirm you are testing on the same mesh that actually contains look morphs.
For dual-mesh setups, ensure the eye look mesh is assigned correctly.
Eyes do not move when all slots are None
NoneVerify
Head Bone,Left Eye Bone, andRight Eye Bonereferences.Confirm Eye Movement is enabled.
Increase movement intensity and range settings for visibility.
Brows do not move
This is expected when Brow Sync slots are
None.Map brow slots manually or run eye movement detection if brow deformation is desired.
Mouth does not move (visemes)
Verify a
CrystalLipSyncBlendshapeTargetexists on the mouth mesh.Check that viseme mappings are not all
None.Confirm the chosen mesh is the main Genesis body/face mesh (not eyelashes/teeth).
Speech looks weak or unclear
Map the minimum core visemes first (
PP,FF,AA,E,I,O,U).Add remaining visemes to improve consonant detail (
TH,DD,CH,SS,NN,RR,KK).
Practical Rule of Thumb
Want blendshape-driven eyes: map look blendshapes.
Want bone-driven eyes: leave look slots
None(or enableForce Bone Rotation).Want brow deformation: map brow slots.
Want no brow deformation: keep brow slots
None.Want intelligible lip sync quickly: map at least
PP,FF,AA,E,I,O,U.Want best lip sync quality: map all 15 visemes and tune weights.
Last updated