プラグインの使用方法
このガイドでは、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フォニームシステム
- 顔の表情用にカスタムモーフターゲットを持つ任意のキャラクター
上記の標準を含むカスタムキャラクターのセットアップに関する詳細な手順と、すべてのビセームマッピングリファレンスについては、カスタムキャラクターセットアップガイドを参照してください。
前提条件
開始する前に、以下を確認してください:
- MetaHumanプラグインがプロジェクトで有効になっていること(注: UE 5.6以降では、この手順は不要です。MetaHuman機能がエンジンに直接統合されています)
- 少なくとも1つのMetaHumanキャラクターがダウンロードされ、プロジェクトで利用可能であること
- Runtime MetaHuman Lip Syncプラグインがインストールされていること
標準モデル拡張プラグイン
Standard (Faster) Modelを使用する場合は、拡張プラグインのインストールが必要です:
- Google DriveからStandard Lip Sync Extension pluginをダウンロード
- ダウンロードしたアーカイブからフォルダを抽出し、プロジェクトの
Plugins
フォルダに配置(存在しない場合は作成) - プロジェクトがC++プロジェクトとして設定されていることを確認(C++コードがなくても)
- プロジェクトをリビルド
- この拡張はStandard Modelを使用する場合のみ必要です。Realistic Modelのみが必要な場合は、この手順をスキップできます。
- プラグインを手動でビルドする方法の詳細については、Building Pluginsチュートリアルを参照してください
追加プラグイン
- オーディオキャプチャ(例:マイク入力)を使用する予定がある場合は、Runtime Audio Importerプラグインをインストールしてください。
- テキスト読み上げ機能を私のプラグインで使用する予定がある場合(独自のカスタムTTSや他のオーディオ入力がある場合)、Runtime Audio Importerプラグインに加えて、以下もインストールしてください:
- ローカルTTSの場合、Runtime Text To Speechプラグイン
- 外部TTSプロバイダー(ElevenLabs、OpenAI)の場合、Runtime AI Chatbot Integratorプラグイン
プラットフォーム固有の設定
Android / Meta Quest 設定
AndroidまたはMeta Questプラットフォームをターゲットにしており、このプラグインでビルドエラーが発生する場合、プロジェクト設定でx86_64(x64)Androidアーキテクチャを無効にする必要があります:
- 編集 > プロジェクト設定に移動
- プラットフォーム > Androidに移動
- プラットフォーム - Androidのビルドセクションで、**Support x86_64 [aka x64]**を見つけ、以下のように無効にしていることを確認してください
これは、プラグインが現在Android / Meta Questプラットフォーム向けにarm64-v8aおよびarmeabi-v7aアーキテクチャのみをサポートしているためです。
セットアップ手順
ステップ1:フェイスアニメーションBlueprintを特定して修正
- UE 5.5以前(またはUE 5.6+のレガシーMetaHumans)
- UE 5.6+ MetaHuman Creatorキャラクター
MetaHumanキャラクターのフェイスアニメーションに使用されるAnimation Blueprintを修正する必要があります。デフォルトのMetaHumanフェイスAnimation Blueprintは以下にあります:
Content/MetaHumans/Common/Face/Face_AnimBP
リップシンク機能を実装するにはいくつかのオプションがあります:
- デフォルトアセットを直接編集(最も簡単なオプション)
- 複製を作成
- カスタムアニメーションブループリントを使用
デフォルトのFace_AnimBP
を直接開いて変更を加えます。変更はこのアニメーションブループリントを使用するすべてのMetaHumanキャラクターに影響します。
注意: この方法は便利ですが、デフォルトのアニメーションブループリントを使用するすべてのキャラクターに影響を与えます。
Face_AnimBP
を複製し、わかりやすい名前を付けます- キャラクターのブループリントクラスを探します(例: "Bryan"というキャラクターの場合、
Content/MetaHumans/Bryan/BP_Bryan
にあります) - キャラクターブループリントを開き、Faceコンポーネントを見つけます
- Anim Classプロパティを新しく複製したアニメーションブループリントに変更します
注意: この方法では、特定のキャラクター用にリップシンクをカスタマイズしながら、他のキャラクターは変更せずに残すことができます。
必要な顔のボーンにアクセスできる任意のアニメーションブループリントでリップシンクのブレンディングを実装できます:
- カスタムアニメーションブループリントを作成または既存のものを使用 します
- アニメーションブループリントが、デフォルトのMetaHumanの
Face_Archetype_Skeleton
(任意のMetaHumanキャラクターに使用される標準スケルトン)と同じ顔のボーンを含むスケルトンで動作することを確認します
注意: この方法では、カスタムアニメーションシステムとの統合に最大限の柔軟性が得られます。
UE 5.6以降では、新しいMetaHuman Creatorシステムが導入され、従来のFace_AnimBP
アセットなしでキャラクターが作成されます。これらのキャラクターの場合、プラグインは以下の場所にフェースアニメーションブループリントを提供します:
Content/LipSyncData/LipSync_Face_AnimBP
:::警告 重要
このAnimation Blueprintはプラグインのコンテンツフォルダに配置されており、プラグインの更新ごとに上書きされます。カスタマイズを失わないためには、以下の手順を強く推奨します:
- このアセットをプロジェクトのContentフォルダにコピーします(例:
YourProject/Content/MetaHumans/LipSync_Face_AnimBP
) - キャラクター設定でコピーしたバージョンを使用します
- すべての変更をコピーしたバージョンに対して行います
これ により、プラグインの更新後もリップシンク設定が保持されます。
:::
プラグインのFace Animation Blueprintの使用方法:
- MetaHuman CreatorキャラクターのBlueprintクラスを特定します
- キャラクターBlueprintを開き、Faceコンポーネントを見つけます
- Anim Classプロパティをプラグインの
LipSync_Face_AnimBP
に変更します - Runtime MetaHuman Lip Sync機能を設定するために、ステップ2-4を続行します
代替オプション:
- レガシー手順を使用: レガシーMetaHumansを扱っている場合や従来のワークフローを好む場合は、上記のUE 5.5手順に従うことができます
- カスタムAnimation Blueprintを作成: MetaHuman Creatorスケルトン構造と連携する独自のAnimation Blueprintを作成します
注意: UE 5.6+を使用しているが、レガシーMetaHumans(MetaHuman Creatorで作成されていない)を扱っている場合は、"UE 5.5 and Earlier"タブの手順を使用してください。
重要: Runtime MetaHuman Lip Syncのブレンディングは、デフォルトMetaHumanのFace_Archetype_Skeleton
に存在する顔のボーンを含むポーズにアクセスできる任意のAnimation Blueprintアセットで実装できます。上記のオプションに限定されません - これらは一般的な実装アプローチです。
ステップ2: イベントグラフの設定
Face Animation Blueprintを開き、Event Graph
に切り替えます。オーディオデータを処理し、リップシンクアニメーションを生成するジェネレーターを作成する必要があります。
- Standard (高速) モデル
- Realistic (高品質) モデル
- まだ存在しない場合は、
Event Blueprint Begin Play
ノードを追加します Create Runtime Viseme Generator
ノードを追加し、Begin Playイベントに接続します- 出力を変数(例: "VisemeGenerator")として保存し、グラフの他の部分で使用します
- まだ存在しない場合は、
Event Blueprint Begin Play
ノードを追加します Create Realistic MetaHuman Lip Sync Generator
ノードを追加し、Begin Playイベントに接続します- 出力を変数(例: "RealisticLipSyncGenerator")として保存し、グラフの他の部分で使用します
- (オプション)Configurationパラメータを使用してジェネレーター設定を構成します
- (オプション)Realistic MetaHuman Lip Sync GeneratorオブジェクトでProcessing Chunk Sizeを設定します

注: Realistic ModelはMetaHumanキャラクター向けに最適化されており、カスタムキャラクタータイプとは互換性がありません。
設定オプション
Create Realistic MetaHuman Lip Sync Generator
ノードはオプションのConfigurationパラメータを受け取り、ジェネレーターの動作をカスタマイズできます:
モデルタイプ
Model Type設定は、使用するリアリスティックモデルのバージョンを決定します:
モデルタイプ | パフォーマンス | 視覚的品質 | ノイズ処理 | 推奨使用ケース |
---|---|---|---|---|
Highly Optimized (デフォルト) | 最高パフォーマンス、最低CPU使用率 | 良好な品質 | バックグラウンドノイズや非音声に顕著な口の動きが生じる可能性あり | クリーンな音声環境、パフォーマンス重視のシナリオ |
Optimized | 良好なパフォーマンス、中程度のCPU使用率 | 高品質 | ノイズの多い音声に対してより安定 | バランスの取れたパフォーマンスと品質、混合音声条件 |
Original Unoptimized | 最新CPUでのリアルタイム使用に適応 | 最高品質 | バックグラウンドノイズや非音声に対して最も安定 | 高品質プロダクショ ン、ノイズの多い音声環境、最大精度が必要な場合 |
パフォーマンス設定
Intra Op Threads: 内部モデル処理操作に使用するスレッド数を制御
- 0 (デフォルト/自動): 自動検出を使用(通常は利用可能CPUコアの1/4、最大4)
- 1-16: 手動でスレッド数を指定。マルチコアシステムでは高い値がパフォーマンス向上につながるがCPU使用率も上昇
Inter Op Threads: 異なるモデル操作の並列実行に使用するスレッド数を制御
- 0 (デフォルト/自動): 自動検出を使用(通常は利用可能CPUコアの1/8、最大2)
- 1-8: 手動でスレッド数を指定。リアルタイム処理では通常低く保つ
設定の使用方法
ジェネレーターを設定するには:
Create Realistic MetaHuman Lip Sync Generator
ノードでConfigurationパラメータを展開- Model Typeを希望のオプションに設定:
- 最高パフォーマンスにはHighly Optimizedを使用(ほとんどのユーザーに推奨)
- バランスの取れたパフォーマンスと品質にはOptimizedを使用
- 最高品質が不可欠な場合のみOriginal Unoptimizedを使用
- 必要に応じてIntra Op ThreadsとInter Op Threadsを調整(ほとんどの場合、自動検出のため0のままにしてください) パフォーマンスに関する推奨事項:
- クリーンな音声を使用するほとんどのプロジェクトでは、最高のパフォーマンスを得るために Highly Optimized を使用してください
- バックグラウンドノイズ、音楽、または非音声を含む音声を扱う場合は、より安定した動作のために Optimized または Original Unoptimized モデルの使用を検討してください
- Highly Optimized モデルは、モデル作成時に適用された最適化技術のため、非音声オーディオを処理する際に微妙な口の動きを示す場合があります
- Original Unoptimized モデルは、より多くのCPUリソースを必要としますが、最新のハードウェア上でのリアルタイムアプリケーションに適しており、困難なオーディオ条件下でも最も正確な結果を提供します
- パフォーマンスの問題が発生している場合や特定の最適化要件がある場合にのみ、スレッド数を調整してください
- 高いスレッド数が常に良いパフォーマンスを意味するわけではありません - 最適な値は特定のハードウェアとプロジェクト要件に依存します
処理チャンクサイズの設定: Processing Chunk Size は、各推論ステップで処理されるサンプル数を決定します。デフォルト値は 160サンプル で、16kHz(内部処理サンプルレート)での10msのオーディオに相当します。この値を調整することで、更新頻度とCPU使用率のバランスを取ることができます:
- 小さい値はより頻繁な更新を提供しますが、CPU使用率を増加させます
- 大きい値はCPU負荷を軽減しますが、リップシンクの応答性が低下する可能性があります
Processing Chunk Sizeを設定するには:
Realistic MetaHuman Lip Sync Generator
オブジェクトにアクセスしますProcessing Chunk Size
プロパティを探します- 希望の値を設定します
160の倍数 を使用することを推奨します。これはモデルの内部処理構造に沿っています。推奨値には以下が含まれます:
160
(デフォルト、最小推奨値)320
480
640
- など
デフォルトのProcessing Chunk Sizeである 160
サンプルは、16kHzでの10msのオーディオに相当します。160の倍数を使用することで、この基本単位との整合性を維持し、処理効率を最適化し、異なるチャンクサイズ間で一貫した動作を維持するのに役立ちます。
Realistic Modelで信頼性と一貫性のある動作を得るためには、非アクティブ期間後に新しいオーディオデータを供給したい場合、毎回 Realistic MetaHuman Lip Sync Generator を再作成する 必要があります。これは、ONNXランタイムの動作により、無音期間後にジェネレータを再利用するとリップシンクが機能しなくなる可能性があるためです。
例: TTSリップシンクを実行して停止した後、新しいオーディオで再度リップシンクを実行したい場合、既存のジェネレータを再利用するのではなく、新しいRealistic MetaHuman Lip Sync Generatorを作成してください。
ステップ3: オーディオ入力処理の設定
オーディオ入力を処理する方法を設定する必要があります。オーディオソースに応じていくつかの方法があります。
- マイク (リアルタイム)
- マイク (再生)
- テキスト読み上げ(ローカル)
- Text-to-Speech (External APIs)
- オーディオファイル/バッファから
- ストリーミングオーディオバッファ
このアプローチでは、マイクに向かって話しながらリアルタイムでリップシンクを実行します:
- 標準 (高速) モデル
- リアリスティック (高品質) モデル
- Runtime Audio Importerを使用してCapturable Sound Waveを作成
- オーディオキャプチャを開始する前に、
OnPopulateAudioData
デリゲートにバインド - バインドされた関数内で、Runtime Viseme Generatorから
ProcessAudioData
を呼び出し - マイクからのオーディオキャプチャを開始
リアリスティックモデルは標準モデルと同じオーディオ処理ワークフローを使用しますが、VisemeGenerator
の代わりにRealisticLipSyncGenerator
変数を使用します。
標準モデルで示した各例では、単純に以下を置き換えてください:
VisemeGenerator
をRealisticLipSyncGenerator
変数に- 関数名とパラメータは両モデル間で同一のまま維持
このアプローチでは、マイクからオーディオをキャプチャし、リップシンク付きで再生します:
- 標準 (高速) モデル
- リアリスティック(高品質)モデル
- Runtime Audio Importerを使用してCapturable Sound Waveを作成
- マイクからのオーディオキャプチャを開始
- キャプチャ可能なサウンドウェーブを再生する前に、その
OnGeneratePCMData
デリゲートにバインド - バインドされた関数内で、Runtime Viseme Generatorから
ProcessAudioData
を呼び出し
リアリスティックモデルは標準モデルと同じオーディオ処理ワークフローを使用しますが、VisemeGenerator
の代わりにRealisticLipSyncGenerator
変数を使用します。
標準モデルで示した各例では、単純に以下を置き換えてください:
VisemeGenerator
をRealisticLipSyncGenerator
変数に- 関数名とパラメータは両モデル間で完全に同一です
注: より反応の良いリップシンクのためにオーディオデータを小さなチャンクで処理したい場合、SetNumSamplesPerChunk
関数の計算を調整してください。例えば、サンプルレートを100(10msごとにストリーミング)ではなく150(約6.67msごとにストリーミング)で割ると、より頻繁なリップシンク更新が得られ ます。
- 通常
- Streaming
このアプローチではテキストから音声を合成し、リップシンクを実行します:
- 標準(高速)モデル
- リアリスティック(高品質)モデル
- Runtime Text To Speechを使用してテキストから音声を生成
- Runtime Audio Importerで合成されたオーディオをインポート
- インポートしたサウンドウェーブを再生する前に、その
OnGeneratePCMData
デリゲートにバインド - バインドされた関数内で、Runtime Viseme Generatorの
ProcessAudioData
を呼び出し
Runtime Text To Speechプラグインが提供するローカルTTSは、ONNXランタイムの競合により、現在リアリスティックモデルではサポートされていません。リアリスティックモデルでテキスト読み上げを使用する場合は、外部TTSサービス(Runtime AI Chatbot Integrator経由のOpenAIやElevenLabsなど)の使用を検討するか、代わりに標準モデルを使用してください。
注: より反応の良いリップシンクのためにオーディオデータを小さなチャンクで処理したい場合、SetNumSamplesPerChunk
関数の計算を調整してください。例えば、サンプルレートを100(10msごとにストリーミング)ではなく150(約6.67msごとにストリーミング)で割ると、より頻繁なリップシンク更新が得られます。
このアプローチでは、リアルタイムのLip Syncを伴うストリーミング音声合成を使用します:
- Standard (Faster) Model
- Realistic (Higher Quality) Model
- Runtime Text To Speechを使用してテキストからストリーミング音声を生成
- Runtime Audio Importerを使用して合成された音声をインポート
- ストリーミング音声波形を再生する前に、その
OnGeneratePCMData
デリゲートにバインド - バインドされた関数内で、Runtime Viseme Generatorから
ProcessAudioData
を呼び出し
Runtime Text To Speechプラグインが提供するローカルTTSは、ONNXランタイムの競合によ り、現在Realisticモデルではサポートされていません。Realisticモデルでテキスト読み上げを使用する場合は、外部TTSサービス(Runtime AI Chatbot Integrator経由のOpenAIやElevenLabsなど)を使用するか、代わりにStandardモデルを使用してください。
注: よりレスポンシブなLip Syncのためにオーディオデータを小さなチャンクで処理したい場合は、SetNumSamplesPerChunk
関数の計算を調整してください。例えば、サンプルレートを100(10msごとにストリーミング)ではなく150(約6.67msごとにストリーミング)で割ると、より頻繁なLip Syncの更新が可能になります。
- Regular
- ストリーミング
このアプローチでは、Runtime AI Chatbot Integratorプラグインを使用してAIサービス(OpenAIやElevenLabs)から合成音声を生成し、Lip Syncを実行します:
- Standard (Faster) Model
- リアリスティック(高品質)モデル
- Runtime AI Chatbot Integratorを使用して外部API(OpenAI、ElevenLabsなど)からテキストで音声を生成
- Runtime Audio Importerを使用して合成された音声データをインポート
- インポートされた音声波形を再生する前に、その
OnGeneratePCMData
デリゲートにバインド - バインドされた関数内で、Runtime Viseme Generatorから
ProcessAudioData
を呼び出し
リアリスティックモデルは標準モデルと同じオーディオ処理ワークフローを使用しますが、VisemeGenerator
の代わりにRealisticLipSyncGenerator
変数を使用します。
標準モデルで示した各例では、単純に以下を置き換えてください:
VisemeGenerator
をRealisticLipSyncGenerator
変数に- 関数名とパラメータは両モデル間で同一です
注: よりレスポンシブなリップシンクのためにオーディオデータを小さなチャンクで処理したい場合、SetNumSamplesPerChunk
関数の計算を調整してください。例えば、サンプルレートを100(10msごとにストリーミング)ではなく150(約6.67msごとにストリーミング)で割ると、より頻繁なリップシンク更新が可能になります。
このアプローチではRuntime AI Chatbot Integratorプラグインを使用して、AIサービス(OpenAIまたはElevenLabs)から合成ストリーミング音声を生成し、リップシンクを実行します:
- 標準(高速)モデル
- リアリスティック(高品質)モデル
- Runtime AI Chatbot Integratorを使用してストリーミングTTS API(ElevenLabs Streaming APIなど)に接続
- Runtime Audio Importerを使用して合成オーディオデータをインポート
- ストリーミングサウンドウェーブの再生前に、その
OnGeneratePCMData
デリゲートにバインド - バインドされた関数内で、Runtime Viseme Generatorから
ProcessAudioData
を呼び出し
リアリスティックモデルは標準モデルと同じオーディオ処理ワークフローを使用しますが、VisemeGenerator
の代わりにRealisticLipSyncGenerator
変数を使用します。
標準モデルで示した各例では、単純に以下を置き換えてください:
VisemeGenerator
をRealisticLipSyncGenerator
変数に- 関数名とパラメータは両モデル間で同一です
注: よりレスポンシブなLip Syncのために、オーディオデータを小さなチャンクで処理したい場合は、SetNumSamplesPerChunk
関数の計算を調整してください。例えば、サンプルレートを100(10ミリ秒ごとにストリーミング)ではなく150(約6.67ミリ秒ごとにストリーミング)で割ると、より頻繁なLip Syncの更新が可能になります。
このアプローチでは、事前に録音されたオーディオファイルまたはオーディオバッファをLip Syncに使用します:
- 標準(高速)モデル
- リアル(高品質)モデル
- Runtime Audio Importerを使用してディスクまたはメモリからオーディオファイルをインポートします
- インポートしたサウンドウェーブを再生する前に、その
OnGeneratePCMData
デリゲートにバインドします - バインドした関数内で、Runtime Viseme Generatorから
ProcessAudioData
を呼び出します - インポートしたサウンドウェーブを再生し、Lip Syncアニメーションを確認します
リアルモデルは標準モデルと同じオーディオ処理ワークフローを使用しますが、VisemeGenerator
の代わりにRealisticLipSyncGenerator
変数を使用します。
標準モデルで示した各例では、単純に以下を置き換えてください:
VisemeGenerator
をRealisticLipSyncGenerator
変数に- 関数名とパラメータは両モデル間で同一のままです
注: よりレスポンシブなLip Syncのために、オーディオデータを小さなチャンクで処理したい場合は、SetNumSamplesPerChunk
関数の計算を調整してください。例えば、サンプルレートを100(10ミリ秒ごとにストリーミング)ではなく150(約6.67ミリ秒ごとにストリーミング)で割ると、より頻繁なLip Syncの更新が可能になります。
ストリーミングオーディオデータをバッファから処理するには、以下が必要です:
- 標準(高速)モデル
- リアリスティック(高品質)モデル
- ストリーミングソースから利用可能なfloat PCM形式のオーディオデータ(浮動小数点サンプルの配列)
- サンプルレートとチャンネル数
- オーディオチャンクが利用可能になるたびに、Runtime Viseme Generatorの
ProcessAudioData
をこれらのパラメータで呼び出す
ストリーミングオーディオデータからリップシンクを処理する例:
注: ストリーミングオーディオソースを使用する場合、歪んだ再生を避けるためにオーディオ再生タイミングを適切に管理してください。適切なストリーミングオーディオ管理については、Streaming Sound Waveドキュメントを参照してください。
リアリスティックモデルは標準モデルと同じオーディオ処理ワークフローを使用しますが、VisemeGenerator
の代わりにRealisticLipSyncGenerator
変数を使用します。
標準モデルで示した各例では、単純に以下を置き換えてください:
VisemeGenerator
をRealisticLipSyncGenerator
変数に- 関数名とパラメータは両モデル間で同一です
注: ストリーミングオーディオソースを使用する場合、歪んだ再生を避けるためにオーディオ再生タイミングを適切に管理してください。適切なストリーミングオーディオ管理については、Streaming Sound Waveドキュメントを参照してください。
注: よりレスポンシブなリップシンクのためにオーディオデータを小さなチャンクで処理したい場合、SetNumSamplesPerChunk
関数の計算を調整してください。例えば、サンプルレートを100(10msごとにストリーミング)ではなく150(約6.67msごとにストリーミング)で割ると、より頻繁なリップシンク更新が可能になります。
ステップ4: Anim Graphの設定
Event Graphの設定後、Anim Graph
に切り替えてジェネレータをキャラクターのアニメーションに接続します:
リップシンク
- 標準(高速)モデル
- リアリスティック(高品質)モデル
- MetaHumanの顔を含むポーズを特定します(通常は
Use cached pose 'Body Pose'
から) Blend Runtime MetaHuman Lip Sync
ノードを追加します- ポーズを
Blend Runtime MetaHuman Lip Sync
ノードのSource Pose
に接続します RuntimeVisemeGenerator
変数をViseme Generator
ピンに接続しますBlend Runtime MetaHuman Lip Sync
ノードの出力をOutput Pose
のResult
ピンに接続します
音声でリップシンクが検出されると、キャラクターは動的にアニメーションします:
- MetaHumanの顔を含むポーズを特定します(通常は
Use cached pose 'Body Pose'
から) Blend Realistic MetaHuman Lip Sync
ノードを追加します- ポーズを
Blend Realistic MetaHuman Lip Sync
ノードのSource Pose
に接続します RealisticLipSyncGenerator
変数をLip Sync Generator
ピンに接続しますBlend Realistic MetaHuman Lip Sync
ノードの出力をOutput Pose
のResult
ピンに接続します
リアリスティックモデルは、より自然な口の動きで視覚品質を向上させます:
注記: リアリスティックモデルはMetaHumanキャラクター専用に設計されており、カスタムキャラクタータイプとは互換性がありません。
笑いアニメーション
音声で検出された笑いに動的に反応する笑いアニメーションも追加できます:
Blend Runtime MetaHuman Laughter
ノードを追加しますRuntimeVisemeGenerator
変数をViseme Generator
ピンに接続します- 既にリップシンクを使用している場合:
Blend Runtime MetaHuman Lip Sync
ノードの出力をBlend Runtime MetaHuman Laughter
ノードのSource Pose
に接続しますBlend Runtime MetaHuman Laughter
ノードの出力をOutput Pose
のResult
ピンに接続します
- リップシンクなしで笑いのみを使用する場合:
- ソースポーズを直接
Blend Runtime MetaHuman Laughter
ノードのSource Pose
に接続します - 出力を
Result
ピンに接続します
- ソースポーズを直接
音声で笑いが検出されると、キャラクターは動的にアニメーションします:
ボディアニメーションとの組み合わせ
既存のボディアニメーションを上書きせずにリップシンクと笑いを適用するには:
- ボディアニメーションと最終出力の間に
Layered blend per bone
ノードを追加します。Use Attached Parent
を true に設定してください。 - レイヤー設定を構成します:
Layer Setup
配列に 1 アイテム を追加- レイヤーの
Branch Filters
に 3 アイテム を追加し、以下のBone Name
を設定:FACIAL_C_FacialRoot
FACIAL_C_Neck2Root
FACIAL_C_Neck1Root
- 接続を行います:
- 既存のアニメーション(例:
BodyPose
)→Base Pose
入力 - フェイシャルアニメーション出力(Lip Sync や laughter ノードからの出力)→
Blend Poses 0
入力 - Layered blend ノード → 最終的な
Result
ポーズ
- 既存のアニメーション(例:
この方法が有効な理由: ブランチフィルターがフェイシャルアニメーションのボーンを分離し、Lip Sync と laughter がフェイシャルムーブメントのみとブレンドされるようにしながら、元のボディアニメーションを保持します。これは MetaHuman フェイシャルリグ構造にマッチし、自然な統合を実現します。
注: Lip Sync と laughter 機能は既存のアニメーションセットアップと非破壊的に連携するように設計されています。これらは口の動きに必要な特定のフェイシャルボーンのみに影響を与え、他のフェイシャルアニメーションはそのまま残ります。つまり、アニメーションチェーンの任意の時点で安全に統合できます - 他のフェイシャルアニメーションの前(それらのアニメーションが Lip Sync/laughter を上書きできるように)または後(Lip Sync/laughter が既存アニメーションの上にブレンドされるように)に配置可能です。この柔軟性により、Lip Sync と laughter を、まばたき、眉の動き、感情表現、その他のフェイシャルアニメーションと競合なく組み合わせることができます。
設定
Lip Sync 設定
- Standard (Faster) Model
- Realistic (Higher Quality) Model
Blend Runtime MetaHuman Lip Sync
ノードにはプロパティパネルで設定可能なオプションがあり ます:
プロパティ | デフォルト | 説明 |
---|---|---|
Interpolation Speed | 25 | ビジーム間の口の動きの遷移速度を制御します。値が高いほど、より速く急激な遷移になります。 |
Reset Time | 0.2 | Lip Sync がリセットされるまでの時間(秒)。音声が停止した後も Lip Sync が継続するのを防ぐのに便利です。 |
Blend Realistic MetaHuman Lip Sync
ノードにはプロパティパネルで設定可能なオプションがあります:
プロパティ | デフォルト | 説明 |
---|---|---|
Interpolation Speed | 30 | 口の位置間の遷移速度を制御します。値が高いほど、より速く急激な遷移になります。 |
Reset Time | 0.2 | Lip 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、モバイル | シネマティック体験、クローズアップキャラクターインタラクション |
エンジンバージョン互換性
Unreal Engine 5.2を使用している場合、UEのリサンプリングライブラリのバグにより、リアリスティックモデルが正しく動作しない可能性があります。UE 5.2ユーザーで信頼性の高いLip Sync機能が必要な場合は、代わりにスタンダードモデルを使用してください。
この問題はUE 5.2に固有であり、他のエンジンバージョンには影響しません。
ほとんどのプロジェクトでは、スタンダードモデルが品質とパフォーマンスの優れたバランスを提供し、最も広範なキャラクタータイプをサポートします。リアリスティックモデルは、パフォーマンスオーバーヘッドが重要でない状況で、MetaHumanキャラクター向けに最高の視覚的忠実度が必要な場合に最適です。