リバーブにもスペーシャリゼーションを Wwise Spatial Audioのルームとポータルについて

サウンドデザイン / スペーシャルオーディオ / Wwiseの使い方やツール

最近、スペーシャルオーディオがもてはやされていますが、実はスペーシャルオーディオと言っても指すことは様々で、使えるオプションも多数あります。ゲームに取り込む方法が色々とあり、互いに排他的でなく複数のソリューションを組み合わせて使えるので、カスタマイズされたエクスペリエンスを実現できます。今後、スペーシャルオーディオの記事としてリフレクションやディフラクション(回折)のシミュレーションについて述べますが、今回はWwiseのルームやポータルという考え方に注目します。Wwiseのルームとポータルのシステムのメリットを探りながら仕組みを説明し、没入感を深める便利でパワフルなこのツールの使い方に迫ります。記事を読んでWwiseでルームやポータルを自分で細かく設定しながら練習したければ、UnityUnrealを使ってチュートリアルの手順を実践してみてください。

音響ポータルの仕組み

音響のポータルとは主に、その名のとおり、ある部屋と別の部屋をつなぐジオメトリとして定義された開口部のことで、音が伝播する様子を抽象化します。ポータルは、異なる2つの音響環境の間にくる境界部分のモデル化です。なお、ここでルームと呼んでいるのは単純に音の環境のことで、屋外環境も含めて指すこともあります。

 

WwiseSpatialAudio1
Wwise Audio LabのXYZ座標が表示された音響ポータル


Wwise Spatial Audioのポータルは、オリエンテーション(方向性)を有するバウンディングボックスのかたちをとり、四角い筒のように両端が開いています。X軸はポータル幅、Y軸は高さを表し、Z軸はバウンディングボックスのデプス(深度)です。このデプスに沿ってポータルのトランジションが発生します。ドアや窓に奥行があるとは思えないかもしれませんが、Wwise Spatial Audioにおいては補間のためにZ軸が重要で、2つの環境の間でスムーズにトランジションできるようにする鍵です。Z軸に沿った補間については後述します。

拡散残響のスペーシャリゼーション

ポータルの重要な役割の1つは拡散残響の伝達の度合いをコントロールすることです。例えばルームにサウンドエミッターが3つあり、そのルームがポータルに接続していて、ポータルの向こう側にリスナーのいる別のルームがあったとします。3つのエミッターから出る音はルームの壁を何度も跳ね返り拡散されてオリエンテーションが把握できなくなります。これらの音はミックスされてからポータルの中を通ります。一方、隣の部屋のリスナーから見るとポータルは1つのサウンドエミッターであり、3つのエミッターから出たすべての音が反響してミックスされたあとの音が、このエミッターから出ます。

 

WwiseSpatialAudio2
Wwiseの3Dオブジェクトプロファイラ、注釈付き。右上にボイスグラフを表示。スクリーンキャプチャでは、3つのエミッターが1つのルームゲームオブジェクトにミックスされ(フューシャピンク色の矢印)、それにリバーブとスペーシャリゼーションが適用され、リスナーゲームオブジェクトに対してミックスされます(オレンジ色の矢印)。


アーキテクチャとしては、Wwise Spatial AudioはC++ ライブラリで、Wwise Sound Engineの上にあります。Spatial Audioでは、Wwiseサウンドエンジンにあるゲームオブジェクトに対してインスタンス化される3D Busをポータルが自動的にコントロールします。演算自体は必ずしも複雑ではありませんが、Spatial Audioが自動的に管理して適切につなげ、必要な計算タスクを実行してくれるので、ゲームエンジンやプログラマーの負担が減ります。拡散残響の場合、Spatial Audioが指示して、サウンドエンジンはまず特定のバスに対してミックスダウンを行い、リバーブエフェクト(またはツールで設定した一連のエフェクト)を適用し、最後にミックスされたものをポータルの位置に配置してスペーシャリゼーションを行います。

ダイレクトパスのディフラクション

このポータルは、拡散残響の影響を反映させるほか、ダイレクトパスのディフラクション(回折)のシミュレーションというもう一つの重要な役割を担っています。例えばリスナーの隣の部屋に、1つの点音源のエミッターがあったとします。音の一部は、どの面にも反射することなくそのまま直接ポータルを通過して伝播するはずで、これをダイレクトパスと言います。もし音がエミッターから直接見えて、間に障害物がなければ、ポータルは(充分な大きさがあれば)ダイレクトパスに影響しませんが、音が角の向こう側にあると話が面白くなってきます。そうなるとディフラクションが関係してくるので、障害を受ける音のモデル化や、障害のあるときとないときの間のトランジションのモデル化に大きく影響します。Spatial Audio機能が、その音がポータルを通るときに、何度の角度で曲がるのか、 つまり音がどのように回折したのかを計算し、その角度をWwiseのObstructionパラメータにマッピングします。サウンドエンジンはWwiseのProject Settingsで定義したObstructionカーブに従い、減衰やLPFエフェクトを適用します。音の回折が大きいほど、より大きいオブストラクションが適用され、低周波の音ほど角を回り込みやすいという現象を具現化します。

WwiseSpatialAudio3

Wwiseの3Dオブジェクトプロファイラ、注釈付き。右にボイスグラフとボイスプロファイラを表示。スクリーンキャプチャでは、エミッターがポータルを通して回折します。回折の角度が率(%)としてObstruction値に渡されてLPFに作用し、音のバーチャルポジションを見ると、リスナーにとって音がポータルを通過したように聞こえます。


Spatial Audio のルームの内部(または内部の欠如)

それではSpatial Audioのルームを詳しくみてみます。Spatial Audioライブラリはルームのポジションや形状を直接意識しているわけではなく、そのオリエンテーションと、アサインされているAux Bus(拡散反響エフェクトのため)だけを把握しています。ルームの形状を決めて各リスナーやエミッターがどの部屋にあるのかをSpatial Audioに伝えるために必要なコンテインメントテストを実行するのは、ゲーム側の担当です。そうすることでゲームの事情に合わせて、ルーム形状を単純にも複雑にもすることができます。

さらに掘り下げてWwiseのサウンドエンジンの中を見ると、ルームは単なるゲームオブジェクトの一つになっています。ルームのゲームオブジェクトのポジションや、オリエンテーション、センドレベル、オクルージョン、オブストラクションなどはSpatial Audioライブラリが直接コントロールし、接続されているポータルとリスナーの相対的な位置に従い、常時更新されます。

Spatial Audioとルームトーン、ルームアンビエンス

ルームゲームオブジェクトを利用するのはリバーブのときだけではありません。ルームゲームオブジェクトの自動的なポジショニングを使えば、例えばルームトーンやルームアンビエンスなどのWwiseイベントをルームオブジェクトに直接ポストすることができます。リスナーが部屋にいるときはリスナーを包み込むルームアンビエンスにして、ポータルを出るときはリアルに減衰させるのに効果的な方法です。

プログラマーへのアドバイスですが、ルームゲームオブジェクトに対してイベントをポストすることができる理由はルームIDがゲームオブジェクトIDと同じだからで、Spatial Audioがゲームオブジェクトのことを使わないと判断して除去しないように、必ず AkRoomParams::RoomGameObj_KeepRegistered を設定してください。

ルームゲームオブジェクトの動作

ルームゲームオブジェクトの動作は、リスナーがルームの中にいるのか外にいるのかによって変わります。前者の場合、ゲームオブジェクトのポジションはリスナーとまったく同じ場所になりますが、ルームオブジェクトのオリエンテーションは、リスナーのオリエンテーションに対するルームのオリエンテーションに固定されています。ルームゲームオブジェクトを通して再生されるリバーブやアンビエンスは逆方向に回転するので、私たちが聞くサラウンドトラックは、周りのワールドに固定されているように聞こえます。これは、音場のアンビエンスを利用するVRエクスペリエンスにおいて特に重要な点です。リスナーは一般的にバイノーラルエフェクトのあるヘッドトラッキングデバイスにコントロールされますが、自分の頭を動かしたときに音場を色々な角度からとらえたり、特定の角度に注目したりできることが大事です。アンビエンスをリスナーのオリエンテーションに固定してしまうゲームが時々ありますが、そうするとリスナーが頭を動かしたときに音場も追随するように動くので、没入感がかなり落ちてしまいます。リバーブエフェクトの場合、それ自体が拡散されるものなのでそれほど悪影響はありませんが、同じように音場をルームのオリエンテーションにピン付けするようにします。

それでは、リスナーの隣のルームについて考えてみます。各ルームのオーディオを別々のゲームオブジェクトとしてコントロールすることの強みがここにあります。ルームの中からくる音について、ルームアンビエンスやルームリバーブも含め、ゲームオブジェクトにその責任がありますが、ポジションは、リスナーの現在のルームに接続するポータルの場所です。ポータルが複数ある場合、Spatial AudioはWwiseのマルチポジショニングシステムを活用して余分なボイスやエフェクトインスタンスをインスタンス化されないようにします。

ポータルのスプレッド係数

Spatial Audioが各サウンドのスプレッド係数を操作しますが、これはAttenuation設定で自由に設定できるスプレッドと同じもので、角度が、リスナーからみたポータルの開口部の角度と同じになるようにします。リスナーがポータルから離れていくと、Wwiseでユーザーが設定したAttenuation設定がはたらき出し、ボリュームが下がりフィルターがかかります。

WwiseSpatialAudio4

Wwiseの3Dオブジェクトプロファイラ、注釈付き。スクリーンキャプチャでは、リスナーポジションによって異なるルームゲームオブジェクトのスプレッド係数が表示されています。上の3つのフレームではルームゲームオブジェクトのポジションはポータル部分にありますが、リスナーがルームの中に入ると、オブジェクトのポジションがリスナーとまったく同じ場所になります。


ポータルを通してトランジションするときのスプレッド角度は、リスナーがポータルに近づくほど広がり、リスナーがポータル中央まで来るとスプレッドが50%(180度)になり、さらにルーム内へ入っていくと音はリスナーの周りをサラウンドし続け、徐々に100%(360度)まで広がります。

ポータルのデプス

この記事の冒頭でポータルが平面の長方形でなく立方体のボックスで表されることを説明しました。ポータルにデプス(深度)があることで、リバーブ、ルームアンビエンス、そしてルームからルームへと移動するときのオブジェクトのポジションまでも、補間することができます。トリガーボリュームの最初にオーディオトランジションをトリガーさせてしまい、プレイヤーが運よく進行方向を変えずに同じスピードで動き続け、トランジションがプレイヤーの動作に追いつきますように、と願うだけのようなゲームをよく見かけます。万が一プレイヤーが止まったり方向転換をしたりすると、音はプレイヤーポジションと同期しなくなります。これを解決してくれるのがポータルで、クロスフェードを時間でなく空間に対して適用することで、2つのルームの間を移動するときのトランジションがスムーズでリアルに聞こえます。

ここまでWwise Spatial Audioのルームやポータルのメリットばかりを記してきましたが、システム上の制約事項もあり、決して万能ではありません。例えば、論理的にルームに分けてルームをポータルでつなげることができないような複雑なレベルもあり、その場合は無理やり入れ込もうとしないほうが良いです。また、多数の障害物がある屋外環境など、複雑なジオメトリーが含まれるシナリオでは、ポータルは避けた方が無難です。このような種類のシナリオは、Wwise Spatial AudioのGeometric diffraction APIを使う方が得策です。Geometric APIは同じWwise Spatial Audioの中でもまったく違う切り口となり、残念ながら今回は触れませんが、今後のAudiokineticのブログに予定されているので楽しみにしてください。それまではドキュメンテーションを読みながら試してみてください。

Wwise Spatial Audioのルームやポータルのシステム内部について幅広く見てきましたが、細かいところは複雑です。コンセプトなどが分かりにくいと感じたら、是非とも触れて遊んでみてください。Wwise Audio LabなどのデモをWwise Launcherで入手して、ゲームにWwiseオーサリングツールをつなげてください。ここで出てきた処理はすべて3D Game Object Viewerに表示されるエミッターやリスナーやルームゲームオブジェクトの動きに反映されるので、観察してください。最終的には自分でやってみてどの方式が一番合うのかを探すことが大事で、実体験ほど役に立つものはありません。


ネイサン・ハリス(NATHAN HARRIS)

ソフトウェアエンジニア、R&D

Audiokinetic

ネイサン・ハリス(NATHAN HARRIS)

ソフトウェアエンジニア、R&D

Audiokinetic

ネイサン・ハリス(Nathan Harris)は夢を追い求めて2012年にモントリオールに拠点を移し、世界中で何百ものゲームに導入されるであろう最先端のテクノロジーを、Audiokineticと開発してきました。以前はWwiseのパワーユーザーとして熱心に使っていましたが、今はスペーシャルオーディオやソフトウェアアーキテクチャの専門家として、研究や技術開発の活動にチームメンバーとして関わっています。ネイサンはブラジリアン柔術の黒帯で、稽古中でない時や、没入感あふれるのゲームの開発で発生した問題に取り組んでいない時は、DIYグッズで自家製ビールを作ったりコーヒー豆を焙煎したりしています。

 @spcmn_spiff

コメント

Replyを残す

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

ほかの記事

Wwise 2017.1の最新3Dバスアーキテクチャを使った、盗聴システムのシミュレーション方法

3.8.2017 - 作者 ネイサン・ハリス(NATHAN HARRIS)

Fun with Feedback(フィードバックの魅力)

Wwise...

12.12.2017 - 作者 ネイサン・ハリス(NATHAN HARRIS)

Wwise Motion Sourceで、振動を実現

振動機能を初めて体験したときのことを、覚えている?それは、もしかしたらNintendo 64のGolden Eye“Rumble...

13.3.2019 - 作者 マクシミリアン・シマール・ポワリエ(MAXIMILIEN SIMARD POIRIER)

『I Am Fish』 そのサウンドの舞台裏

『I Am Fish(俺は魚だよ)』は物理演算を駆使した魅力的なアドベンチャーゲームで、プレイヤーは4人の勇敢な魚の仲間たちの運命を手に、海への脱出を試みることになります。ロンドンのBossa...

9.8.2022 - 作者 アリ・トーカー(Ali Tocher)

Wwise 2022.1におけるSDKランタイムパフォーマンスの改善

この記事ではWwise...

1.3.2023 - 作者 デビッド・クルックス

Wwiseで実現するリアリティのあるハプティクス効果

はじめに...

19.3.2024 - 作者 香田 夏雄(NATSUO KODA)

ほかの記事

Wwise 2017.1の最新3Dバスアーキテクチャを使った、盗聴システムのシミュレーション方法

Fun with Feedback(フィードバックの魅力)

Wwise...

Wwise Motion Sourceで、振動を実現

振動機能を初めて体験したときのことを、覚えている?それは、もしかしたらNintendo 64のGolden Eye“Rumble...