電話動画 → フェイシャルブレンドシェイプ → Blender
動画からのフェイシャルモーションキャプチャ: QuickMagic スマホMoCapガイド
通常のスマートフォンで顔のパフォーマンスを録画し、QuickMagic でブレンドシェイプアニメーションを抽出し、ARKit形式のチャンネルをBlenderキャラクターにリダイレクトし、表情の範囲とジッターを補正して、その結果をMaya、Unreal Engine、Unityに送ります。
現在のワークフローの事実
オリジナルの顔キャプチャチュートリアルを見る
電話動画からBlenderフェイシャルMoCapへ
オリジナルの電話動画、QuickMagic、Blenderのフェイシャルモーションキャプチャワークフローを実演しています。
YouTubeで動画を開くQuickMagic AI + Blender Human Generatorフェイシャルアニメーション
Human Generatorを使用した有料のBlenderキャラクターワークフローのオプションを示しています。
YouTubeで動画を開くフェイシャルモーションキャプチャが生成するもの
フェイシャルモーションキャプチャは、目に見える表情を時間変化するコントロールに変換します。ブレンドシェイプワークフローでは、各コントロールは顎を開く、まぶたを閉じる、眉を上げる、唇を圧縮する、頬を膨らませるなどの動きを表します。アニメーションは、時間経過に伴う係数値のシーケンスであり、最終的なキャラクターメッシュではありません。
Appleは、ARKitの顔表情を、特定の顔の特徴の動きに関連付けられた名前付き係数の辞書として文書化しています。これらの係数は2Dまたは3Dキャラクターを駆動できます。QuickMagic のOnlyFaceドキュメントには、ARKit互換の52ブレンドシェイプワークフローが説明されています。
1追跡可能な電話パフォーマンスを録画する
- スマホを目の高さに置き、安定させます。
- 眉、あご、両頬が常に見えるように顔をフレーミングします。
- 柔らかく均一な正面または斜め正面の照明を使用します。
- 約2秒間の無表情から始めます。
- 明確なまばたき、顎の開閉、笑顔、しかめ面、唇をすぼめる、眉の動きを行います。
- 左右非対称の表情を含めて、ミラーリングされたマッピングを検出できるようにします。
- メガネの反射、目の前の髪、口を覆う手、急な頭の動きを最小限に抑えます。
- 再圧縮されたSNSコピーではなく、元のカメラファイルをアップロードします。
| 録画の選択肢 | 推奨開始点 | 理由 |
|---|---|---|
| 解像度 | 可能な限り1080p以上 | 目、唇、眉の細部を保持 |
| フレームレート | 通常の演技は30 FPS。計画が対応していれば速い表情は60 FPS | カーブ密度と可動の詳細のバランス |
| レンズ | 非常に近い超広角フレーミングは避ける | 顔の遠近歪みを軽減 |
| 頭部の動き | 適度で制御されたもの | 顔を読みやすく保ち、表情と頭部姿勢を分離 |
2QuickMagic でフェイシャルアニメーションを処理し検証する
- QuickMagic にサインインし、該当する動画からMoCapへのワークフローを開きます。
- 元の電話動画をアップロードします。
- アクティブなプランで利用可能な場合、フェイシャル処理またはOnlyFace形式を選択します。
- 必要なフレーム範囲のみを使用します。
- アニメーションを生成します。
- 無表情、まばたき、顎の開き、唇の閉じ、笑顔、眉、非対称の表情を確認します。
- サポートされている有料プランで、可視のソーストラッキングが間違っている場合に2Dリファインメントを使用します。
- 必要なFBX/フェイシャル出力をエクスポートし、未編集のソースファイルを保存します。
ソースとターゲットのフェイシャルチャンネルを理解する
最小限の有用な検証セット
jawOpeneyeBlinkLeftおよびeyeBlinkRightmouthSmileLeftおよびmouthSmileRightbrowInnerUpmouthPucker- 少なくとも1つの頬/鼻の表情
- ターゲットがサポートしている場合の視線チャンネル
3つのマッピングケース
| ソースとターゲット | 推奨アプローチ |
|---|---|
| 名前と意味が一致する | 直接ドライバーを作成し、ゲインとクランプを調整します。 |
| 意味は一致するが名前が異なる | 明示的なマッピング辞書を作成します。 |
| ターゲットがジョイント/コントローラーを使用する | ドライバー、ノード、またはドリブンキーを介して係数をコントローラートランスフォームまたは属性にマッピングします。 |
3組み込みシェイプキーとドライバーを使用したBlenderワークフロー
- Blenderを開き、File → Import → FBX を選択します。
- アニメーションを有効にして QuickMagic フェイシャルFBXをインポートします。
- ソース顔メッシュを選択し、Object Data Properties → Shape Keys を確認します。
- タイムラインをスクラブして、ソースシェイプキーの値がアニメーションすることを確認します。
- ターゲットキャラクターを同じシーンに読み込みます。
- ターゲットにシェイプキーまたは別の制御可能なフェイシャルリグが含まれていることを確認します。
- 各ターゲット表情について、一致するソース値を読み取るドライバーを追加します。
- ターゲットの表情が弱すぎたり強すぎたりする場合は、ゲイン、クランプ、またはカスタム応答曲線を追加します。
- ベイクまたはソースの削除前に、完全なクリップをテストします。
Blenderスクリプト: 一致するシェイプキー名のドライバーを作成する
以下のスクリプトは、名前がソースシェイプキーと完全に一致するすべてのターゲットシェイプキーに対してクランプされたドライバーを作成します。実行する前にBlenderファイルを複製し、2つのオブジェクト名を変更してください。
# Blender: 一致するフェイシャルシェイプキー名のドライバーを作成
# Blenderのスクリプトワークスペースで実行する前に、これら2つのオブジェクト名を編集してください。
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("ソースまたはターゲットオブジェクトが見つかりませんでした。")
if not source.data.shape_keys or not target.data.shape_keys:
raise RuntimeError("両方のオブジェクトにシェイプキーが含まれている必要があります。")
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
# ターゲット値に既存のドライバーがあれば削除します。
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'
# 共通の0-1ターゲット範囲にクランプします。
driver.expression = f"min(max(src * {GAIN}, 0.0), 1.0)"
created.append(name)
print(f"{len(created)}個のドライバーを作成しました。")
print("スキップされた一致しないターゲットキー:", skipped)
スクリプト実行後
- タイムラインをスクラブし、ターゲットがアニメーションすることを確認します。
- 印刷された一致しないターゲットキーのリストを確認します。
- 異なる名前のチャンネルを手動でマッピングします。
- 必要に応じて
GAINまたは個々のドライバー式を変更します。 - 左右のチャンネルを注意深くテストします。
オプションのHuman Generatorワークフロー
Human Generatorは有料のBlenderキャラクター生成アドオンであり、QuickMagic の要件ではありません。現在のマーケットプレイスのリストは最新のBlenderバージョンをサポートしていますが、購入ティア、Blender互換性、転送ツールは現在の製品ページで確認する必要があります。
- Human Generatorを文書化されたBlenderアドオンワークフローを通じてインストールします。
- フェイシャルシェイプキーシステムを持つキャラクターを作成または読み込みます。
- QuickMagic ソースFBXをインポートします。
- ソースとターゲットのシェイプキー名を比較します。
- アドオンがソースデータを明示的にサポートしている場合は、その文書化された転送機能を使用するか、Blenderドライバーを使用します。
- ターゲット固有の表情の強さと補正シェイプを調整します。
フェイシャルアニメーションのクリーンアップとキャリブレーション
表情が弱すぎる
その特定の表情のチャンネルゲインを増やすか、より急な応答曲線を使用します。
表情が強すぎる、または顔をクリップする
ターゲット値をクランプし、ゲインを減らします。複数のシェイプが過度に組み合わさっていないか確認します。
まばたきが不完全
動画でまぶたが見えていたことを確認し、まばたきのゲインを調整し、ターゲットのまぶたの変形が不完全な場合は補正シェイプを追加します。
リップシンクがぼやけている
顎の開きと唇の閉じを維持します。子音のタイミングを除去するような広範なスムージングは避けてください。
左右の表情が反転している
片方だけの笑顔と眉上げをテストし、ミラーリングされたソース/ターゲットマッピングを修正します。
ジッター
目に見えてノイズのあるチャンネル区間のみをスムージングします。自然な目の動き、まばたき、発話の明瞭さ、非対称な演技は保持します。



