ネイティブ音場アンビソニックスのレンダリング

Unreal Audio Engine における音場アンビソニックスの利用方法に関する概要

Choose your operating system:

Windows

macOS

Linux

Version 4.25

Soundfield (音場) とは、現実とバーチャルの空間領域でのオーディオ表現です。音場をキャプチャして表現する最も良い方法は、現実と仮想の世界に共通するオーディオで最も困難な課題の 1 つです。

音場のキャプチャと表現における課題

ビーチや森のような場所にマイクロフォンを持っていきサウンドスケープをキャプチャしたことがあれば、これから直面する難しさをすでに経験していると思います。たとえば、1 本のカーディオイド マイクロフォンを森に持っていけば、右から左に飛んでいく鳥の鳴き声をきれいにレコーディングできます。このマイクロフォンは全方向に均等の感度をもち、鳥は同じボリュームで鳴き続けていると仮定します。そして自宅に設置したスピーカーで、このレコーディングを左右のチャンネルで同じボリュームで再生します。

Soundfields.png

マイクロフォンを通り過ぎる鳥の鳴き声が両方のスピーカーから同じボリュームで聞こえます。

これは、このレコーディング機材の制約により、鳥とリスナーの位置関係や鳥が飛んでいく方向をリスナーに伝えられる方法で鳴き声を録音しなかったためです。つまりこのレコーディングでは、鳥がマイクロフォンに近づくと左右のスピーカーから大きく聞こえ、鳥が離れると左右で静かになります。

音を再生するスピーカーごとに 1 本ずつ、ある程度の間隔を空けて 2 本のマイクロフォンを配置して鳴き声を録音していれば、はるかに多くの情報を記録できたはずです。

Soundfields_Stereo.png

2 本のマイクを使用すれば、一方のマイクロフォンで鳥の鳴き声が大きくなるにつれて他方のマイクロフォンでは静かになり、他方のマイクロフォンで音量が上がるにつれて最初のマイクロフォンでは静かになります

つまり鳥が右から左に飛ぶ場合、左のマイクロフォンで音量が上がり、右のマイクロフォンでは静かになります。

2 本のマイクロフォンでステレオ オーディオ アセットを録音した場合は、左右それぞれのマイクロフォンと鳥との現在の距離という重要な空間情報を、音場からオーディオ ストリームにキャプチャできています。さらにマイクロフォンを追加すれば、鳥がマイクロフォン アレイの前後どちらを飛んでいるか、さらにマイクロフォン アレイの上空を飛ぶ鳥の高度など、鳥の位置と空間での動きについて空間情報をより多くキャプチャできます。

Downmixing (ダウンミックス) とは、オーディオ ソースを取得して、複数のスピーカー出力としてレンダリングするプロセスです。ゲームでダウンミックスを発生させる方法に精通しているなら、前の図で説明したマイクロフォン アレイに似ていることに気付くでしょう。

通常、オーディオ ソースは各スピーカーで再生され、音量はそのスピーカーのゲーム ワールドにおける位置が、他のスピーカーと比べて音源がどれだけ近いかに正比例します。

典型的なパニング システムは、ゲーム ワールドにおけるスピーカーがある場所に、無指向性マイクロフォンを配置することに似ています。ゲームをステレオにダウンミックスすると、オーディオ ソースがプレーヤーの左右にどれだけ離れているかに関する情報を保持します。

オーディオを 5.1 や 7.1 にダウンミックスすると、フロント左とフロント右のチャンネルと比較した、サラウンド左とサラウンド右チャンネルのソース音量によって、そのソースがプレーヤーの前後どちらに位置しているかに関する情報をさらに提供します。

一般的なアプリケーションにとって、これはプレーヤーがオーディオ ソースの場所を把握する上で十分な情報でしょう。ただし、高度な情報を併せ持つことが理想となるユース ケースも多数あります。音場の状態を エンコード (キャプチャ) する際に、オーディオ ソースの 3D 位置を保持する手法は数多く存在し、必要なスピーカー構成で簡単に デコード (再生) できます。こうした手法により豊かな空間オーディオ体験を実現できます。

ソースのダウンミックス時にオーディオの高度と方位角の情報を保持する、最も人気がある音場表現の 1 つが Ambisonics (アンビソニックス) です。

Unreal Engine のアンビソニックス

アンビソニックス という特殊な音場表現は、 Spherical Harmonics (球面調和関数) を使用して位置情報を持つオーディオを球体に投影します。ビデオ ゲームではライティングを使用して球面調和関数を認識できますが、音響に関して同等なものがアンビソニックです。アンビソニックスに使用する 次数 が高いほど、アンビソニック オーディオ ストリームの 空間解像度 が高くなります。その結果、アンビソニック オーディオ ストリームをスピーカーの位置にデコードした際に、そのオーディオの位置を把握しやすくなります。

さまざまなマイクロフォン アレイを利用して、アンビソニック オーディオ ファイルに直接録音することもできます。また、アンビソニックスは アンビエント オーディオ ベッド (バックグラウンド サウンド) に適しており、アンビソニックでエンコードしたオーディオを状況に合わせて回転できます。Unreal Engine がアンビソニック オーディオ ソースを再生すると、プレイヤーは周囲を見回すことでアンビソニック オーディオ ベッドを自由に回転できるため、アンビエント オーディオがゲーム ワールドの特定の方向から聞こえる印象を与えます。

アンビソニック オーディオ アセットのインポートと再生

バージョン 4.25 のリリース時点で、Unreal Engine は 1 次アンビソニック アセット のみをサポートします。

1 次アンビソニック オーディオは 4 つのチャンネルがあります。 オムニ コンポーネント または W チャンネル ベクター コンポーネント または X Y および Z チャンネル です。

UE は以下 2 つのチャンネル次数をサポートします。 FuMa (Furse-Malham) ACN (Ambisonics Channel Number) です。

FuMa channel ordering はアンビソニック オーディオ チャンネル コンポーネントを W,Y,Z,X として並べます。

ACN channel ordering は W,X,Y,Z を使用します。

1 次アンビソニック オーディオは 4 つのチャンネルを使用するため、インポートされたファイルで 4 チャンネルを持たないものは通常としてアンビソニック オーディオではないアセットとして処理されます。

ambisonic .wav ファイルをコンテンツ ブラウザにインポートするには、以下のいずれかでアセットの名前を終了させます。

  • アンビソニック ファイルが FuMa チャンネル次数を使用する場合は _fuma.wav 、もしくは

  • アンビソニック ファイルが ACN チャンネル次数を使用する場合は _ambix.wav

これで読み込むアンビソニック アセットのチャンネル次数をエンジンに通知します。ファイルをコンテンツ ブラウザにドラッグしてサウンド ウェーブ アセットを開くと、サウンド ウェーブの検証パネルで Is Ambisonics チェックボックスがすでにオンになっています。

Is_Ambisonics_Checkbox.png

.wav ファイルをインポートする前にファイル名の末尾を _ambix _fuma にしなかった場合も、このボックスを今からオンにできます。これを行うと、エンジンはインポートした元のファイルが ACN チャンネル次数を使用していると見なします。

アンビソニック ファイルのインポート後は、 回転 が重要なことを除きエンジンが含む他のサウンド ウェーブと同様に処理できます。アンビソニック サウンド ウェーブをワールドのオーディオ コンポーネントで再生すると、エンジンは、再生しているオーディオ コンポーネントの現在の回転と、ゲーム ワールド内にいるプレイヤーの現在の回転に基づいて、アンビソニックス ベッドを回転します。

音場サブミックス

他のサウンド ウェーブと同様にアンビソニック サウンド ウェーブを再生する以外にも、サブミックス グラフで直接アンビソニックスを使用できます。この場合は Soundfield Submix (音場サブミックス) を作成する必要があります。

Create_Soundfield_Submix.png

音場サブミックスは、サブミックス グラフの他のサブミックスへの接続に使用できます。また、現在エンジンに実装されているか、現在有効なプラグインで実装されている音場表現にも使用できます。

新しく作成した音場サブミックスを開いて検証パネルを確認すると、 [Soundfield Encoding Format] のドロップダウン メニューに [Unreal Ambisonics] オプションが表示されます。

Soundfield_EncodingFormat_Ambisonics.png

[Unreal Ambisonics] を選択すると、実際にアンビソニック ソースでなくても任意のオーディオ ソースをこのサブミックスに送信でき、単一のアンビソニック ストリームにエンコードもしくはミックスダウンされます。回転を持つアンビソニック ソースをアンビソニック ストリームに送信する場合も、エンジンはアンビソニック ソース オーディオをミックスダウンする前にソースに基づいて回転します。

Google Resonance Oculus Audio のプラグインを有効化している場合は、 [Soundfield Encoding Format] メニューに他のエントリが表示される場合があります。これらを使用すると、非アンビソニックソースとアンビソニックソースの両方に加え、その他のサブミックスも、サブミックス グラフの Resonance や Oculus に直接送信できます。

たとえば、アンビソニック サブミックスの出力を取得して Google Resonance でバイノーラル方式のオーディオにレンダリングする場合は、別の音場サブミックスを作成してサブミックス グラフにドロップし、 [Soundfield Encoding Format] [Resonance Binaural Spatialization] を選択します。

Resonance_Binaural_Spatialization.png

あとは Ambisonics Submix の出力を Resonance Submix に接続するだけです。

Connect_Ambisonics_Submix_To_ResonanceSubmix.png

アンビソニックと非アンビソニックのオーディオ ソースを両方とも Resonance Submix に送信して、バイノーラル方式のステレオ出力にレンダリングできます。さらに非音場サブミックスの出力を音場サブミックスに送信して、そのサブミックスの形式に関係なく自動的にエンコードできます。次のグラフでは、通常のダウンミックスしたサブミックスの出力を Oculus Audio バイノーラル オーディオ ストリームとミックスしてから、さらにその出力を別の非音場サブミックスに送信します。

Send_to_nonsoundfield_submix.png

ソースをサブミックスに送信すると、そのサブミックスの形式にダウンミックスされることに注意が必要です。

たとえば、オーディオ ソースを MyOculusSubmix に送信することで取得した空間情報は、その出力を StandardSoundSubmix のみに送信する場合は失われます。

音場エンコードの互換性

音場エンコード形式に互換性がない場合もあります。たとえば、Oculus Audio の音場形式を使用するサブミックスと、Google Resonance 音場サブミックスは、互いに接続できません。

Incompatible_submixes.png

ただし、必要に応じて出力をプロジェクト内のこうした音場サブミックスに送信できるソースもあります。

まとめ

4.25 のネイティブ アンビソニックス レンダリングと音場サブミックスは、Unreal Engine の空間オーディオ パイプラインでデベロッパーがすべてを制御して拡張するための大きな前進です。今後さらに多くの音場形式をシステムに追加する予定です。それまでに音場形式を独自に記述する場合は、 Audio Extensions モジュールの ISoundfieldFormat.h を確認してください。

Unreal Engine のドキュメントを改善するために協力をお願いします!どのような改善を望んでいるかご意見をお聞かせください。
調査に参加する
閉じる