Unity向け立体音響SDKをいろいろ試す
以下のSDKを試してみた。
- Oculus Integration
- Resonance Audio
- Steam Audio
- Microsoft Spatializer
Oculus Integration
まず、Oculus IntegrationをUnity Asset Storeで入手して使ってみる。
※M1 Macでインポートできない
Unityプロジェクト内でOculus Integrationをインポートしようとするとクラッシュする。
SpatializerがM1 Macに対応してないのが原因かも。
※Windowsならインポートできた
Windowsでプロジェクトを作り直したらインポートできた。
というわけで、Oculus Integraionを試した作業環境は以下の通り。
- Windows 11
- Unity 2021.3.16f1
- Oculus Integration 47.0
インポート&シーン作成
- Oculus Integrationをインポートする際に、Spatializerのフォルダのみにチェックを入れてインポートする(他のフォルダにもチェックを入れると、OpenXR関連でエラーが発生した)。
- こちらの記事( https://xrdnk.hateblo.jp/entry/2020/07/02/224809 )の「手順」を参考に、Audioの設定をする。
2-1.Edit > Project Settings > Audio
を開く。
2-2. DSP Buffer SizeをBest latencyにする。
2-3. Spatializer PluginをOculusSpatializerにする。 - 音源となるオブジェクトを作成し、Audio SourceとONSP Audio Sourceスクリプトをアタッチする。ONSP Audio Sourceスクリプト内のOCULUS ATTENUATIONのEnabledにチェックを入れる。
- 音を受け取るオブジェクト(自分の場合はAR Camera)にAudio Listenerをアタッチする。
ボタンを押すと音の鳴るオブジェクトが目の前に配置されるARアプリを制作した。
Pixel 4a(Android 13)で試してみる。
オブジェクトを配置してからその周りを動いてみたり近づいたり離れたりしてみると、確かに音の方向や大小が変化した。無事実装完了。
Resonance Audio
次に、Resonance Audioを以下のGitHubからダウンロードして使ってみる。
作業環境は以下の通り。- macOS Monterey (M1)
- Unity 2021.3.16f1
- Resonance Audio SDK for Unity v1.2.1
インポート&シーン作成
こちらの公式ガイドを参考にしながら、シーンを作成する。
- ダウンロードしたパッケージをインポートする。このとき、以下のようなScript Updating Consentというウィンドウが表示されたので、Yesをクリックする。
また、「"audiopluginresonanceaudio.bundle"は、開発元を検証できないため開けません。」というウィンドウも表示されたので、システム環境設定 > セキュリティとプライバシー > ダウンロードしたアプリケーションの実行許可
から「このまま開く」をクリックする。
- Audioの設定をする。
2-1.Edit > Project Settings > Audio
を開く。
2-2. Spatializer PluginをResonance Audioにする。
2-3. Ambisonic Decoder PluginをResonance Audioにする。 - 音源となるオブジェクトを作成し、Audio SourceとResonanceAudioSourceスクリプトをアタッチする。公式のサンプル(
Assets > ResonanceAudio > Demos > Scenes > ResonanceAudioDemo
)の設定に倣って、AudioSourceの- OutputにMaster(ResonanceAudioMixer)を登録する。
- Spatialize、Spatialize Post EffectsとBypass Reverb Zonesにチェックを入れる。
- Spatial Blendを1にする。
- 音を受け取るオブジェクト(自分の場合はAR Camera)にAudio ListenerとResonanceAudioListenerスクリプトをアタッチする。公式サンプルの設定に倣って、ResonanceAudioListenerのOcclusion MaskでIgnore Raycastのチェックを外す。
ボタンを押すと音の鳴るオブジェクトが目の前に配置されるARアプリを制作した。
iPhone8(iOS 15)で試したら、無事動いた。
Steam Audio
次に、Steam Audio(Unity Plugin)を以下のサイトからダウンロードして使ってみる。
作業環境は以下の通り。- macOS Monterey (M1)
- Unity 2021.3.16f1
- Steam Audio SDK 4.1.2
インポート&シーン作成
こちらの公式ガイドを参考にしながら、シーンを作成する。
- ダウンロードしたファイルの中からSteamAudio.unitypackageをインポートする。
- Audioの設定をする。
2-1.Edit > Project Settings > Audio
を開く。
2-2. Spatializer PluginをSteam Audio Spatializerにする。
2-3. Ambisonic Decoder PluginをSteam Audio Ambisonic Decoderにする。 - 音源となるオブジェクトを作成し、Audio Sourceをアタッチする。Audio SourceのSpatializeにチェックを入れて、Spatial Blendを1にする。
- 音を受け取るオブジェクト(自分の場合はAR Camera)にAudio Listenerをアタッチする。
ボタンを押すと音の鳴るオブジェクトが目の前に配置されるARアプリを制作した。
iPhone8(iOS 15)で試したら、無事動いた。
→(2024/10/22 追記) Steam AudioはiOSには対応していないので、iOSアプリでは立体音響が正しく機能していなかった。
Microsoft Spatializer
次に、Microsoft Spatializerを以下のGitHubからダウンロードして使ってみる。
Macには対応してなさそうなので、Windowsで実装する。作業環境
- Windows 11
- Unity 2021.3.16f1
- Microsoft Cross-Platform Spatializer Plugin v2.0.37
インポート&シーン作成
こちらの公式ガイドを参考にしながら、シーンを作成する。
- ダウンロードしたパッケージをインポートする。
- Audioの設定をする。
2-1.Edit > Project Settings > Audio
を開く。
2-2. Spatializer PluginをMicrosoft Spatializerにする。 - Microsoft Spatializer Mixerをプロジェクトに追加する。
3-1. Assetsフォルダを右クリックしてCreate > Audio Mixer
をクリックし、Audio Mixerを作成する。
3-2. 作成したAudio MixerをダブルクリックしてAudio Mixerウィンドウを開く。ウィンドウ内のAudio Mixerを右クリックしてAdd effect at bottom > Microsoft Spatializer Mixer
をクリックする。
- 音源となるオブジェクトを作成し、Audio Sourceをアタッチする。Outputに先ほど作成したAudio Mixerを登録する。Audio SourceのSpatializeにチェックを入れてSpatial Blendを1にする。
- 音を受け取るオブジェクト(自分の場合はAR Camera)にAudio Listenerをアタッチする。
ボタンを押すと音の鳴るオブジェクトが目の前に配置されるARアプリを制作した。
Pixel 4a(Android 13)で試したら、無事動いた。
以上、立体音響SDKを4つほど試した。どれを使っても基本的な立体音響は実現できた(ただしOculus IntegrationとMicrosoft SpatializerはWindowsのみ対応と思われる)。応用機能はそれぞれのSDKによって異なってそうなので、引き続き調べて比較してみたい。