Phone Video → Facial Blendshapes → Blender
從影片進行臉部動作捕捉:QuickMagic 手機動態捕捉指南
在一般智慧型手機上錄製臉部表演,使用 QuickMagic 提取 blendshape 動畫,將 ARKit 風格頻道重新導向至 Blender 角色,校正表情範圍與抖動,並將結果傳送至 Maya、Unreal Engine 或 Unity。
當前工作流程的事實
觀看原始臉部捕捉教學
QuickMagic AI + Blender Human Generator 臉部動畫
展示使用 Human Generator 的選用付費 Blender 角色工作流程。
在 YouTube 上開啟影片臉部動態捕捉產出什麼
臉部動態捕捉將可見的表情轉換為隨時間變化的控制項。在 blendshape 工作流程中,每個控制項代表一個動作,例如張開下巴、閉合眼皮、揚起眉毛、抿唇或鼓頰。動畫是一系列隨時間變化的係數值,而非最終的角色網格。
Apple 將 ARKit 臉部表情記錄為一組命名係數的字典,這些係數對應特定的臉部特徵動作。這些係數可以驅動 2D 或 3D 角色。QuickMagic 的 OnlyFace 文件描述了與 ARKit 相容的 52 個 blendshape 工作流程。
1錄製可追蹤的手機表演
- 將手機放在眼睛高度並保持穩定。
- 構圖時讓眉毛、下巴和臉頰兩側都保持在畫面中。
- 使用柔和均勻的正面或側前方光線。
- 從約兩秒的中性表情開始。
- 做出清晰的眨眼、張嘴、微笑、皺眉、嘟嘴和眉毛動作。
- 包含左右不對稱的表情以偵測鏡像映射。
- 盡量減少眼鏡反光、頭髮遮住眼睛、手遮住嘴巴及快速轉頭。
- 上傳原始相機檔案,而非重新壓縮的社群媒體副本。
| 錄製選擇 | 建議起始點 | 原因 |
|---|---|---|
| 解析度 | 1080p 或更好(若可用) | 保留眼睛、嘴唇和眉毛細節 |
| 影格率 | 一般表演 30 FPS;快速表情 60 FPS(若方案支援) | 平衡曲線密度與可見動作細節 |
| 鏡頭 | 避免極近的超廣角構圖 | 減少臉部透視變形 |
| 頭部移動 | 適中且可控 | 使臉部保持可讀,並將表情與頭部姿勢分開 |
2在 QuickMagic 中處理並驗證臉部動畫
- 登入 QuickMagic 並開啟適用的影片轉動態捕捉工作流程。
- 上傳原始手機影片。
- 選擇臉部處理或 OnlyFace 格式(若當前方案可用)。
- 僅使用所需的影格範圍。
- 生成動畫。
- 檢視中性臉部、眨眼、張嘴、閉唇、微笑、眉毛及不對稱表情。
- 若可見的來源追蹤錯誤,可在支援的付費方案上使用 2D 精煉。
- 匯出所需的 FBX/臉部輸出,並保留未更動的來源檔案。
了解來源與目標臉部頻道
最小有用的驗證集合
jawOpeneyeBlinkLeft與eyeBlinkRightmouthSmileLeft與mouthSmileRightbrowInnerUpmouthPucker- 至少一個臉頰/鼻子表情
- 眼睛注視頻道(若目標支援)
三種映射情況
| 來源與目標 | 建議方法 |
|---|---|
| 名稱與意義一致 | 建立直接驅動器,然後調整增益與限制。 |
| 意義一致但名稱不同 | 建立明確的映射字典。 |
| 目標使用關節/控制器 | 透過驅動器、節點或驅動關鍵影格將係數映射到控制器變換或屬性。 |
3使用內建形狀鍵與驅動器的 Blender 工作流程
- 開啟 Blender,選擇 檔案 → 匯入 → FBX。
- 匯入已啟用動畫的 QuickMagic 臉部 FBX。
- 選取來源臉部網格,檢查 物件資料屬性 → 形狀鍵。
- 在時間軸上拖曳以確認來源形狀鍵值有動畫。
- 在同一場景中載入目標角色。
- 確認目標包含形狀鍵或其他可控的臉部綁定。
- 對每個目標表情,新增一個讀取匹配來源值的驅動器。
- 當目標表情過弱或過強時,加入增益、限制或自訂反應曲線。
- 在烘焙或刪除來源之前,先測試完整片段。
Blender 腳本:為匹配形狀鍵名稱建立驅動器
以下腳本會為每個名稱與來源形狀鍵完全相同的目標形狀鍵建立帶限制的驅動器。執行前請複製 Blender 檔案,並修改兩個物件名稱。
# 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)
執行腳本之後
- 在時間軸上拖曳以確認目標有動畫。
- 檢視印出的未匹配目標鍵清單。
- 手動映射不同名稱的頻道。
- 在需要的地方修改
GAIN或個別驅動器運算式。 - 仔細測試左右頻道。
選用的 Human Generator 工作流程
Human Generator 是付費的 Blender 角色生成附加元件,並非 QuickMagic 的必要條件。目前市集頁面支援現代 Blender 版本,但購買層級、Blender 相容性與轉移工具應在當前產品頁面上確認。
- 透過 Blender 附加元件文件流程安裝 Human Generator。
- 建立或載入一個具有臉部形狀鍵系統的角色。
- 匯入 QuickMagic 來源 FBX。
- 比對來源與目標形狀鍵名稱。
- 若附加元件明確支援來源資料,則使用其文件中的轉移功能;否則使用 Blender 驅動器。
- 調整目標特定的表情強度與校正形狀。
清理與校準臉部動畫
表情過弱
增加該頻道的增益,或對該特定表情使用較陡的反應曲線。
表情過強或使臉部變形
限制目標值並降低增益。檢查是否有多個形狀疊加。
眨眼不完全
確認影片中眼皮可見,然後調整眨眼增益;若目標眼皮變形不完全,可加入校正形狀。
嘴部同步感覺模糊
保留張開下巴與閉唇動作。避免過度平滑而抹除子音時間點。
左右表情相反
測試單側微笑與眉毛揚起,然後校正鏡像的來源/目標映射。
抖動
僅平滑明顯有雜訊的頻道區間。保留自然的眼球移動、眨眼、說話清晰度與不對稱表演。
在 Maya、Unreal Engine 與 Unity 中使用相同的臉部資料
Maya
使用 Connection Editor、驅動關鍵影格或工具/重映射節點,將來源係數連接到目標 Blend Shape 節點權重。使用 Graph Editor 進行校準,並僅在必要時烘焙目標控制項。
Unreal Engine
匯入相關 FBX 時啟用 morph-target 匯入。Unreal 可以在動畫序列中封裝 morph-target 動畫,並暴露個別的 morph 曲線。MetaHuman 的使用需要獨立且相容的曲線映射工作流程。
Unity
Unity 透過 SkinnedMeshRenderer 暴露網格 blend-shape 權重。可以在動畫片段中動畫化它們,或透過腳本在執行階段設定。確認匯入的 FBX 是否包含目標網格所需的曲線。
常見的臉部捕捉問題
| 問題 | 可能原因 | 建議修正 |
|---|---|---|
| Only Face 遺失 | 當前免費方案或不受支援的工作流程 | 檢查 Starter/Professional 權限與目前的匯出選單。 |
| Blender 匯入後無形狀鍵動畫 | 曲線連結到另一個物件/動作,或來源佈局不受支援 | 檢查 |



