Dialogue Voice と Dialogue Wave を使用する

様々なリスナー向けおよびダイアログのコンテキストで、ダイアログを設定する例です。

Windows
MacOS
Linux

前提条件

本ページは以下のトピックを既に理解していることを前提にしています。クイック スタートに進む前に以下のトピックについて確認してください。

この例では、基本的なダイアログのセットアップについて説明します。長めの会話では、会話マネージャ システムが必要になるかもしれません。ここのシナリオでは、Quest NPC と プレイ可能なキャラクター 2 体をセットアップし、Dialogue Voice と Dialogue Wave を使って、クエストを与える側のトーンを相手に合わせて調整する方法を説明します。

QuestGiver.png

Adam.png

Zoe.png

Quest NPC

Adam

Zoe

今回の例のデザイン ドキュメントを簡単に示すとこのようになります。

- Quest NPC は女性戦士。補給護衛任務支援員を Adam のチームから雇いたいと考えている。
    - Adam は傭兵。まず隠れて必要な時だけ攻撃するのが彼のポリシー。
    - Zoe は元軍人。直近の大戦闘である Galactic Skirmish 後に Adam のチームに参加。

1 - ダイアログの音声の作成

この例では、アンリアル エンジンのマーケットプレイスから無料で入手できる Mixamo Animation Pack のキャラクターを使います。Mixamo Animation Pack では、すべてのキャラクターは一般的なキャラクター ブループリントから継承しています。以下が手順です。自分独自のプロジェクト、あるいは C++ 設定で作業する場合は調整の必要がありますが、主要な概念は同じです。

各キャラクターには、Dialogue Voice 変数の独自の値があります。オーディオ コンテンツのローカライズを行わなくても、声優の声を録音してキャラクターの声に関連付けてることで、Zoe は常にその声優の声になります。

  1. コンテンツ ブラウザ「MixamoAnimPack」 フォルダで MixamoCharacter_Master 上で ダブルクリック してブループリントを開きます。

    MixamoMaster.png

  2. 新しい 変数 をブループリントに追加します。

    NewVariable.png

  3. 新しい変数に 「DialogueVoice」 と名前を付けて、そのタイプを DialogueVoice Reference に設定します。

    DialogueVoiceRef.png

  4. ブループリントをコンパイルし、保存します。Dialogue Voice アセットを作成し、3 人のキャラクターのそれぞれで使用するようにします。

  5. コンテンツ ブラウザ に戻り、[Dialogue Voice (ダイアログ ボイス)] アセットを新規作成します。

    DialogueVoiceNew.png

  6. 新しいアセットに「QuestNPC」と名前を付けます。次にそれを ダブルクリック して開きます。

  7. デザイン ドキュメントでは、クエストの NPC の声が Feminine (女性)Singular (単数) であることがわかっています。ドロップダウン メニューを使って Gender (性別)Plurality (複数) を適宜設定します。

    QuestNPC.png

  8. あと 2 回プロセスを繰り返し、 Adam 用に Masculine (男性) かつ Singular (単数)Dialogue Voice アセットを作成します。さらに Zoe 用に Feminine (女性)Singular (単数)Dialogue Voice アセットを作成します。

  1. 新規に作成したすべての Dialogue Voice アセットを保存して閉じます。

それでは作成した Dialogue Voices をキャラクターに関連付けます。

  1. コンテンツ ブラウザ に戻り、Mixamo_SWAT フォルダで、Mixamo_SWAT ブループリントを開きます。

    MixamoSWAT.png

  2. ブループリントがデータのみのものではなく、デフォルトが可視でない場合、ツールバークラスのデフォルト をクリックして、ブループリントのデフォルトのプロパティを開きます。

    ClassDefaults.png

  3. [Details] パネルの Dialogue VoiceQuest NPC に設定します。

    DialogueVoiceSetSwat.png

  4. このプロセスを繰り返し、Mixamo_Adam ブループリントの Dialogue VoiceAdam に設定し、Mixamo_Zoe ブループリントの Dialogue VoiceZoe に設定します。

    AdamVoiceSet.png ZoeVoiceSet.png

Dialogue Voice キャラクターを特定するために以下を行います。

  1. ワールドにキャラクターを配置し、ビューポートに入れます。

  2. コンテンツ ブラウザDialogue Voice アセット上で右クリック します。

  3. [Asset Actions]>> [Capture Thumbnail] の順に選択します。
    ThumbnailCapture.png

2 - Dialogue Waves をビルドする

このサンプルでは、Quest NPC から Adam と Zoe にあいさつをします。複雑なダイアログに関する情報は「次のステップ:サウンド キューとダイアログ」をご参照ください。ダイアログの各行は、それに関連付けられた Dialogue Wave アセットが必要です。

  1. コンテンツ ブラウザ に戻り、[Dialogue Wave] を新規作成します。

    DialogueWaveNew.png

  2. 新しいアセットに QuestGreeting と名前を付けます。次にそれを ダブルクリック して開きます。

  3. Spoken Text に、「 "Hey!Could you come over here?I need your help with something important."」と入力します。NPC が Adam や Zoe に話しかけるときに同じテキストが話されますが、このゲームのデザイン ドキュメントでは、各リスナーに向けての話し方が異なるであろうことが示唆されています。2 種類の Dialogue Context をセットアップする必要があるという意味です。

  4. デフォルトでひとつのコンテキストが既に作成されています。Speaker エントリに、Quest NPC を入力します。

    Context1Speaker.png

  5. [+] 記号をクリックして、リスナーを追加します。

    Context1ListenerAdd.png

  6. Directed At エントリを Adam に設定します。

    Context1Listener.png

  7. [Add Dialogue Context] をクリックして、[Dialogue Context] を新たに追加します。

    AddDialogueContext.png

  8. このコンテキストの SpeakerQuest NPC に、Directed AtZoe に設定します。

    ZoeContext.png

Zoe に対しては共通の軍隊の経歴があるため、フレンドリーに話しかけるようにし、Adam に対しては傭兵の過去があるため信頼できないとして、乱暴に話しかけるように声優に指示を用意することもできます。こうしたことは、声優監督 分野の仕事です。最後に、声優の録音後に、これを Sound Waves (音声波形) としてインポートし、各コンテキストの Sound Wave 入力フィールドに設定します。この例では、Sound Waves を作成しませんが、テストのために Starter Content から Sound Waves を使用することができます。

GreetingAudio.png

Dialogue Wave でも Subtitle Override を設定できます。これは、キャラクターがプレイヤーがわからない外国語で話しかける場合などに便利です。

これで、Dialogue VoicesDialogue Wave がセットアップされました。クエストの NPC に何らかのロジックを与えて、あいさつに適切なコンテキストを作成します。Dialogue Context には、少なくとも 2 つの Dialogue Voice、 ひとりの Speaker およびダイアログが Directed At される少なくとも 1 つの Dialogue Voice があります。

  1. Box コンポーネントを Mixamo_SWAT ブループリントに追加します。

    AddBoxComponent.png

  2. ビューポートBox コンポーネントを調整し、キャラクターの高さぐらいになるようにし、彼女の前の距離を延ばします。彼女にオーバーラップしないようにするか、彼女の Capsule コンポーネントをoverlap event を生成しないように設定します。そうしないと、彼女が自分で会話ロジックをトリガーしてしまいます。

    TriggerVolume.png

  3. Greeting という名前の新規 Dialogue Wave 変数を追加します。

  4. ブループリントをコンパイルし、以前作成した QuestGreetingDialogue Wave にデフォルト値を設定します。

    QuestGreetingDetails.png

  5. 以下のブループリント グラフを設定することができます。

    このグラフは以下を行います。

    • 何かが Box コンポーネントにオーバーラップした後、アクティベートします。

    • Overlapping ActorDialogue Voice 変数を追加した MixamoCharacter_Master にキャストします。

    • Overlapping Actor からの音声を取得し、それを Dialogue ContextTarget として使用します。

    • Dialogue ContextSpeaker に Quest NPC の声を使用します。

    • Quest NPC の位置にある 「Greeting」 という名前の Dialogue Wave を正しい Dialogue Context を使って再生します。Mixamo Animation パックには、ダイアログのセットアップをテストするための Game Mode があります。

  6. [World Settings] を開きます。

  7. GameMode OverrideMixamoGame に設定します。

  8. Default Pawn ClassMixamo_Adam または Mixamo_Zoe に設定します。
    SetDefaultPawn.png
    QuestNPC をレベルに配置すると、Adam または Zoe でそれらに向かい、ダイアログをトリガーすることができます。

4 - 字幕を表示する

字幕はデフォルトで有効になりますが、オンになっているかをチェックする必要があれば、[Project Settings (プロジェクト設定)] にチェックボックスがあります。

  1. [Project Settings] を開きます。

  2. [General Settings (一般設定)][Subtitles (字幕)] セクションを探して、[Subtitles Enabled (字幕を有効にする)] ボックスにチェックを入れるようにします。

    SubtitlesOn.png

Quest NPC のダイアログをトリガーする場合、付随する字幕テキストが画面下部に表示されます。

SubtitlesPlaying.png

現在起こっているコンテキストの [Dialogue Wave]Sound Wave セットが、入っていない限り、字幕は表示されません。

5 - 次のステップ:サウンド キューとダイアログ

複雑な会話では、Sound Cue コンポーネントと Audio コンポーネントを使用することになるでしょう。Audio コンポーネントによって、On Audio Finished デリゲートを使って、オーディオの再生が終わったときに機能をバインドすることができます。

ただし、Sound Cue を使う場合は、Dialogue Context を動的に変更できないことに注意してください。そのため、ブループリントまたは C++ のロジックは上記の例とは異なります。

Sound Cue を使って Dialogue Waves を再生するために、Sound Cue EditorDialogue Player ノードがあります。

DialoguePlayerNode.png

Dialogue Player ノードを選択し、[Details] パネルを見ます。以下で使用する Dialogue Wave を設定し、Context に対する SpeakerDirected At のエントリを設定することができます。

DialogueNodeDetails.png

以下は、前のオーディオの再生終了後に次のダイアログの部分を再生するためにイベントをバインドする方法を示したブループリントのロジック例です。

AudioNextSteps.png

Select Skin
Light
Dark

新しい Unreal Engine 4 ドキュメントサイトへようこそ!

あなたの声を私たちに伝えるフィードバックシステムを含め、様々な新機能について開発をおこなっています。まだ広く使える状態にはなっていないので、準備ができるまでは、ドキュメントフィードバックフォーラムで、このページについて、もしくは遭遇した問題について教えていただけると助かります。

新しいシステムが稼働した際にお知らせします。

フィードバックを送信