メインコンテンツまでスキップ

プラグインの使用方法

このガイドでは、MetaHumanキャラクター向けにRuntime MetaHuman Lip Syncをセットアップする手順を説明します。

注: Runtime MetaHuman Lip SyncはMetaHumanカスタムキャラクターの両方で動作します。このプラグインは以下のような様々なキャラクタータイプをサポートしています:

  • 人気のある商用キャラクター (Daz Genesis 8/9, Reallusion CC3/CC4, Mixamo, ReadyPlayerMeなど)
  • FACSベースのブレンドシェープを持つキャラクター
  • ARKitブレンドシェープ標準を使用するモデル
  • Preston Blairフォニームセットを持つキャラクター
  • 3ds Maxフォニームシステム
  • 顔の表情用にカスタムモーフターゲットを持つ任意のキャラクター

上記の標準を含むカスタムキャラクターのセットアップに関する詳細な手順と、すべてのビセームマッピングリファレンスについては、カスタムキャラクターセットアップガイドを参照してください。

前提条件

開始する前に、以下を確認してください:

  1. MetaHumanプラグインがプロジェクトで有効になっていること(注: UE 5.6以降では、この手順は不要です。MetaHuman機能がエンジンに直接統合されています)
  2. 少なくとも1つのMetaHumanキャラクターがダウンロードされ、プロジェクトで利用可能であること
  3. Runtime MetaHuman Lip Syncプラグインがインストールされていること

標準モデル拡張プラグイン

Standard (Faster) Modelを使用する場合は、拡張プラグインのインストールが必要です:

  1. Google DriveからStandard Lip Sync Extension pluginをダウンロード
  2. ダウンロードしたアーカイブからフォルダを抽出し、プロジェクトのPluginsフォルダに配置(存在しない場合は作成)
  3. プロジェクトがC++プロジェクトとして設定されていることを確認(C++コードがなくても)
  4. プロジェクトをリビルド
注記
  • この拡張はStandard Modelを使用する場合のみ必要です。Realistic Modelのみが必要な場合は、この手順をスキップできます。
  • プラグインを手動でビルドする方法の詳細については、Building Pluginsチュートリアルを参照してください

追加プラグイン

  • オーディオキャプチャ(例:マイク入力)を使用する予定がある場合は、Runtime Audio Importerプラグインをインストールしてください。
  • テキスト読み上げ機能を私のプラグインで使用する予定がある場合(独自のカスタムTTSや他のオーディオ入力がある場合)、Runtime Audio Importerプラグインに加えて、以下もインストールしてください:

プラットフォーム固有の設定

Android / Meta Quest 設定

AndroidまたはMeta Questプラットフォームをターゲットにしており、このプラグインでビルドエラーが発生する場合、プロジェクト設定でx86_64(x64)Androidアーキテクチャを無効にする必要があります:

  1. 編集 > プロジェクト設定に移動
  2. プラットフォーム > Androidに移動
  3. プラットフォーム - Androidビルドセクションで、**Support x86_64 [aka x64]**を見つけ、以下のように無効にしていることを確認してください

x64 Androidアーキテクチャを無効にする

これは、プラグインが現在Android / Meta Questプラットフォーム向けにarm64-v8aおよびarmeabi-v7aアーキテクチャのみをサポートしているためです。

セットアップ手順

ステップ1:フェイスアニメーションBlueprintを特定して修正

MetaHumanキャラクターのフェイスアニメーションに使用されるAnimation Blueprintを修正する必要があります。デフォルトのMetaHumanフェイスAnimation Blueprintは以下にあります:

Content/MetaHumans/Common/Face/Face_AnimBP

フェースアニメーションブループリント

リップシンク機能を実装するにはいくつかのオプションがあります:

デフォルトのFace_AnimBPを直接開いて変更を加えます。変更はこのアニメーションブループリントを使用するすべてのMetaHumanキャラクターに影響します。

注意: この方法は便利ですが、デフォルトのアニメーションブループリントを使用するすべてのキャラクターに影響を与えます。

重要: Runtime MetaHuman Lip Syncのブレンディングは、デフォルトMetaHumanのFace_Archetype_Skeletonに存在する顔のボーンを含むポーズにアクセスできる任意のAnimation Blueprintアセットで実装できます。上記のオプションに限定されません - これらは一般的な実装アプローチです。

ステップ2: イベントグラフの設定

Face Animation Blueprintを開き、Event Graphに切り替えます。オーディオデータを処理し、リップシンクアニメーションを生成するジェネレーターを作成する必要があります。

  1. まだ存在しない場合は、Event Blueprint Begin Playノードを追加します
  2. Create Runtime Viseme Generatorノードを追加し、Begin Playイベントに接続します
  3. 出力を変数(例: "VisemeGenerator")として保存し、グラフの他の部分で使用します

Runtime Viseme Generatorの作成

ステップ3: オーディオ入力処理の設定

オーディオ入力を処理する方法を設定する必要があります。オーディオソースに応じていくつかの方法があります。

このアプローチでは、マイクに向かって話しながらリアルタイムでリップシンクを実行します:

  1. Runtime Audio Importerを使用してCapturable Sound Waveを作成
  2. オーディオキャプチャを開始する前に、OnPopulateAudioDataデリゲートにバインド
  3. バインドされた関数内で、Runtime Viseme GeneratorからProcessAudioDataを呼び出し
  4. マイクからのオーディオキャプチャを開始

コピー可能なノード.

オーディオキャプチャ中のリップシンク

ステップ4: Anim Graphの設定

Event Graphの設定後、Anim Graphに切り替えてジェネレータをキャラクターのアニメーションに接続します:

リップシンク

  1. MetaHumanの顔を含むポーズを特定します(通常はUse cached pose 'Body Pose'から)
  2. Blend Runtime MetaHuman Lip Syncノードを追加します
  3. ポーズをBlend Runtime MetaHuman Lip SyncノードのSource Poseに接続します
  4. RuntimeVisemeGenerator変数をViseme Generatorピンに接続します
  5. Blend Runtime MetaHuman Lip Syncノードの出力をOutput PoseResultピンに接続します

Blend Runtime MetaHuman Lip Sync

音声でリップシンクが検出されると、キャラクターは動的にアニメーションします:

Lip Sync

笑いアニメーション

音声で検出された笑いに動的に反応する笑いアニメーションも追加できます:

  1. Blend Runtime MetaHuman Laughterノードを追加します
  2. RuntimeVisemeGenerator変数をViseme Generatorピンに接続します
  3. 既にリップシンクを使用している場合:
    • Blend Runtime MetaHuman Lip Syncノードの出力をBlend Runtime MetaHuman LaughterノードのSource Poseに接続します
    • Blend Runtime MetaHuman Laughterノードの出力をOutput PoseResultピンに接続します
  4. リップシンクなしで笑いのみを使用する場合:
    • ソースポーズを直接Blend Runtime MetaHuman LaughterノードのSource Poseに接続します
    • 出力をResultピンに接続します

Blend Runtime MetaHuman Laughter

音声で笑いが検出されると、キャラクターは動的にアニメーションします:

Laughter

ボディアニメーションとの組み合わせ

既存のボディアニメーションを上書きせずにリップシンクと笑いを適用するには:

  1. ボディアニメーションと最終出力の間に Layered blend per bone ノードを追加します。Use Attached Parent を true に設定してください。
  2. レイヤー設定を構成します:
    • Layer Setup 配列に 1 アイテム を追加
    • レイヤーの Branch Filters3 アイテム を追加し、以下の Bone Name を設定:
      • FACIAL_C_FacialRoot
      • FACIAL_C_Neck2Root
      • FACIAL_C_Neck1Root
  3. 接続を行います:
    • 既存のアニメーション(例:BodyPose)→ Base Pose 入力
    • フェイシャルアニメーション出力(Lip Sync や laughter ノードからの出力)→ Blend Poses 0 入力
    • Layered blend ノード → 最終的な Result ポーズ

Layered Blend Per Bone

この方法が有効な理由: ブランチフィルターがフェイシャルアニメーションのボーンを分離し、Lip Sync と laughter がフェイシャルムーブメントのみとブレンドされるようにしながら、元のボディアニメーションを保持します。これは MetaHuman フェイシャルリグ構造にマッチし、自然な統合を実現します。

注: Lip Sync と laughter 機能は既存のアニメーションセットアップと非破壊的に連携するように設計されています。これらは口の動きに必要な特定のフェイシャルボーンのみに影響を与え、他のフェイシャルアニメーションはそのまま残ります。つまり、アニメーションチェーンの任意の時点で安全に統合できます - 他のフェイシャルアニメーションの前(それらのアニメーションが Lip Sync/laughter を上書きできるように)または後(Lip Sync/laughter が既存アニメーションの上にブレンドされるように)に配置可能です。この柔軟性により、Lip Sync と laughter を、まばたき、眉の動き、感情表現、その他のフェイシャルアニメーションと競合なく組み合わせることができます。

設定

Lip Sync 設定

Blend Runtime MetaHuman Lip Sync ノードにはプロパティパネルで設定可能なオプションがあります:

プロパティデフォルト説明
Interpolation Speed25ビジーム間の口の動きの遷移速度を制御します。値が高いほど、より速く急激な遷移になります。
Reset Time0.2Lip Sync がリセットされるまでの時間(秒)。音声が停止した後も Lip Sync が継続するのを防ぐのに便利です。

Laughter 設定

Blend Runtime MetaHuman Laughterノードには独自の設定オプションがあります:

プロパティデフォルト値説明
補間速度25笑いアニメーション間の口の動きの遷移速度を制御します。値が高いほど、より速く急激な遷移になります。
リセット時間0.2笑いがリセットされるまでの時間(秒)。音声が停止した後も笑いが続くのを防ぐのに役立ちます。
最大笑い強度0.7笑いアニメーションの最大強度をスケーリングします(0.0 - 1.0)。

Lip Syncモデルの選択

プロジェクトに使用するLip Syncモデルを決定する際は、以下の要素を考慮してください:

考慮事項スタンダードモデルリアリスティックモデル
キャラクター互換性MetaHumansおよびすべてのカスタムキャラクタータイプMetaHumansのみ
視覚的品質効率的なパフォーマンスを伴う良好なLip Syncより自然な口の動きによるリアリズムの向上
パフォーマンスモバイル/VRを含むすべてのプラットフォーム向けに最適化やや高いリソース要件
使用ケース一般的なアプリケーション、ゲーム、VR/AR、モバイルシネマティック体験、クローズアップキャラクターインタラクション

エンジンバージョン互換性

UE 5.2 互換性問題

Unreal Engine 5.2を使用している場合、UEのリサンプリングライブラリのバグにより、リアリスティックモデルが正しく動作しない可能性があります。UE 5.2ユーザーで信頼性の高いLip Sync機能が必要な場合は、代わりにスタンダードモデルを使用してください。

この問題はUE 5.2に固有であり、他のエンジンバージョンには影響しません。

ほとんどのプロジェクトでは、スタンダードモデルが品質とパフォーマンスの優れたバランスを提供し、最も広範なキャラクタータイプをサポートします。リアリスティックモデルは、パフォーマンスオーバーヘッドが重要でない状況で、MetaHumanキャラクター向けに最高の視覚的忠実度が必要な場合に最適です。