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

プラグインの使用方法

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

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

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

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

前提条件

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

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

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

標準(高速)モデルを使用する予定がある場合は、拡張プラグインをインストールする必要があります:

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

追加プラグイン

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

セットアップ手順

ステップ 1: フェイスアニメーションのブループリントを特定して変更する

MetaHuman キャラクターの顔のアニメーションに使用するアニメーションブループリントを変更する必要があります。デフォルトの MetaHuman フェイスアニメーションブループリントは、以下の場所にあります:

Content/MetaHumans/Common/Face/Face_AnimBP

Face Animation Blueprint

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

デフォルトの Face_AnimBP を直接開き、変更を加えます。変更はこの Animation Blueprint を使用するすべての MetaHuman キャラクターに影響します。

注意: このアプローチは便利ですが、デフォルトの Animation Blueprint を使用するすべてのキャラクターに影響を与えます。

重要: 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")として保存し、グラフの他の部分で使用する

Creating Runtime Viseme Generator

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

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

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

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

コピー可能なノード.

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

ステップ4: アニメーショングラフの設定

イベントグラフの設定後、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. カスタムのフェイシャルアニメーションにとって重要: Curve Blend Option で、"Use Max Value" を選択します。これにより、カスタムのフェイシャルアニメーション(表情、感情など)がリップシンクの上に適切にレイヤリングされます。
  4. 接続を行います:
    • 既存のアニメーション(例:BodyPose)→ Base Pose 入力
    • フェイシャルアニメーション出力(リップシンクや笑いのノードから)→ Blend Poses 0 入力
    • Layered blend ノード → 最終的な Result ポーズ

Layered Blend Per Bone

これが機能する理由: ブランチフィルターはフェイシャルアニメーションのボーンを分離し、リップシンクと笑いが元のボディアニメーションを保持しながら、フェイシャルの動きにのみブレンドされるようにします。"Use Max Value" のカーブブレンドオプションは、カーブを加算的にブレンドするのではなく、各カーブから最大値を取るため、カスタムのフェイシャルアニメーション(表情や感情など)がリップシンクと競合せずに適切に組み合わされます。これは、MetaHuman のフェイシャルリグ構造に合致し、自然な統合を実現します。

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

リップシンクの動作の微調整

基本的なリップシンク機能を設定した後、プロジェクトの要件に合わせて口の動きの特定の側面を微調整したい場合があります。

舌の突出制御

標準的なリップシンクモデルでは、特定の音素の発声中に舌が過度に前方に動くことがあります。舌の突出を制御するには:

  1. Blend Runtime MetaHuman Lip Sync または Blend Realistic MetaHuman Lip Sync ノードの後に、Modify Curve ノードを追加します
  2. Modify Curve ノードを右クリックし、Add Curve Pin を選択します
  3. CTRL_expressions_tongueOut という名前のカーブピンを追加します
  4. ノードの Apply Mode プロパティを Scale に設定します
  5. Value パラメータを調整して舌の突出を制御します(例:0.8 で突出を20%減少)

顎の開き制御

リアルなリップシンクは、オーディオの内容や視覚的な要件によっては、顎の動きが過度に反応的になる場合があります。顎の開きの強度を調整するには:

  1. リップシンクブレンドノードの後に、Modify Curve ノードを追加します
  2. Modify Curve ノードを右クリックし、Add Curve Pin を選択します
  3. CTRL_expressions_jawOpen という名前のカーブピンを追加します
  4. ノードの Apply Mode プロパティを Scale に設定します
  5. Value パラメータを調整して顎の開き範囲を制御します(例:0.9 で顎の動きを10%減少)

設定

リップシンク設定

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

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

笑いの設定

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

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

リップシンクモデルの選択

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

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

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

UE 5.2 互換性の問題

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

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

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