プラグインの使用方法
このガイ ドでは、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 音素システム
- 表情用のカスタムモーフターゲットを持つ任意のキャラクター
上記のすべての標準に対するビセームマッピングのリファレンスを含む、カスタムキャラクターのセットアップに関する詳細な手順については、カスタムキャラクターセットアップガイド を参照してください。
前提条件
開始する前に、以下を確認してください:
- MetaHuman プラグインがプロジェクトで有効になっていること (注: UE 5.6 以降では、MetaHuman 機能がエンジンに直接統合されているため、このステップは不要です)
- 少なくとも 1 つの MetaHuman キャラクターがダウンロードされ、プロジェクトで利用可能であること
- Runtime MetaHuman Lip Sync プラグインがインストールされていること
標準モデル拡張プラグイン
標準(高速)モデルを使用する予定がある場合は、拡張プラグインをインストールする必要があります:
- Google Drive から 標準リップシンク拡張プラグイン をダウンロードします
- ダウンロードしたアーカイブからフォルダを抽出し、プロジェクトの
Plugins
フォルダに配置します (このフォルダが存在しない場合は作成してください) - プロジェクトが C++ プロジェクトとして設定されていることを確認します (C++ コードがなくても)
- プロジェクトをリビルドします
- この拡張は、標準モデルを使用したい場合にのみ必要です。リアリスティックモデルのみが必要な場合は、このステップをスキップできます。
- プラグインを手動でビルドする方法の詳細については、プラグインビルドチュートリアル を参照してください
追加プラグイン
- オーディオキャプチャ(例:マイク入力)を使用する予定がある場合は、Runtime Audio Importer プラグインをインストールしてください。
- 私のプラグインでテキスト読み上げ機能を使用する予定がある場合(独自のカスタム TTS や他のオーディオ入力がある場合)、Runtime Audio Importer プラグインに加えて、以下もインストールしてください:
- ローカル TTS の場合は、Runtime Text To Speech プラグイン。
- 外部 TTS プロバイダー(ElevenLabs、OpenAI)の場合は、Runtime AI Chatbot Integrator プラグイン。
セットアップ手順
ステップ 1: フェイスアニメーションのブループリントを特定して変更する
- UE 5.5 およびそれ以前(または UE 5.6+ のレガシー MetaHumans)
- UE 5.6+ MetaHuman Creator キャラクター
MetaHuman キャラクターの顔のアニメーションに使用するアニメーションブループリントを変更する必要があります。デフォルトの MetaHuman フェイスアニメーションブループリントは、以下の場所にあります:
Content/MetaHumans/Common/Face/Face_AnimBP
リップシンク機能を実装するにはいくつかの選択肢があります:
- デフォルトアセットを直接編集(最もシンプルな選択肢)
- 複製を作成
- カスタム Animation Blueprint を使用
デフォルトの Face_AnimBP
を直接開き、変更を加えます。変更はこの Animation Blueprint を使用するすべての MetaHuman キャラクターに影響します。
注意: このアプローチは便利ですが、デフォルトの Animation Blueprint を使用するすべてのキャラクターに影響を与えます。
Face_AnimBP
を複製し、わかりやすい名前を付けます- キャラクターの Blueprint クラスを探します(例:キャラクター「Bryan」の場合、
Content/MetaHumans/Bryan/BP_Bryan
にあります) - キャラクター Blueprint を開き、Face コンポーネントを見つけます
- Anim Class プロパティを新しく複製した Animation Blueprint に変更します
注意: このアプローチでは、特定のキャラクターのリップシンクをカスタマイズしながら、他のキャラクターは変更しないままにすることができます。
必要な顔のボーンにアクセスできる任意の Animation Blueprint でリップシンクのブレンディングを実装できます:
- カスタム Animation Blueprint を作成するか、既存のものを使用します
- あなたの Animation Blueprint が、デフォルトの MetaHuman の
Face_Archetype_Skeleton
(あらゆる MetaHuman キャラクターで使用される標準スケルトン)と同じ顔のボーンを含むスケルトンで動作することを確認します
注意: このアプローチは、カスタムアニメーションシステムとの統合において最大限の柔軟性を提供します。
UE 5.6 以降、新しい MetaHuman Creator システムが導入され、従来の Face_AnimBP
アセットなしでキャラクターが作成されるようになりました。これらのキャラクターについては、プラグインが以下の場所に顔の Animation Blueprint を提供します:
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負荷を軽減しますが、リップシンクの応答性が低下する可能性があります
処理チャンクサイズを設定するには:
Realistic MetaHuman Lip Sync Generator
オブジェクトにアクセスしますProcessing Chunk Size
プロパティを見つけます- 希望の値を設定します
160の倍数 の値を使用することを推奨します。これはモデルの内部処理構造と整合します。推奨値には以下が含まれます:
160
(デフォルト、最小推奨値)320
480
640
- など
デフォルトの処理チャンクサイズである 160
サンプルは、16kHzでの10msのオーディオに相当します。160の倍数を使用することで、この基本単位との整合性が維持され、処理効率の最適化と異なるチャンクサイズ間での一貫した動作の維持に役立ちます。
Realistic Modelの信頼性と一貫性のある操作のために、非アクティブ期間後に新しいオーディオデータを供給したい場合は、必ず Realistic MetaHuman Lip Sync Generatorを再作成する必要があります。これは、ONNXランタイムの動作により、沈黙期間後にジェネレーターを再利用するとリップシンクが機能しなくなる可能性があるためです。
例となるシナリオ: TTSリップシンクを実行して停止した後、後で新しいオーディオで再度リップシンクを実行したい場合は、既存のものを再利用するのではなく、新しいRealistic MetaHuman Lip Sync Generatorを作成してください。
ステップ3: オーディオ入力処理の設定
オーディオ入力を処理する方法を設定する必要があります。オーディオソースに応じて、いくつかの方法があります。
- マイク (リアルタイム)
- マイク (再生)
- Text-to-Speech (Local)
- Text-to-Speech (External APIs)
- オーディオファイル/バッファから
- ストリーミングオーディオバッファ
このアプローチでは、マイクに向かって話しながらリアルタイムでリップシンクを実行します:
- スタンダード (高速) モデル
- リアリスティック (高品質) モデル
- Runtime Audio Importer を使用して Capturable Sound Wave を作成します
- オーディオキャプチャを開始する前に、
OnPopulateAudioData
デリゲートにバインドします - バインドされた関数内で、Runtime Viseme Generator から
ProcessAudioData
を呼び出します - マイクからのオーディオキャプチャを開始します
リアリスティックモデルは、スタンダードモデルと同じオーディオ処理ワークフローを 使用しますが、VisemeGenerator
の代わりに RealisticLipSyncGenerator
変数を使用します。
スタンダードモデルで示されている各例では、単純に以下を置き換えてください:
VisemeGenerator
をRealisticLipSyncGenerator
変数に- 関数名とパラメータは両モデル間で同一のままです
このアプローチでは、マイクからオーディオをキャプチャし、その後リップシンク付きで再生します:
- スタンダード (高速) モデル
- Realistic (Higher Quality) Model
- Runtime Audio Importer を使用して Capturable Sound Wave を作成します
- マイクからのオーディオキャプチャを開始します
- キャプチャ可能なサウンドウェーブを再生する前に、その
OnGeneratePCMData
デリゲートにバインドします - バインドされた関数内で、Runtime Viseme Generator から
ProcessAudioData
を呼び出します
Realistic Modelは、Standard Modelと同じオーディオ処理ワークフローを使用しますが、VisemeGenerator
の代わりにRealisticLipSyncGenerator
変数を使用します。
Standard Modelで示された各例では、単純に以下を置き換えてください:
VisemeGenerator
をあなたのRealisticLipSyncGenerator
変数に- 関数名とパラメータは両モデル間で同一のままです
注記: より応答性の高いリップシンクのためにオーディオデータを小さなチャンクで処理したい場合は、SetNumSamplesPerChunk
関数の計算を調整してください。例えば、サンプルレートを100で割る(10ミリ秒ごとにストリーミング)代わりに150で割る(約6.67ミリ秒ごとにストリーミング )ことで、より頻繁なリップシンクの更新が提供されます。
- Regular
- Streaming
このアプローチはテキストから音声を合成し、リップシンクを実行します:
- 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モデルを使用してください。
注記: より応答性の高いリップシンクのためにオーディオデータを小さなチャンクで処理したい場合は、SetNumSamplesPerChunk
関数の計算を調整してください。例えば、サンプルレートを100で割る(10ミリ秒ごとにストリーミング)代わりに150で割る(約6.67ミリ秒ごとにストリーミング)ことで、より頻繁なリップシンクの更新が提供されます。
このアプローチでは、ストリーミング音声合成とリアルタイムのリップシンクを使用します:
- 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 モデルを使用してください。
注記: より応答性の高いリップシンクのために、より小さなチャンクでオーディオデータを処理したい場合は、SetNumSamplesPerChunk
関数内の計算を調整してください。例えば、サンプルレートを100(10ミリ秒ごとのストリーミング)ではなく150(約6.67ミリ秒ごとのストリーミング)で割ると、より頻繁なリップシンクの更新が提供されます。
- Regular
- Streaming
このアプローチでは、Runtime AI Chatbot Integrator プラグインを使用して、AIサービス(OpenAIやElevenLabs)から合成音声を生成し、リップシンクを実行します:
- Standard (Faster) Model
- Realistic (Higher Quality) Model
- Runtime AI Chatbot Integrator を使用して、外部API(OpenAI、ElevenLabsなど)からテキストで音声を生成します
- Runtime Audio Importer を使用して合成されたオーディオデータをインポートします
- インポートされたサウンドウェーブの再生前に、その
OnGeneratePCMData
デリゲートにバインドします - バインドされた関数内で、Runtime Viseme Generator の
ProcessAudioData
を呼び出します

Realistic ModelはStandard Modelと同じオーディオ処理ワークフローを使用しますが、VisemeGenerator
の代わりにRealisticLipSyncGenerator
変数を使用します。
Standard Modelで示された各例では、単純に以下を置き換えてください:
VisemeGenerator
をあなたのRealisticLipSyncGenerator
変数に- 関数名とパラメータは両モデル間で同一のままです
注記: より応答性の高いLip Syncのためにオーディオデータを小さなチャンクで処理したい場合は、SetNumSamplesPerChunk
関数の計算を調整してください。例えば、サンプルレートを100で割る(10msごとにストリーミング)代わりに150で割る(約6.67msごとにストリーミング)ことで、より頻繁なLip Syncの更新が提供されます。
このアプローチでは、Runtime AI Chatbot Integratorプラグインを使用してAIサービス(OpenAIまたはElevenLabs)から合成されたストリーミング音声を生成し、Lip Syncを実行します:
- Standard (Faster) Model
- Realistic (Higher Quality) Model
- Runtime AI Chatbot Integratorを使用してストリーミングTTS API(ElevenLabs Streaming APIなど)に接続
- Runtime Audio Importerを使用して合成されたオーディオデータをインポート
- ストリーミングサウンドウェーブの再生前に、その
OnGeneratePCMData
デリゲ ートにバインド - バインドされた関数内で、Runtime Viseme Generatorから
ProcessAudioData
を呼び出し
Realistic ModelはStandard Modelと同じオーディオ処理ワークフローを使用しますが、VisemeGenerator
の代わりにRealisticLipSyncGenerator
変数を使用します。
Standard Modelで示された各例では、単純に以下を置き換えてください:
VisemeGenerator
をあなたのRealisticLipSyncGenerator
変数に- 関数名とパラメータは両モデル間で同一のままです
注記: より応答性の高いリップシンクのためにオーディオデータを小さなチャンクで処理したい場合は、SetNumSamplesPerChunk
関数内の計算を調整してください。例えば、サンプルレートを100(10ミリ秒ごとにストリーミング)で割る代わりに150(約6.67ミリ秒ごとにストリーミング)で割ると、より頻繁なリップシンクの更新が提供されます。
このアプローチでは、事前に録音されたオーディオファイルまたはオーディオバッファをリップシンクに使用します:
- 標準(高速)モデル
- リアリスティック(高品質)モデル
- Runtime Audio Importerを使用して、ディスクまたはメモリからオーディオファイルをインポートします
- インポートされたサウンドウェーブを再生する前に、その
OnGeneratePCMData
デリゲートにバインドします - バインドされた関数内で、Runtime Viseme Generatorから
ProcessAudioData
を呼び出します - インポートされたサウンドウェーブを再生し、リップシンクアニメーションを観察します
リアリスティックモデルは、標準モデルと同じオーディオ処理ワークフローを使用し ますが、VisemeGenerator
変数の代わりにRealisticLipSyncGenerator
を使用します。
標準モデルで示されている各例では、単純に以下を置き換えてください:
VisemeGenerator
をあなたのRealisticLipSyncGenerator
変数で- 関数名とパラメータは両モデル間で同一のままです
注記: より応答性の高いリップシンクのためにオーディオデータを小さなチャンクで処理したい場合は、SetNumSamplesPerChunk
関数内の計算を調整してください。例えば、サンプルレートを100(10ミリ秒ごとにストリーミング)で割る代わりに150(約6.67ミリ秒ごとにストリーミング)で割ると、より頻繁なリップシンクの更新が提供されます。
ストリーミングバッファからオーディオデータを処理するには、以下が必要です:
- 標準(高速)モデル
- リアリスティック(高品質)モデル
- ストリーミングソースから利用可能なfloat PCM形式のオーディオデータ(浮動小数点サンプルの配列)
- サンプルレートとチャンネル数
- オーディオチャンクが利用可能になるたびに、Runtime Viseme Generatorの
ProcessAudioData
をこれらのパラメータで呼び出す
ストリーミングオーディオデータからリップシンクを処理する例:
注記: ストリーミングオーディオソースを使用する場合、歪んだ再生を避けるためにオーディオ再生タイミングを適切に管理してください。適切なストリーミングオーディオ管理の詳細については、ストリーミングサウンドウェーブのドキュメントを参照してください。
リアリスティックモデルは標準モデルと同じオーディオ処理ワークフローを使用しますが、VisemeGenerator
の代わりにRealisticLipSyncGenerator
変数を使用します。
標準モデルで示された各例では、単に以下を置き換えてください:
VisemeGenerator
をあなたのRealisticLipSyncGenerator
変数に- 関数名とパラメータは両モデル間で同一です
注記: ストリーミングオーディオソースを使用する場合、歪んだ再生を避けるためにオーディオ再生タイミングを適切に管理してください。適切なストリーミングオーディオ管理の詳細については、ストリーミングサウンドウェーブのドキュメントを参照してください。
注記: より応答性の高いリップシンクのためにオーディオデータを小さなチャンクで処理したい場合は、SetNumSamplesPerChunk
関数の計算を調整してください。例えば、サンプルレートを100で割る(10msごとにストリーミング)代わりに150で割る(約6.67msごとにストリーミング)ことで、より頻繁なリップシンクの更新が提供されます。
ステップ4: アニメーショングラフの設定
イベントグラフの設定後、Anim Graph
に切り替えてジェネレーターをキャラクターのアニメーションに接続します:
リップシンク
- Standard (高速) モデル
- Realistic (高品質) モデル
- 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
ピンに接続します
Realistic モデルは、より自然な口の動きで強化された視覚的品質を提供します:
注意: Realistic モデルは 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
- カスタムのフェイシャルアニメーションにとって重要:
Curve Blend Option
で、"Use Max Value" を選択します。これにより、カスタムのフェイシャルアニメーション(表情、感情など)がリップシンクの上に適切にレイヤリングされます。 - 接続を行います:
- 既存のアニメーション(例:
BodyPose
)→Base Pose
入力 - フェイシャルアニメーション出力(リップシンクや笑いのノードから)→
Blend Poses 0
入力 - Layered blend ノード → 最終的な
Result
ポーズ
- 既存のアニメーション(例:
これが機能する理由: ブランチフィルターはフェイシャルアニメーションのボーンを分離し、リップシンクと笑いが元のボディアニメーションを保持しながら、フェイシャルの動きにのみブレンドされるようにします。"Use Max Value" のカーブブレンドオプションは、カーブを加算的にブレンドするのではなく、各カーブから最大値を取るため、カスタムのフェイシャルアニメーション(表情や感情など)がリップシンクと競合せずに適切に組み合わされます。これは、MetaHuman のフェイシャルリグ構造に合致し、自然な統合を実現します。
注記: リップシンクと笑いの機能は、既存のアニメーション設定を非破壊的に動作するように設計されています。これらは口の動 きに必要な特定のフェイシャルボーンのみに影響し、他のフェイシャルアニメーションはそのまま残ります。つまり、アニメーションチェーンの任意の時点で安全に統合できます - 他のフェイシャルアニメーションの前(それらのアニメーションがリップシンク/笑いを上書きできるように)または後(リップシンク/笑いが既存のアニメーションの上にブレンドされるように)です。この柔軟性により、リップシンクと笑いを、まばたき、眉の動き、感情表現、その他のフェイシャルアニメーションと競合なく組み合わせることができます。
リップシンクの動作の微調整
基本的なリップシンク機能を設定した後、プロジェクトの要件に合わせて口の動きの特定の側面を微調整したい場合があります。
舌の突出制御
標準的なリップシンクモデルでは、特定の音素の発声中に舌が過度に前方に動くことがあります。舌の突出を制御するには:
Blend Runtime MetaHuman Lip Sync
またはBlend Realistic MetaHuman Lip Sync
ノードの後に、Modify Curve
ノードを追加しますModify Curve
ノードを右クリックし、Add Curve Pin を選択しますCTRL_expressions_tongueOut
という名前のカーブピンを追加します- ノードの Apply Mode プロパティを Scale に設定します
- Value パラメータを調整して舌の突出を制御します(例:0.8 で突出を20%減少)
顎の開き制御
リアルなリップシンクは、オーディオの内容や視覚的な要件によっては、顎の動きが過度に反応的になる場合があります。顎の開きの強度を調整するには:
- リップシンクブレンドノードの後に、
Modify Curve
ノードを追加します Modify Curve
ノードを右クリックし、Add Curve Pin を選択しますCTRL_expressions_jawOpen
という名前のカーブピンを追加します- ノードの Apply Mode プロパティを Scale に設定します
- Value パラメータを調整して顎の開き範囲を制御します(例:0.9 で顎の動きを10%減少)
設定
リップシンク設定
- Standard (Faster) Model
- Realistic (Higher Quality) Model
Blend Runtime MetaHuman Lip Sync
ノードには、プロパティパネルに設定オプションがあります:
プロパティ | デフォルト | 説明 |
---|---|---|
Interpolation Speed | 25 | ビセーム間の口の動きの遷移の速さを制御します。値が高いほど、より速く、より急激な遷移になります。 |
Reset Time | 0.2 | リップシンクがリセットされるまでの時間(秒単位)。オーディオが停止した後もリップシンクが継続するのを防ぐのに役立ちます。 |
Blend Realistic MetaHuman Lip Sync
ノードには、プロパティパネルに設定オプションがあります:
プロパティ | デフォルト | 説明 |
---|---|---|
Interpolation Speed | 30 | 位置間の口の動きの遷移の速さを制御します。値が高いほど、より速く、より急激な遷移になります。 |
Reset Time | 0.2 | リップシンクがリセットされるまでの時間(秒単位)。オーディオが停止した後もリップシンクが継続するのを防ぐのに役立ちます。 |
笑いの設定
Blend Runtime MetaHuman Laughter
ノードには独自の設定オプションがあります:
プロパティ | デフォルト | 説明 |
---|---|---|
Interpolation Speed | 25 | 笑いアニメーション間の口の動きの遷移の速さを制御します。値が高いほど、より速く、より急激な遷移になります。 |
Reset Time | 0.2 | 笑いがリセットされるまでの時間(秒単位)。オーディオが停止した後も笑いが継続するのを防ぐのに役立ちます。 |
Max Laughter Weight | 0.7 | 笑いアニメーションの最大強度をスケーリングします(0.0 - 1.0)。 |
リップシンクモデルの選択
プロジェクトで使用するリップシンクモデルを決定する際は、以下の要素を考慮してください:
考慮事項 | スタンダードモデル | リアリスティックモデル |
---|---|---|
キャラクター互換性 | MetaHumansおよび全てのカスタムキャラクタータイプ | MetaHumansのみ |
ビジュアル品質 | 効率的なパフォーマンスを伴う良好なリップシンク | より自然な口の動きによるリアリズムの向上 |
パフォーマンス | モバイル/VRを含む全てのプラットフォーム向けに最適化 | やや高いリソース要件 |
ユースケース | 一般的なアプリケーション、ゲーム、VR/AR、モバイル | 映画的な体験、クローズアップのキャラクターインタラクション |
エンジンバージョン互換性
Unreal Engine 5.2 を使用している場合、UEのリサンプリングライブラリのバグにより、リアリスティックモデルが正しく動作しない可能性があります。信頼性の高いリップシンク機能を必要とする UE 5.2 ユーザーは、代わりに スタンダードモデル を使用してください。
この問題は UE 5.2 に固有のものであり、他のエンジンバージョンには影響しません。
ほとんどのプロジェクトにおいて、スタンダードモデルは、幅広いキャラクタータイプをサポートしながら、品質とパフォーマンスの優れたバランスを提供します。リアリスティックモデルは、パフォーマンスのオーバーヘッドが重要度の低い状況において、MetaHumanキャラクター向けに最高の視覚的忠実度が必要な場合に理想的です。