このチュートリアルでは、MetaHuman をインゲームのキャラクターとして使用して、Unreal Engine で基本的なダイアログ設定を作成する方法について説明します。Dialogue Voice と Dialogue Wave を使用して、話している相手に応じてキャラクターのトーンを調整する方法についても説明します。
長めの会話では、会話マネージャー システムの作成が必要になる場合があります。
必要な知識と設定
このページでは、Unreal Engine の アニメーション ブループリント の基本的な知識があることを前提としています。
このページで説明する手順を実行するには、サードパーソン テンプレート をベースとして使用して新しい Unreal Engine プロジェクトを作成します。
MetaHuman をダウンロードおよびエクスポートする
Quixel Bridge を開いて、3 つの MetaHuman をダウンロードします。このチュートリアルでは、Ada、Cooper および Hana プリセットを使用します。同時に複数の MetaHuman をダウンロードすることができます。
ローカル マシンにダウンロードした後で、MetaHuman をプロジェクトにインポートします。
ダウンロードした MetaHuman ファイルは、コンテンツ ブラウザ 内の「MetaHumans > [MetaHumanName]」フォルダにあります。たとえば、Ada の場所は、「MetaHumans > Ada」になります。
この手順の実行方法については、「MetaHuman の使用を開始する」のページを参照してください。
MetaHuman をアニメーション化する
MetaHuman を正常にインポートした後、インゲーム キャラクターとして使用するためにこれを設定できます。「ランタイム時にアニメーションをリターゲティングする」のガイドに従って、ランタイム時に UE5 マネキンから MetaHuman キャラクターにアニメーションをリターゲティングする方法を説明します。
ガイドの完了後、レベルでプレイアブル キャラクターとして使用できる、制御可能なブループリントを MetaHuman ごとに使用できます。
画像をクリックするとフルサイズで表示されます。
MetaHuman のアニメーション化の詳細については、ドキュメントの「MetaHuman をアニメーション化する」のセクションを参照してください。このセクションには、アニメーション ブループリントとアセットの作成、アニメーションのリターゲティング、コントロール リグの使用とフェイシャル リグの使用についてのガイドが記載されています。
Dialogue Voice を作成する
このチュートリアルでは、Ada は Quest NPC であり、Cooper と Hana はプレイアブル キャラクターです。
今回の例のデザイン ドキュメントを簡単に示すとこのようになります。
Cooper は、直接対決よりもステルスの方を好む傭兵。
Hana は元軍人。直近の大戦闘である Galactic Skirmish 後に Cooper のチームに参加。
Ada は戦士。補給護衛任務支援員を Cooper のチームから雇いたいと考えている。
|
|
|
---|---|---|
Ada (Quest NPC) |
Cooper |
Hana |
最初に、Dialogue Voice 変数を各 MetaHuman キャラクターに追加する必要があります。コンテンツ ブラウザ で、前のセクションで作成した Ada のブループリントをダブルクリックします。この例では、ブループリント名は「BP_AdaCharacter」です。
[Add (追加) (+)] ボタンをクリックして、新しい 変数 を追加します。
新しい変数に「DialogueVoice」と名前を付けて、そのタイプを DialogueVoice Object Reference に設定します。ブループリントをコンパイルして保存します。他のキャラクターのブループリントに対してプロセスを繰り返します。
各キャラクターに使用する Dialogue Voice アセットを作成します。コンテンツ ブラウザ で右クリックし、[Sounds (サウンド)] > [Dialogue (ダイアログ)] > [Dialogue Voice] を選択します。
新しいアセットに「Ada」と名前を付け、ダブルクリックして開きます。
デザイン ドキュメントを参照して、Ada の音声は 女性 で 単数 です。ドロップダウンをクリックして、適宜 [Gender (性別)] と [Plurality (複数)] を設定します。
あと 2 回プロセスを繰り返し、Cooper 用に Masculine (男性) かつ Singular (単数) の Dialogue Voice アセットを作成します。さらに Hana 用に Feminine (女性) で Singular (単数) の Dialogue Voice アセットを作成します。
すべての Dialogue Voice アセットを保存して閉じます。
Dialogue Voice アセットを各 MetaHuman に関連付けます。
BP_AdaCharacter ブループリントに切り替えます。DialogueVoice 変数を選択し、[Details (詳細)] パネルに移動します。Dialogue Voice プロパティを Ada に設定します。
プロセスを繰り返して、Dialogue Voice プロパティを Cooper と Hana に設定します。
(オプション) カスタム サムネイルを各 Dialogue Voice アセットに追加します。
ワールドにキャラクターを配置して、ビューポートでフレーム化します。コンテンツ ブラウザ の Dialogue Voice アセットを右クリックします。[Asset Actions] > [Capture Thumbnail] の順に選択します。これにより、MetaHuman が各 Dialogue Voice アセットのサムネイルに追加されます。
Dialogue Waves をビルドする
この例では、Ada が Cooper と Hana にあいさつします。ダイアログの各行では、これに関連付けられた Dialogue Wave アセットが必要です。
コンテンツ ブラウザ で右クリックし、[Sounds (サウンド)] > [Dialogue (ダイアログ)] > [Dialogue Wave] を選択して、新しい Dialogue Wave を作成します。
新しいアセットに「QuestGreeting」と名前を付け、ダブルクリックして開きます。
Spoken Text に、「Hey!Could you come over here?I need your help with something important.」と入力します。Ada が Cooper と Hana に話しかけているテキストは同じものですが、ゲーム デザイン ドキュメントには、テキストの話し方がリスナーごとに異なるようにするためのヒントが記載されています。これは、2 種類の Dialogue Context をセットアップする必要があるという意味です。
デフォルトでひとつのコンテキストがすでに作成されています。Speaker エントリに、Ada を入力します。[追加 (+)] ボタンをクリックして新しいリスナーを追加します。Directed At プロパティを Cooper に設定します。
[Add Dialogue Context (Dialogue Context の追加)] をクリックして、[Dialogue Context] を新たに追加します。
このコンテキストの Speaker を Ada に、Directed At を Hana に設定します。
Hana に対しては共通の軍隊の経歴があるため、フレンドリーに話しかけるようにし、Cooper に対しては傭兵の過去があるため信頼できないとして、乱暴に話しかけるように声優に指示を用意することもできます。このような指示を [Voice Actor Direction (声優への指示)] フィールドに入力します。
最後に、声優の録音後に、これを Sound Waves (音声波形) としてインポートし、各コンテキストの [Sound Wave] フィールドに設定します。Sound Waves を新たに作成することも、テストのために Starter Content から Sound Waves を使用することができます。
Dialogue Wave でも Subtitle Override を設定できます。これは、プレイヤーがわからない外国語でキャラクターが話しかける場合などに便利です。
コンテキストを設定する
これで、Dialogue Voices と Dialogue Wave がセットアップされました。Ada のブループリントに何らかのロジックを与えて、あいさつに適切なコンテキストを作成します。
Dialogue Context には、少なくとも 2 つの Dialogue Voice、ひとりの Speaker およびダイアログが Directed At である Dialogue Voice が少なくとも 1 つあります。
Box コンポーネントを BP_AdaCharacter ブループリントに追加します。
ビューポート で Box コンポーネントを 調整 し、キャラクターの高さぐらいになるようにし、彼女の前の距離を延ばします。彼女にオーバーラップしないようにします。そうしないと、彼女が自分で会話ロジックをトリガーしてしまいます。
Greeting という名前の新規 Dialogue Wave 変数を追加します。
ブループリントをコンパイルし、以前作成した QuestGreeting Dialogue Wave に Greeting の デフォルト値 を設定します。
以下のブループリント グラフを設定します。
画像をクリックするとフルサイズで表示されます。
このグラフは以下を行います。
何かが Box コンポーネントにオーバーラップした後、実行します。
Dialogue Voice 変数を追加した BP_HanaCharacter と BP_CooperCharacter に Overlapping Actor をキャストします。
Overlapping Actor からの音声を取得し、それを Dialogue Context の Target として使用します。
Dialogue Context の Speaker に Ada の声を使用します。
正しい Dialogue Context を使って Ada の場所で Greeting という名前の Dialogue Wave を再生します。
上記のブループリントのグラフは例を示す目的でのみ使用され、ベスト プラクティスではありません。ブループリント インターフェース または アクタ通信 の別の方法を使用して、この機能を実行することをお勧めします。
[World Settings (ワールド設定)] を開き、[Game Mode (ゲーム モード)] セクションの Selected GameMode オプションを展開します。Default Pawn Class を BP_CooperCharacter または BP_HanaCharacter に設定します。
Quest NPC をレベルに配置すると、Cooper または Hana でそれらに向かい、ダイアログをトリガーすることができます。
字幕を有効にする
字幕はデフォルトで有効になっていますが、これを確認する必要がある場合、次の手順を実行します。
[Settings (設定)] > [Project Settings (プロジェクト設定)] をクリックして [Project Settings] を開きます。
[General Settings (一般設定)] で [Subtitles (字幕)] セクションを探して、[Subtitles Enabled (字幕を有効にする)] チェックボックスを オン にします。
Quest NPC のダイアログをトリガーする場合、付随する字幕テキストが画面下部に表示されます。
現在起こっているコンテキストの [Dialogue Wave] に Sound Wave セットが、入っていない限り、字幕は表示されません。