UPrimitiveComponent
にアタッチされた AkLateReverbComponent を使うときに、 UPrimitiveComponent
のサイズや形に合わせてリバーブの Aux Bus を自動的にアサインするように、Wwise Unreal Integrationに指示することができます。
同様に、Wwise Unreal Integrationは UPrimitiveComponent
を使って、特定のリバーブパラメータ値を推定することができ、 Global Reverb RTPC 経由でそれらを調節します。このチュートリアルでは、Global Reverb RTPCを使って、Auxバスの自動アサインや、リバーブエフェクトのParameter Estimation(パラメータ推定)を設定する方法を説明します。
info |
注記: UPrimitiveComponent は、サイズと形を有するUnrealの汎用コンポーネントです。 UPrimitiveComponent をベースにしたコンポーネントには、コリジョンコンポーネント、ブラシコンポーネント、メッシュコンポーネントなど、多様な種類があります。詳細は Unreal Engine ドキュメンテーション を参照してください。 |
Auxバスの自動アサイン
Automatic Aux Bus Assignment(Auxバスの自動アサイン)は、サウンドのリバーブが一定量ディケイするのにかかる時間(秒)を推測することで機能します。これを、単純にDecayと呼んでいます。Integration Settingsの Aux Bus Assignment Map を使って、どのDecay値を、どのAuxバスにマッピングするのかを指定できます。
Integration Settingsにある、AuxバスのAssignment Map
info |
注記: Integration Settingsにアクセスするには、Edit > Project Settings...をクリックし、Unreal Project Settingsを開きます。次に、Unreal Project Settingsの左パネルを下にスクロールし、Wwiseセクションの Integration Settings をクリックします。 |
マップのDecayキーの設定を始める前に、このレベルの既存リバーブの推定Decay値を観察してみます。
- SpatialAudioTutorialMapが開いていない場合は、開きます。
- World Outlinerで、Interior_SmallRoom
AkSpatialAudioVolume
をクリックします。
- Interior_SmallRoomのDetailsパネルで、 Auto Assign Aux Bus を有効にします。
- ステップ2と3を、Interior_LargeRoom
AkSpatialAudioVolume
で繰り返します。
Interior_SmallRoomとInterior_LargeRoomで、Auto Assign Aux Busを有効にする
info |
注記: Auto Assign Aux Bus を有効にすると、 Aux Bus の設定がNoneになります。これは、Aux Bus Assignment Mapが未設定のためです。 |
Auto Assign Aux Bus を有効にすると、選択した AkSpatialAudioVolume
の上に、ビューポートでテキスト情報が表示されます。Interior_SmallRoomのDecayは、推定0.37秒です。Interior_LargeRoomのDecayは、推定0.45秒です。この情報は、DetailsパネルのReverb Parameter Estimationの下にもあります。これらの数値を使って、Aux Bus Assignment Mapを設定できます。
Reverb Parameter情報が、ビューポートのPrimitiveコンポーネントの上に表示される
Reverb Parameter情報が、Detailsパネルの、Reverb Parameter Estimationセクションにも表示される
- Integration Settingsを開きます。
- Reverb Assignment Mapセクションが展開表示されていない場合は、展開します。
Integration Settingsにある、AuxバスのAssignment Map
-
Insert Decay Keyボタンをクリックする。
- 値を0.4に設定し、 Insert をクリックします。
Decay Key値として0.4をインサートする
-
Insert Decay Keyボタンをクリックする。
- 値を0.5に設定し、 Insert をクリックします。
- Decayキーの0.4の隣で、SmallRoomのAuxバスを選択します。
- Decayキーの0.5の隣で、LargeRoomのAuxバスを選択します。
AuxバスのAssignment Mapの新Decayキー2つと、それぞれのAuxバス
AuxバスのAssignment Mapをこのように設定すると、Decay値が0.0と0.4の間のときは、必ずSmallRoomのAuxバスが出されます。Decay値が0.4と0.5の間のときは、必ずLargeRoomのAuxバスが出されます。Decay値が0.5を超えると、 Default Reverb Aux Bus が出されます。
レベルに戻ってみると、適切な Aux Bus 値が、Interior_SmallRoomとInterior_LargeRoomにアサインされています。
Aux Busが自動的にアサインされる
Global Reverb RTPC
Auxバスを自動的にアサインできるほか、グローバルなReverb RTPCを使って、Wwiseのリバーブエフェクトの一部パラメータを自動的にアサインできます。この設定ができるのは、Decay、Predelay、HFDampingの3つのパラメータです。これらのパラメータを制御するRTPCの設定は、Integration Settingsで行います。
Integration SettingsのGlobal Reverb RTPC
RTPCの設定
Global Reverb RTPCを使うには、3つのRTPCをWwiseプロジェクトに追加する必要があります。
- Wwiseプロジェクトを開きます。
-
Layouts > Designer をクリックするか、F5キーを押して、Designerレイアウトを開きます。
- Project Explorerで、Game Syncsタブをクリックします。
Game Syncsタブを開く
- Decay、Predelay、HFDampingという3つの新しいゲームパラメータを追加します。
- 3つの新しいゲームパラメータの、Min、Max、Defaultの値を、以下に設定します:
-
Decay - Min: 0, Max: 10, Default: 0
-
Predelay - Min: 0, Max: 1, Default: 0
-
HFDamping - Min: -1, Max: 1, Default: 0
Wwiseプロジェクトに3つの新しいRTPCを追加する
- Project Explorerで、Audioタブをクリックします。
- Master-Mixer Hierarchyの下の、SmallRoomをダブルクリックします。
- するとProperty Editorで、SmallRoomのAuxバスが開きます。
- Property Editorで、Effectsタブをクリックします。
SmallRoom AuxバスのEffectsタブを開く
-
Edit ボタンをクリックし、WwiseRoomVerb Effectを開きます。
- Effect Editorで、RTPCタブをクリックします。
- RTPCリストに、新しい項目として Decay Time 、 Predelay 、 HF Damping を追加します。
- 3つのパラメータを、以下のようにマッピングして結び付けます:
-
Decay Time: Decay
-
Pre delay: Predelay
-
HF Damping: HFDamping
- Decayマッピングを選択し、カーブ上にポイントを1つ追加します。
- このポイントのX値、Y値を、ともに0.2に設定します。
Decay RTPCのマッピング
- HFDampingマッピングを選択し、カーブ上にポイントを1つ追加します。
- このポイントのX値を0.0に、Y値を1.0に設定します。
HFDampingのマッピング
RTPC全3種類のマッピング
- リストにあるマッピングを、全て選択します。
- マッピング設定の1つを右クリックし、 Copy を選択します。
- Property Editorで、LargeRoom Auxバスを開きます。
LargeRoomのWwise RoomVerbエフェクトのEffect Editorを開く
- Effectsタブをクリックします。
-
Edit ボタンをクリックし、WwiseRoomVerbエフェクトを開きます。
- Effect Editorで、RTPCタブをクリックします。
- 空のRTPCリストの中で右クリックし、 Paste を選択します。
これで、WwiseプロジェクトにReverbパラメータを制御する3つのRTPCを設定できました。Unrealプロジェクトに戻り、これらのRTPCをGlobal Reverb RTPCとして利用します。
- Integration Settingsを開きます。
- Reverb Assignment Mapセクションが展開表示されていない場合は、展開します。
- RTPCsサブセクションが展開表示されていない場合は、展開します。
Integration SettingsのGlobal Reverb RTPC
- 3つの新しいRTPCを、それぞれの該当するGlobal Reverb RTPCにアサインします。
3つの新RTPCを、Global Reverb RTPCにアサインする
次に、Wwiseにリモート接続し、Editorでプレイします。小ルームと大ルームで、サウンドをトリガーさせながらWwiseのRTPCカーブを観察すると、リバーブパラメータが変更される様子が分かります。
ゲームによって決まるRTPC
同じReverb Auxバスを、異なるルームタイプに使う
Global Reverb RTPCを使えば、1つのリバーブエフェクトをレベル全体で使って、レベルのルームごとに、パラメータをダイナミックに変化させることが可能です。
- Wwiseプロジェクト内に、DynamicReverbという新しいAuxバスを作成します。
- デフォルトのエフェクトプリセットを利用して、このAuxバスにWwise RoomVerbエフェクトを追加します。
DynamicReverbという、Wwise RoomVerbエフェクトのある新Auxバスを追加する
- SmallRoom AuxバスのリバーブエフェクトのRTPCマッピングを、DynamicReverb Auxバスのリバーブエフェクトにコピー&ペーストします。
- Unrealプロジェクトで、Aux Bus Assignment Mapの項目を全て削除します。
-
Environment Decay Aux Bus Map の隣の小さな削除アイコンをクリックすれば、全て削除できます。
-
Default Reverb Aux Bus を、新しいDynamicReverb Auxバスに設定します。
これで、リモート接続してEditorでプレイすれば、Interior_SmallRoomも、Interior_LargeRoomも、DynamicReverb Auxバスを使うようになりますが、パラメータは、Global Reverb RTPCを通して各ルームに合わせて自動調整されます。
Reverb Estimationをカスタムブループリントクラスで使う
1つのAuxバスを使ったワークフローをさらに試すデモを行うために、ルーム用にカスタマイズされたブループリントクラスを1つ作成します。単純なCube型の、壁を通り抜けられる、デモ用のルームです。まず最初に、ルーム内が見えるように両面マテリアルを作成します。
- Content Browserで、WwiseAssets/SpatialAudioDemoフォルダまで移動します。
-
SpatialAudioDemoMeshMaterial を右クリックし、 Duplicate を選択します。
SpatialAudioDemoMeshMaterialの複製をつくる
- 新しいマテリアルインスタンスの名前を"SpatialAudioDoubleSidedMaterial"にします。
新マテリアルインスタンスの名前をSpatialAudioDoubleSidedMaterialに変更する
- 新しいマテリアルインスタンスを開きます。
-
Material Property Overrides の下の Two Sided を有効にします。
- マテリアルインスタンスを保存します。
デモ用のマテリアルの準備ができたので、次にブループリントクラスを作成します。
- Content Browserで、Blueprintsフォルダまで移動します。
- フォルダ内で右クリックし、 Blueprint Class を選択します。
新しいブループリントクラスを作成する
- Parent Classとして Actor を選択します。
- 新しいブループリントの名前を"BPRoom"にします。
- 新しい BPRoom ブループリントクラスを開きます。
- Componentsパネルで、 Add Component ボタンをクリックします。
Blueprint EditorのAdd Componentボタンで、コンポーネントを追加する
- Searchバーにcubeと入力し、 Cube コンポーネントを選択します。
-
Static Mesh にCubeメッシュを選択した、Static Meshコンポーネントが作成されます。
- Detailsパネルの Materials の下で、 Element 0 を SpatialAudioDoubleSidedMaterial に設定します。
CubeマテリアルをSpatialAudioDoubleSidedMaterialに設定する
- Componentsパネルで、Cubeコンポーネントを選択します。
-
Add Component ボタンをクリックし、Box Collision Componentを追加します。
-
Box コンポーネントを選択します。
-
Add Component ボタンをクリックし、Ak Room Componentを追加します。
-
Box コンポーネントを選択します。
-
Add Component ボタンをクリックし、Ak Late Reverb Componentを追加します。
-
Box コンポーネントを選択します。
-
Add Component ボタンをクリックし、Ak Geometry Componentを追加します。
あなたのブループリントクラスのコンポーネント階層は、以下のようになるはずです:
Cube、Box、Spatial Audioのコンポーネントを設定する
-
AkGeometry コンポーネントを選択します。
- Detailsパネルの Geometry の下で、 Mesh Type をSimple Collisionに設定します。
-
Acoustic Properties Override サブセクションを展開し、 Acoustic Texture をConcreteに設定します。
AkGeometryパラメータを設定する
- Componentsパネルで、 Cube コンポーネントを選択します。
-
Add Component ボタンをクリックし、Point Lightコンポーネントを追加します。
- これで、ルームの中に入ったときに周りが見えます。
CubeコンポーネントにPoint Lightを追加する
-
Cube コンポーネントを選択します。
-
Collision の下で、 Collision Preset を No Collision に設定します。
-
Box コンポーネントを選択します。
-
Collision の下で、 Collision Preset を No Collision に設定します。
- これで、壁を通り抜けて歩くことができます。
- ブループリントをコンパイルして保存します。
- Level Editorで、Content Browserから、BPRoomの複数のインスタンスをドラッグしてきます。
- これらのルームを、それぞれ違う大きさにします。
新しいルームブループリントをテストする前に、ルーム間を移動するときに再生できるサウンドを追加する必要があります。
- Content BrowserのBlueprintsフォルダで、 MyCharacter ブループリントを開きます。
Content Browserに表示されたMyCharacterブループリント
- Componentsパネルで、Capsuleコンポーネントを選択します。
-
Add Component ボタンをクリックし、Akコンポーネントを追加します。
- 単に"Ak"と表示されます。
- Akコンポーネントの名前を、SpatialSoundに変更します。
- SpatialSoundコンポーネントを選択します。
- Detailsパネルで、 Ak Audio Event を Play_SpatialSound に設定します。
MyCharacterブループリントにAkコンポーネントを追加する
- MyCharacterブループリントの、Eventグラフを開きます。
- Event Graphの右下にある Event BeginPlay ノードを見つけます。
- 最後の Set Switch ノードからドラッグし、"post associated"と入力し始めます。
Set SwitchノードをPostAssociatedAkEventノードにつなげる
-
Post Associated Ak Event (SpatialSound) を選択します。
BeginPlayと同時にスペーシャルサウンドをポストするロジックを設定する
これで、いくつかのルームをこのレベルに置くことができます。
- レベルに、BPRoomブループリントの複数のインスタンスをドラッグします。
- 各ルームの大きさを変えます。
- 各ルームの AkGeometry コンポーネントの、Acoustic Textureを変えます。
- レベルにあるルームを1つ選択します。
- Detailsパネルで、 AkGeometry コンポーネントを選択します。
-
Acoustic Texture を変えます。
- レベルの全てのBPRoomインスタンスで、これを繰り返します。
BPRoomアクターのインスタンスごとに、アコースティックテキスチャを変更する
次に、Wwiseにリモート接続し、Editorでプレイします。スペーシャルサウンドが、すぐにトリガーされます。歩いてルームからルームへと移動していくと、適切なリバーブパラメータがサウンドに適用されます。
HFDampingの計算とアコースティックテキスチャ
HFDamping値を推定するときに、 AkLateReverbComponent
は AkGeometryComponent
を使って、アコースティックテキスチャを探るためのクエリを行います。前のサブセクションでは、 AkLateReverbComponent
と、 AkGeometryComponent
が、同じ UPrimitiveComponent
を親としてもっていました。その親 UPrimitiveComponent
は、Boxコンポーネントでした。このように AkLateReverbComponent
に AkGeometryComponent
の兄弟があるという設定では、自動的にその兄弟の AkGeometryComponent
を使ってHFDampingが計算されます。ところが、もし AkGeometryComponent
の親が別であれば、 AkGeometryComponent
を AkLateReverbComponent
に意図的に関連付ける必要があるので、AssociateAkTextureSetComponent関数を使います。この最後のセクションで、その設定を説明します。
- BPRoomブループリントを開きます。
- Componentsパネルで、 AkGeometry コンポーネントを Cube コンポーネントの上にドラッグし、マウスボタンを離します。
- これで、 AkGeometry コンポーネントが Box コンポーネントでなく、 Cube コンポーネントにアタッチされます。
-
AkGeometry コンポーネントを選択します。
- Detailsパネルの Geometry の下で、 Mesh Type をStatic Meshに設定します。
- +ボタンを使い、 Acoustic Properties Override に項目を追加します。
Acoustic Properties Overridesリストに、Materialを1つ追加する
- マテリアルを SpatialAudioDoubleSidedMaterial に設定します。
- マテリアル横のドロップダウン矢印をクリックし、 Acoustic Texture をConcreteに設定します。
AkGeometryパラメータを設定する
- このブループリントのEventグラフを開きます。
-
Even BeginPlay ノードの実行ピンをクリックしてドラッグします。
- Searchバーに"associate"と入力します。
- Associate Ak Texture Set Component (AkLateReverb) を選択します。
- Componentsパネルの、 AkGeometry コンポーネントを、Texture Setコンポーネントのピンの上にドラッグし、マウスボタンを離します。
BeginPlay関数の設定
これで、Wwiseにリモート接続してEditorでプレイし、HFDamping値が正しく更新されているかをテストできます。このようなセットアップで、複数のマテリアルを設定したスタティックメッシュに、マテリアルをアコースティックテキスチャにマッピングする AkGeometryComponent
をアタッチできます。そして、この AkGeometryComponent
と AkLateReverbComponent
を関連付けて、テキスチャによってHFDamping値を決めることができます。