Wwise 、Unreal Engine 4 、Unity 3Dを使用した足音素材管理

ゲームオーディオ / サウンドデザイン / Wwiseの使い方やツール

サウンドデザイナーはプリプロダクションの早い段階からシステムのプロトタイプを必要としますが、必ずしもオーディオプログラマーに頼れる状況ではありません。

幸い、そのようなときに Wwise をUnreal Engine 4やUnity 3Dなどの最新エンジンと組み合わせると大変便利です。

 

例えばUnreal Engine 4には強力なプログラミング用インターフェースがあり、プログラマーが関与しなくてもサウンドデザイナーだけで様々なことができます。これらの素晴らしいツールを Wwise が提供する豊富な動作設定と組み合わせて活用しない手はありません。

そこでこのチュートリアルでは、地面の素材を検知・管理し、それぞれに合ったフットステップサウンドを再生する方法を説明します

作成の際は以下を使ったので、これらを中心に説明します:

  • Audiokineticの Wwise 2016.1: Switch Group、RTPC、RTPC制御のSwitch、Random Container
  • Unreal Engine 4.12.5: Blueprint、Surface Materials、Physical Materials、 AkEvent Notify、Set Switch、Set RTPC
  • Unity 3D 5.1
  • UnrealストアやUnityストアの無料アセット

 

Wwise

UnrealでもUnityでも、 エンジンで検知された地面のMaterial(素材)に合ったフットステップを再生させるための手順は、まったく同じです。

Game Syncs

  • まずGame SyncsでSwitch Groupを新規作成し、名前を Material とします。
  • このSwitch Groupの下に4つのSwitchを作成し、名前を Concrete 、 Grass 、 TilesWood とします。

 FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D ここで特に注意してほしいのは、 Switch がゲームオブジェクトと連携しているということで、プレイヤーのフットステップに限らず、様々な状況で利用できます。どのゲームオブジェクトを使うかによって値を変えることができ、例えば弾丸のインパクト音や、NPCのフットステップにも活用できます。逆にStateは「グローバル」に影響するので、physical material(物理的な素材)を管理するのには不適切です。 

 

グローバルセットアップ(Audio、Events、Switchのアサイン)

FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

  • (1) Switch Containerを新規作成し、名前を FS_Pawn とします。
  • (2) 次の4つのRandom Containerを、4つのMaterial用に作成します: Walk_Concrete 、 Walk_Grass 、 Walk_Tiles 、 Walk_Wood
  • (3) れらのContainerやMaterialに合わせて、すべてのオーディオファイルをインポートします。
  • (4) Switch Containerをクリックし、先ほど作成したSwitchを設定します:

                                 Group: Material
                                 Default Switch/State: Concrete

FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

  • ここでデフォルト値を設定することで、エンジンが Wwise にないMaterial名を送った場合に、
    デフォルトでConcreteが再生されます(Noneに設定すると、何も再生されません)
  • (5) 次にAssigned Objectsの各Switchに対し、該当するRandom ContainerをContents Editorから(またはProject Explorerから) ドラッグ&ドロップ してアサインします。

FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

 

  • (6)  FS_Pawn というSwitch Containerから、PlayのEventを新規作成し、その名前を Play_FS_Pawn とします。
  • (7) このEventをテストし、MaterialをTransport Controlや Soundcaster Session で切り替えてみてください。

 

Unreal Engine 4

Project Settings

  • (1) Project Settingsを開き、 Engine>Physics>Physical Surface を選択します。
  • (2) 次の4つのSurface Typesを新規作成します(名前は Wwise で作成したものに合わせる): Concrete 、 Grass 、 Wood 、 Tiles

FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

 

Physical Material Settings

  • (1) コンテンツブラウザで4つのPhysical Materialを新規作成し、名前を PM_Concrete 、 PM_Grass 、 PM_TilesPM_Wood とします。

 

FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

 

  • (2) 1つずつ開き、該当するSurface Typeをアサインします。

FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

 

Material Settings

  • あなたのマップにあるMaterialを1つずつ開き、それぞれに適切なPhysical Materialを、次のものから設定します: PM_Concrete 、 PM_Grass 、 PM_Tiles 、 PM_Wood

FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

 

  • Mapの概要

FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

 

Animation Sequence

  • Animation Sequenceを開きます。ここで、 AkEvent のフットステップをトリガーします。

FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

  • (1) Add notifyで、タイムラインの適切なポジションに AkEvent を追加します。
  • (2) Anim Notifyで、Wwise プロジェクトで作成した Wwise の AkEvent である Play_FS_Pawn を選択します。

この時点でアニメーションを再生してみると、デフォルトSwitchのConcreteのフットステップ音が聞こえます。


 

Blueprintの設定

  • このBlueprintで、Unrealはポーンが歩く地面のMaterialを察知し、正しいSwitchを Wwise に送ります。
  • コンテンツブラウザでBlueprint Class(Actor Component Class)を新規作成し、このBlueprintの名前を BP_Wwise_Footsteps とします。

FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

 

  • このBlueprintを開き、スクリプト作業を進めます。完成すると、このようになるはずです!

FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

 

スクリプトのブロックごとに詳しく見ていきます:

  • (1) このBlueprintはtickベースで、プレイヤーポーンの場所を把握しています。
FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D
  • (2) LineTraceByChannel ボックスは基本的にstartからendまでのインプットで作成されるレイのトレーシング機能(ray-trace)です(Z値は、あなたのポーンに合わせて調整してください)。ゲーム中にray-traceを表示させるには、Draw Debug TypeをFor One Frameに設定します。ポーンの下の地面に赤い線が表示され、もしray-traceが地面とコライドしている場合は、下にボックスが表示されます。

FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

 

  • (3) 最初の Branch ボックスは LineTraceByChannel のReturn Valueがあるかどうかをチェックするものです。

2つ目は、ポーンが別のSurface Typeを歩かない場合は、BlueprintがSwitchを Wwise に送らないようにするためのものです。このゲート役がないと、ティックがあるたびにいつまでも Wwise にSwitchが送られてしまいます!

Get Surface Type ボックスが、Project Settingsにリンクした Enum を返します。

この変数を表示して設定できるようにするには、 新規に CurrentSurfaceType という名前のVariableを作成し、そのタイプを EPhysical Surface にします。

FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

 

 

  • (4) 前述のとおり、 Wwise のSwitchはゲームオブジェクトに基づいています。今回、Animation Sequenceでポストされる AkEvent notifyがメッシュにアタッチした Ak Componentを作成するので、Set Switchをこの Ak Componentにキャストするべきで、ポーンそのものにキャストしません。

FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

 

  • (5) このボックスが、該当する文字列を Surface Type Enum に返します(例えばConcreteGrassなど) 。
  • (6) これで、 ポーンが歩く地面のCurrent Surface TypeをWwise に送るSet Switchボックスに、データを入れることができます!

                                           Target: AkEvent がポストされたところのメッシュから、 Ak Componentを取得
                                            Switch Group: Material ( Wwise セッションで設定されたものと同じ)
                                            Switch State: Unrealで定義されたSurface Type

                                          Print Stringボックスはデバクだけのためのもので、Unreal画面にCurrent Surface Typeを表示させます。

FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

 

  • Blueprintをコンパイルし、保存し、あなたのポーンのコンポーネントとして追加します。

FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

 

  • Wwise とUnrealを接続すると、ProfilerレイアウトのCapture LogビューにこのSwitchが表示されます。

FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

 

さらに先へ

非常に嬉しいのが、RTPCによってSwitchを完全にコントロールする Wwise の機能で、あるRTPCに送られる値に基づいて、Switchを変化させていけます!

今回のケースだとポーンの速度によってフットステップをWalkにしたりRunにしたり切り替えるのには、この機能が最高です。 

UE4でPawnのAnimation Blueprintを開き、Update Animation Event (これはTickベース)の最後に、Set RTPCボックスを追加します。

  • Target:  Ak Event Notifyをポストするところの Ak Componentを取る必要があります
  • RTPC: Pawn_Speed
  • Value: Get Speed(速度に基づいている)

 FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

RTPCで制御されるSwitchを作成する

  • Switch Groupを新規作成し、名前を FS_Type とし、その Switch 値として Walk と Run を設定します。
  • Pawn_Speed というRTPCを作成します。

                          Min = 0(ポーンがアイドル状態)

                          Max = 300(最高速度)

                            Default = 0

FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

 

  • 私のケースでは、 0 ≤ Walk速度 < 250 ≤ Run速度 ≤ 300 ということが分かっています(この速度をリアルタイムでトラッキングするには、 Wwise とUnrealを接続し、ポーンに送られるRTPCをプロファイリングします)。
  • Pawn_Speed というRTPCを、 FS_Type というSwitchにリンクするには、 Use Game Parameter を有効にし、このように階段のようなものを作成します。

 

FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

作成したSwitchが、以下のように、ゲームから送られてくるRTPC値によってコントロールされます:

  • 0 < Pawn_Speed ≤ 250のときは、Walkに切り替える
  • 250 < Pawn_Speed ≤ 300のときは、Runに切り替える。

  FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

  • あなたの SoundBank をビルドし、プレイし、エンジョイしてください!

 

Unity 3D

Tagの設定

  • マップにあるアクターを1つクリックしてから、Inspectorウィンドウにいきます。
    • Tagのドロップダウンボックスをクリックし、 Add Tag… を選択します。

FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

  • このウィンドウで、 Wood 、 Concrete 、 Grass 、 Tiles の4つの値を追加します。

 

FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

 

地面素材の設定

  • プレイヤーが歩く可能性のある地面またはオブジェクトの1つ1つに、Inspectorウィンドウで 正しいTagをColliderにアサインします。
    • Colliderにメッシュが組み込まれていないこともあるので、必ずTagをメッシュだけでなくColliderに設定してください。

FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

 

C#のプログラム

  • あなたのプロジェクトのCharacter Controllerスクリプトに、このC#コードを追加してください。

 

  • 変数の宣言:

FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

 

  • メインスクリプト:

FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

 

 

この記事を楽しんでいただけたでしょうか?これからも Audiokinetic のブログページで、たくさんのゲームオーディオ経験談をシェアしたいと思います!

  

セバスチャン・ガイヤール (SÉBASTIEN GAILLARD)

オーディオディレクターのセ

セバスチャン・ガイヤール (SÉBASTIEN GAILLARD)

オーディオディレクターのセ

バスチャン・ガ イヤールは、ゲームサウンドのデザイン、プ ログラミング、インテグレーションに15年以 上携わる。3年前から、DONTNODのオーデ ィオ部門を統括し、その中でも特にLife is Strangeで受賞。ISART Digitalでは、頻繁に テクニカルサウンドデザインについて講演。

コメント

Replyを残す

メールアドレスが公開されることはありません。

ほかの記事

EBP(イベントベースパッケージング)の概要

Event-Based Packagingとは? 少し前に、Wwise 2019.2のUE4インテグレーションで、イベントベースパッケージング(Event-Based...

25.3.2021 - 作者 FAN RUNPENG(范润鹏)

新プラグインImpacterを探る

概要 Impacterは、元祖SoundSeed...

11.5.2021 - 作者 ライアン・ダン(RYAN DONE)

ダイアログ|WwiseとUnreal Engineのナレーション

15.2.2022 - 作者 ジェイク・ガムリン(Jake Gamelin)

マルチトラックSFXライブラリ Strata ~ アーリーアクセスユーザの声

Strataの発案...

24.11.2022 - 作者 サイモン・アシュビー(Simon Ashby)

実装経験:『Saints Row』(2022年)で現実的なラジオをWwiseで再現

『Saints...

7.5.2024 - 作者 ブレンドン・エリス

『Star Warsジェダイ:サバイバー』 | オーディチームとのQ&A

『Star Warsジェダイ:サバイバー』はRespawn EntertainmentがLucasfilm...

29.10.2024 - 作者 Respawn Entertainment

ほかの記事

EBP(イベントベースパッケージング)の概要

Event-Based Packagingとは? 少し前に、Wwise 2019.2のUE4インテグレーションで、イベントベースパッケージング(Event-Based...

新プラグインImpacterを探る

概要 Impacterは、元祖SoundSeed...

ダイアログ|WwiseとUnreal Engineのナレーション