Phone Video → Facial Blendshapes → Blender

Facial Motion Capture from Video: QuickMagic Phone MoCap Guide

Record facial performance on an ordinary smartphone, extract blendshape animation with QuickMagic, redirect ARKit-style channels to a Blender character, correct expression ranges and jitter, and send the result to Maya, Unreal Engine or Unity.

Published March 28, 2025 · Updated July 15, 2026 · QuickMagic Editorial Team

Original QuickMagic facial motion capture tutorial cover showing phone video and Blender face animation
The original article cover is compressed and embedded directly in this HTML file.
Direct answer: Place a phone at eye level, frame the face tightly, use soft even lighting, begin with a neutral expression, and record a short performance. Upload the original video to QuickMagic, choose the facial or OnlyFace workflow available on the active plan, inspect blinks, jaw and left/right expressions, export the facial animation, import it into Blender, and connect source blendshape values to the target character's shape keys with drivers or an explicit mapping.

Current workflow facts

Capture hardwareOrdinary RGB phone video
Depth sensorNot required for QuickMagic video input
Free plan30-second maximum and FBX format
Only Face formatListed on Starter and Professional
Target requirementBlend shapes, facial joints or mapped controls
Core transfer methodChannel mapping + range remapping
Corrections to the original article: the current Free plan lists a 30-second limit rather than 60 seconds, and Only Face is listed among Starter and Professional formats—not the current Free-plan format list. The article also described Human Generator characters as automatically ready for direct QuickMagic transfer; in production, verify the exact shape-key names, ranges and transfer features in the installed add-on version.

Watch the original facial-capture tutorials

Phone Video to Blender Facial MoCap

Demonstrates the original phone-video, QuickMagic and Blender facial-mocap workflow.

Open video on YouTube

QuickMagic AI + Blender Human Generator Facial Animation

Shows an optional paid Blender-character workflow using Human Generator.

Open video on YouTube

Both players use static YouTube iframes and require no runtime JavaScript. If a browser, region, network or local file viewer blocks embedded playback, use the red direct-link buttons. All article images are embedded in this HTML file.

What facial motion capture produces

Facial motion capture converts visible expressions into time-varying controls. In a blendshape workflow, each control represents a movement such as jaw opening, eyelid closure, eyebrow raising, lip compression or cheek inflation. The animation is the sequence of coefficient values over time—not the final character mesh.

Apple documents ARKit face expressions as a dictionary of named coefficients associated with specific facial-feature movements. Those coefficients can drive 2D or 3D characters. QuickMagic's OnlyFace documentation describes an ARKit-compatible 52-blendshape workflow.

ARKit-compatible is not plug-and-play for every face. A character can use the same names but need different multipliers, limits or corrective shapes. Stylized characters often require deliberately nonlinear response curves.

1Record a trackable phone performance

Phone facial capture setup showing camera position, framing and lighting
A stable, clear RGB video is enough for the QuickMagic workflow. Depth hardware is not required, although depth-based systems are a separate capture option in other pipelines.
  • Place the phone at eye level and keep it stable.
  • Frame the face so the brows, chin and both cheeks remain visible.
  • Use soft, even front or side-front lighting.
  • Start with approximately two seconds of neutral expression.
  • Perform clear blinks, jaw openings, smiles, frowns, lip puckers and eyebrow movements.
  • Include left/right asymmetric expressions to detect mirrored mappings.
  • Minimize glasses glare, hair across the eyes, hands over the mouth and rapid head turns.
  • Upload the original camera file rather than a recompressed social-media copy.
Recording choiceRecommended starting pointWhy
Resolution1080p or better when availablePreserves eyes, lips and eyebrow detail
Frame rate30 FPS for normal acting; 60 FPS for fast expressions when the plan supports itBalances curve density and visible motion detail
LensAvoid very close ultra-wide framingReduces facial perspective distortion
Head movementModerate and controlledKeeps the face readable and separates expression from head pose

2Process and validate the facial animation in QuickMagic

  1. Sign in to QuickMagic and open the applicable video-to-mocap workflow.
  2. Upload the original phone video.
  3. Choose facial processing or the OnlyFace format when it is available on the active plan.
  4. Use only the required frame range.
  5. Generate the animation.
  6. Review neutral face, blinks, jaw opening, lip closure, smiles, brows and asymmetrical expressions.
  7. Use 2D Refinement on supported paid plans when visible source tracking is wrong.
  8. Export the required FBX/facial output and preserve an untouched source file.
Do not state a universal processing time such as “1–3 minutes.” Processing varies with queue priority, clip length, selected features and service load.

Understand the source and target facial channels

Diagram of QuickMagic ARKit-style source channels mapped to a target character facial rig
The source provides animation coefficients. The target determines how those coefficients deform its face.

Minimum useful validation set

  • jawOpen
  • eyeBlinkLeft and eyeBlinkRight
  • mouthSmileLeft and mouthSmileRight
  • browInnerUp
  • mouthPucker
  • At least one cheek/nose expression
  • Eye-look channels when the target supports them

Three mapping cases

Source and targetRecommended approach
Names and meanings matchCreate direct drivers, then tune gain and clamp.
Meaning matches but names differCreate an explicit mapping dictionary.
Target uses joints/controllersMap coefficients to controller transforms or attributes through drivers, nodes or driven keys.

3Blender workflow using built-in shape keys and drivers

Blender workflow from QuickMagic FBX import to target shape-key driver mapping and validation
Blender calls blend shapes “shape keys.” Drivers can connect a source shape-key value to a target shape-key value without duplicating every keyframe manually.
  1. Open Blender and choose File → Import → FBX.
  2. Import the QuickMagic facial FBX with animation enabled.
  3. Select the source face mesh and inspect Object Data Properties → Shape Keys.
  4. Scrub the timeline to confirm the source shape-key values animate.
  5. Load the target character into the same scene.
  6. Confirm the target contains shape keys or another controllable facial rig.
  7. For each target expression, add a driver that reads the matching source value.
  8. Add gain, clamp or a custom response curve when the target expression is too weak or strong.
  9. Test the complete clip before baking or deleting the source.
Blender's current FBX documentation notes that imported actions can be linked to objects, bones or shape keys. Always verify which object/action received the curves instead of assuming the animation is attached to the target automatically.

Blender script: create drivers for matching shape-key names

The script below creates clamped drivers for every target shape key whose name exactly matches a source shape key. Duplicate the Blender file before running it and change the two object names.

# Blender: create drivers for matching facial shape-key names
# Edit these two object names before running in Blender's Scripting workspace.
import bpy

SOURCE_OBJECT = "QuickMagic_SourceFace"
TARGET_OBJECT = "Target_Character"
GAIN = 1.0

source = bpy.data.objects.get(SOURCE_OBJECT)
target = bpy.data.objects.get(TARGET_OBJECT)

if source is None or target is None:
    raise RuntimeError("Source or target object was not found.")

if not source.data.shape_keys or not target.data.shape_keys:
    raise RuntimeError("Both objects must contain shape keys.")

source_keys = source.data.shape_keys.key_blocks
target_keys = target.data.shape_keys.key_blocks

created = []
skipped = []

for target_key in target_keys:
    name = target_key.name
    if name == "Basis":
        continue
    if source_keys.get(name) is None:
        skipped.append(name)
        continue

    # Remove an existing driver on the target value, if present.
    try:
        target_key.driver_remove("value")
    except TypeError:
        pass

    fcurve = target_key.driver_add("value")
    driver = fcurve.driver
    driver.type = "SCRIPTED"

    variable = driver.variables.new()
    variable.name = "src"
    variable.type = "SINGLE_PROP"
    variable.targets[0].id_type = "KEY"
    variable.targets[0].id = source.data.shape_keys
    escaped = name.replace("\\", "\\\\").replace('"', '\\"')
    variable.targets[0].data_path = f'key_blocks["{escaped}"].value'

    # Clamp to the common 0–1 target range.
    driver.expression = f"min(max(src * {GAIN}, 0.0), 1.0)"
    created.append(name)

print(f"Created {len(created)} drivers.")
print("Skipped unmatched target keys:", skipped)

After running the script

  1. Scrub the timeline and confirm the target animates.
  2. Review the printed list of unmatched target keys.
  3. Manually map differently named channels.
  4. Change GAIN or individual driver expressions where needed.
  5. Test left/right channels carefully.

Optional Human Generator workflow

Human Generator is a paid Blender character-generation add-on, not a QuickMagic requirement. The current marketplace listing supports modern Blender versions, but purchase tier, Blender compatibility and transfer tools should be verified on the current product page.

  1. Install Human Generator through its documented Blender add-on workflow.
  2. Create or load a character with a facial shape-key system.
  3. Import the QuickMagic source FBX.
  4. Compare source and target shape-key names.
  5. Use the add-on's documented transfer feature when it explicitly supports the source data, or use Blender drivers.
  6. Adjust target-specific expression strength and corrective shapes.
Do not promise that every Human Generator character automatically contains the exact source names or that all channels will auto-match. Verify the installed version and the actual generated character.

Clean and calibrate the facial animation

Expression too weak

Increase the channel gain or use a steeper response curve on that specific expression.

Expression too strong or clips the face

Clamp the target value and reduce the gain. Check whether multiple shapes are over-combining.

Blinks are incomplete

Verify eyelids were visible in the video, then tune blink gain and add a corrective shape if the target eyelid deformation is incomplete.

Lip sync feels soft

Preserve jaw opening and lip closures. Avoid broad smoothing that removes consonant timing.

Left and right expressions are reversed

Test a one-sided smile and eyebrow raise, then correct mirrored source/target mapping.

Jitter

Smooth only the visibly noisy channel intervals. Preserve natural eye darts, blinks, speech articulation and asymmetrical acting.

Use the same facial data in Maya, Unreal Engine and Unity

Facial blendshape workflow destinations in Blender, Maya, Unreal Engine and Unity
The data model is similar across tools, but the import and mapping mechanisms differ.

Maya

Connect source coefficients to target Blend Shape node weights with the Connection Editor, driven keys or utility/remap nodes. Use the Graph Editor for calibration and bake the destination controls only when required.

Unreal Engine

Enable morph-target import when importing the relevant FBX. Unreal can encapsulate morph-target animation in an Animation Sequence and expose the individual morph curves. MetaHuman use requires a separate, compatible curve-mapping workflow.

Unity

Unity exposes mesh blend-shape weights through the SkinnedMeshRenderer. Animate them in an Animation Clip or set them at runtime through scripting. Confirm whether the imported FBX includes the required curves for the target mesh.

Common facial-capture problems

ProblemLikely causeRecommended fix
Only Face is missingCurrent Free plan or unsupported workflowCheck Starter/Professional entitlement and the active export menu.
No shape-key animation after Blender importCurves linked to another object/action or unsupported source layoutInspect source objects, shape keys, actions and the FBX importer result.
Target face does not moveNo drivers/mapping or target has no compatible facial controlsCreate explicit drivers or map to joints/controller attributes.
Jaw works but lips and cheeks do notOnly a subset of channels is mappedAudit the complete source/target channel list.
Face looks distortedTarget range, neutral pose or corrective shapes differReduce gain, clamp values and add target-specific correctives.
Eyes look crossed or stareEye-look channels are missing, reversed or too strongMap eye channels separately and cap their range.
Animation is noisyVideo blur, occlusion or over-sensitive target responseImprove source footage and smooth only verified noisy channels.
Unreal/Unity import has morphs but no animationAnimation curves were not exported/imported for the target meshVerify FBX curve export, import settings and animation-clip association.

Final quality checklist

  • The face is evenly lit and consistently visible.
  • The performance begins from a neutral reference.
  • Blinks, jaw, brows, smiles and asymmetric expressions are present.
  • The active QuickMagic plan provides the required facial output.
  • The source FBX retains its facial animation after import.
  • The target has compatible shape keys, joints or controls.
  • Left/right mappings are correct.
  • Expression ranges are calibrated per channel.
  • Smoothing does not remove speech or blink timing.
  • The final exported animation is validated in the destination application.

Frequently asked questions

Can I capture facial animation with an ordinary phone?

Yes. QuickMagic uses standard uploaded RGB video, so a depth sensor is not required. Use stable, close, evenly lit footage.

Is OnlyFace included in the Free plan?

The current plan table lists FBX for Free and Only Face among Starter and Professional formats. Check the active export screen because entitlements can change.

Does ARKit-compatible mean automatic compatibility?

No. It provides familiar channel names, but the target still needs compatible shapes or a mapping. Expression ranges and geometry differ between characters.

How do I transfer the animation in Blender?

Import the source FBX, inspect the animated shape keys, then connect each source value to a target shape key with drivers or copied curves.

Do I need Human Generator?

No. It is an optional paid character add-on. Blender's built-in shape keys and drivers are sufficient for a compatible custom character.

Why are expressions too weak or strong?

The source and target ranges differ. Tune gain and clamp per channel, and add custom response curves for stylized characters.

Can I use the result in Unreal Engine or Unity?

Yes. Unreal supports morph-target animation through FBX, while Unity exposes blend shapes through SkinnedMeshRenderer. The target mesh and curves still need compatible mapping.

How do I reduce facial jitter?

Improve source lighting and visibility, correct source tracking when possible, then smooth only the visibly noisy channels without removing articulation or blinks.

Related QuickMagic guides

Test facial mapping with a short expression set

Record neutral, blink, jaw open, smile, frown, brow raise and left/right expressions, then validate the target mapping before processing a long dialogue performance.

Open QuickMagic AI Motion Capture →

Official references and video sources