実際の音響環境では、閉ざされた空間からくる音は壁を透過して聞こえ、ドアや窓などの開口部からも聞こえてきます。Spatial Audioは、ルームやポータルというジオメトリのハイレベルな抽象化を使い、このエフェクトをシミュレーションします。
info |
注記: Spatial Audioのディフラクションを使用する場合は、Unreal Engine側のobstruction/occlusionを無効にしてください。エミッターの Occlusion Refresh Interval ( AkComponent)を0に設定します。 |
Wwise Project
- Wwiseプロジェクトで、各部屋に新しいAuxiliary Busを作成します。
- 子Auxiliary Busを追加する場所を右クリックします
-
New Child > Presets を選択し、Room Auxiliary Busを選択します。
- Effectsタブで、RoomVerb Effectを調整できます。
Auxiliary BusにReverbエフェクトを追加する
-
Wwiseプロジェクトの準備 のSound SFXまで移動します。
- Positioningタブで、 Diffraction and Transmission チェックボックスが選択されていることを確認します。
WwiseでサウンドのEnable Diffractionを有効にする
- プロジェクトを保存する。
Unrealプロジェクト
- Unrealで、新しく作成したこれらのAuxiliary Busを、Waapi PickerからContent Browserにドラッグ&ドロップします。
- これらをダブルクリックし、バンクにアサインします。
- まだ別のチュートリアルでやっていなければ、建物の2つのルーム用に、2つの AkSpatialAudioVolume オブジェクトをドラッグ&ドロップします。2つのルームに配置するのに、Fit To Geometryを使います。
- それぞれのAkSpatialAudioVolumeのDetailsパネルで、 Fit To Geometry を有効にします。
- もし最初の形が適していなければ、トランスフォームギズモを使って新しい場所にAkSpatialAudioVolumeを変えます。AkSpatialAudioVolumeを変えていくと黄色いプレビューアウトラインが表示されるので、注目してください。満足できる形が見つかったときにマウスボタンを離せば、AkSpatialAudioVolumeがこの場所にスナップします。
- Fit To Geometryを使ってAkSpatialAudioVolumesを配置していく方法について、詳しくは Fit to Geometry を参照してください。
-
Enable Room と Enable Late Reverb が、2つの AkSpatialAudioVolume オブジェクトで有効になっていることを確認します。
- あなたが Reflect チュートリアルをやっていなければ、 Enable Surface Reflectors のチェックは外したままにしてください。
- Late Reverbセクションで、新しくインポートしたAuxバスを、Content BrowserからAuxバスパラメータにドラッグ&ドロップします。
-
2つの AkAcousticPortal オブジェクトを追加します
- 建物の開口部付近に配置します。
- AkAcousticPortalの配置を簡単にするために、Detailsパネルの Fit To Geometry を有効にします。
- Fit To Geometryを有効にすると、Integrationが、周囲のジオメトリを利用してポータルの合理的な場所を見出そうとします。トランスフォームギズモを使って、AkAcousticPortalを適切な開口部の近くにドラッグすると、黄色いプレビューアウトラインが表示されます。納得のいく配置場所が見つかったら、マウスボタンを離せばAkAcousticPortalがこの場所にスナップします。
- Fit To Geometryを使って AkAcousticPortals を配置していく方法について、詳しくは Fit to Geometry を参照してください。
- どの戸口にもAkAcousticPortalが配置できたら、希望するクロスフェード距離になるようにスケールギズモを使って各ポータルの奥行を調整します。ポータルが(ローカルのX軸に沿って)深ければ深いほど、AkComponentがそこを通ってトランジションするときのクロスフェード距離が長くなります。これは、リバーブのセンドとスプレッドトランジションの両方に当てはまります。
- ポータルを選択し、 Ak Portal Component セクションで、初期ステートを Open に設定します。
AkPortalComponentのプロパティ
info |
注記: AkAcousticPortal の向きは、それが接続する部屋同士が、ローカルのY軸方向に沿って配置されている必要があります。ポータルを選択すると、そのポータルの周りに黄色い帯が表示され、選択対象が分かりやすくなります。黄色い線が、フロントエリアとバックエリアの間の境界線を示します。部屋同士が重なり合っている場合は、優先順位が最も高い部屋を選択します。レベルエディタでルームやポータルの作業をするときは、必ずビューポートを'realtime'に設定し、あなたがポータルを動かしたときに、ポータルの可視化が正しく更新されるようにしてください。
レベルエディタでポータルやルームの作業をするときは、必ずビューポートのRealtimeを有効にする
|
設定を検証する
- SoundBankをWindows用に生成します。
- シーンをスタートして、スタート位置から動かない。ルームの中のエミッター上でイベントを再生すると、音が聞こえるはずです。
- Wwise Authoringに接続してから、Game Object Profilerレイアウトに移動します(ショートカットはF12)。Game Object 3D Viewerに以下が表示されます:
- 灰色に可視化されたルーム(AkSpatialAudioVolumeでSurface Reflectorsを有効にしていない場合)。
- 緑色に可視化されたポータル。
- リスナーとは違うルームで、サウンドを再生します。Game Object 3D Viewerに以下が表示されます:
- 各ゲームオブジェクトの入っているルーム。
- ポータルのエッジを回折する音の伝播パスと、そのエッジの回折角度に基づいた回折値。
- ルームの壁を通過する音の伝播パスと、それに関連付けられた透過損失値。
- サウンドにスプレッドカーブがある場合は、回折パスや透過パスのスプレッドコーン。
Game Object 3D Viewerで、RoomやPortalを使う
info |
注記: デフォルトで、回折はオブストラクションカーブに、透過損失はオクルージョンカーブにマッピングされます。これらのカーブは、AuthoringアプリケーションのProject Settingsの、Obstruction/Occlusionタブにあります。
Obstruction Volumeのカーブ
|
Portalとリバーブ
Portalから出てくるサウンドは、反響して、リスナーが現在いる部屋に入ってくることがあります。Spatial Audio Tutorialマップでは、以下の手順でこれを設定しました。
- Wwiseプロジェクトで、
-
Room Reverbに使うAuxiliary Busを探します。このRoomは、ほかの部屋のリバーブに送るサウンドが出ている部屋です。
- Auxiliary Bus Property EditorのGeneral Settingsで、Use game-defined auxiliary sendsが有効になっていることを確認します。
RoomのAuxiliary Busの'Use game-defined auxiliary sends'を有効にする。
- Soundbankを生成し、シーンをスタートし、Wwise Authoringに接続します。
-
Auxiliary sendsが有効になっているRoomでサウンドを再生してから、つながっている別のRoomに移動します。
- 出されたサウンドのウェット部分が、リスナーのいるRoomのリバーブにも送られることが、分かります。
SmallRoomのリバーブが、LargeRoomのリバーブに送られる。
ルームのトーン
部屋には、エアコンの稼働音など、特定のアンビエント音があることがあります。これを再現するために、Spatial Audio Roomというゲームオブジェクトにイベントをポストすることができます。リスナーがこのRoom(部屋)にいると、サウンドのポジションはその位置にあります。別のRoomに移ると、リスナーには、元のRoomとリスナーの位置をつなげるPortalから、Roomのトーンが聞こえます。
- Wwiseプロジェクトで、
- Room Tone用に新しいSound SFXを作成します。
- サウンドをリバーブに送りたい場合は、'Use game-defined aux sends'を有効にします
- 必要に応じて、Distance attenuationカーブ用のAttenuationを追加します。
- このRoom toneでPlayイベントを作成するために、このSound SFXを右クリックし、 New Event > Play を選択します。
-
Unrealで、
- 前のセクションで作成したEventを、Waapi PickerからContent Browserにドラッグします。
- あなたのRoomの1つで、このイベントをAk Eventセクションの下にあるAk Audio Eventパラメータに追加します。
- Aux Send Levelを調整し、このサウンドの一部を、Roomのリバーブに送るように設定します。
- Auto PostボックスをチェックしてRoom ToneイベントをBeginPlayでポストするのか、通常ゲームオブジェクトにイベントをポストするのに使うブループリント関数でコールするのかを、決めます。
Roomを有効にしたSpatial Audio Volumeの、AkEventセクション。
-
Spatial Audio Tutorialマップでは、Level Blueprintのブループリント関数を使い、Room Toneをアクティブにしたり解除したりします。
- World Outlinerで、Room ToneのあるAkSpatialAudioVolumeを選択してから、Level Blueprintで右クリックしてReferenceを作成します。
- Referenceからコネクションをドラッグし、"Post Associated Ak Event"を検索します。
- 同様に、Stop関数を検索します。
- インプットノードとしてKeyプレスを追加します。
Room Toneの再生と停止をLevel Blueprintから行う
- SoundBankを生成します。
- シーンをスタートし、Wwise Authoringに接続します。
-
Room ToneのあるRoomまで移動し、キーを押してRoom Toneをスタートします。音が聞こえることを確認します。
- Advanced Profilerビューに、再生中のイベントが表示されます。
Advanced Profilerビューの、再生中のRoom Tone
-
3D Game Object Viewerでリスナーを動かしながら、Roomゲームオブジェクトを観察します。
- リスナーがこのRoomにいると、Roomが音を出すのは、リスナーの位置からです。Roomゲームオブジェクトが、リスナーのゲームオブジェクトのあとをついていくのが分かります。
- リスナーが別のルームにいる場合は、
- 回折したサウンドの位置を示すために、ルームゲームオブジェクトがポータルに置かれ、それとリスナーゲームオブジェクトの間にパスが描写されます。
- ルームゲームオブジェクトが、ダイレクトパス上のルームの境界に置かれ、送信された音のポジションを示します。
- これら2つのポジションに、スプレッドコーンが描写されます。
Game Object 3D Viewerにあるルームトーン
- 参照
-