最近Google VRを触っていなかったので、久しぶりに更新したら、VR空間での音の聞こえ方について、これまでの「Spatial Audio」から「Resonance Audio」への切り替えが始まっていたので、「Resonance Audio」について調べてみました。

Resonance Audioとは

前身の「Spatial Audio」と基本的には同じで、よりパフォーマンスとマルチプラットフォームに最適化された空間オーディオ(Spatial Audio)とされています。

使用した環境

使用した環境は以下のようになります。
名称バージョン
Unity2017.3.0f3 - 64bit
Google VR SDK for Unityv1.120.0
Resonance Audio SDK for Unityv1.1.1

組み込み方

Spatial Audioのときは、Google VR SDK for Unityをインポートすれば、機能はインポートされて設定を変更すれば使用できましたが、Resonance Audioは未だ(※)Google VR SDK for Unityには組み込まれていないので、別途パッケージをインポートした上で設定を変更する必要があります。
※ 2018.02.05現在

  1. Resonance Audio向けのUnity Packageをダウンロード・インポート
  2. こちらから最新の「Resonance Audio SDK for Unity」(執筆時はv1.1.1)をダウンロードします。
    Unity Packageなので、Unityプロジェクト毎にインポートする必要があるので、インポートしたいUnityプロジェクトを開き、以下のようにダウンロードしたUnity Packageをインポートします。

  3. オーディオプラグインをResonance Audioに変更
  4. Edit - Project Settings - Audioから以下のプラグインを「Resonance Audio」に変更します。

    • Spatializer Plugin
    • Ambisonic Decoder Plugin


  5. Google VR SDK for Unityに元から含まれるオーディオライブラリを削除
  6. 以下のファイルが不要になるので、Unityプロジェクトから削除します。ただし、以下のファイルは「Google VR SDK for Unity v1.20.0」と「Resonance Audio SDK for Unity v1.1.1」の組み合わせ向けなので、最新の情報はこちらから確認した方が良いです。
    プロジェクト内パス概要備考
    Assets/GoogleVR/Plugins/Android/libs/armeabi-v7a/libaudioplugingvrunity.soオーディオ用のライブラリ-
    Assets/GoogleVR/Plugins/Android/libs/x86/libaudioplugingvrunity.soオーディオ用のライブラリ-
    Assets/GoogleVR/Plugins/iOS/libaudioplugingvrunity.aオーディオ用のライブラリ
    Assets/GoogleVR/Plugins/x86/audioplugingvrunity.dllオーディオ用のライブラリ-
    Assets/GoogleVR/Plugins/x86_64/audioplugingvrunity.bundleオーディオ用のライブラリ-
    Assets/GoogleVR/Plugins/x86_64/audioplugingvrunity.dllオーディオ用のライブラリ-
    Assets/GoogleVR/Plugins/x86_64/libaudioplugingvrunity.soオーディオ用のライブラリ-
    Assets/GoogleVR/Plugins/iOS/GvrAudioAppController.hObjective-C向けのasset-
    Assets/GoogleVR/Plugins/iOS/GvrAudioAppController.mmObjective-C向けのasset-
    Assets/GoogleVR/Legacy/Resources/GvrAudioMixer.mixeraudio mixer asset-
    Assets/GoogleVR/Legacy/prefabs/Audio/GvrAudioRoom.prefabオーディオ用のprefab削除しなくても可
    Assets/GoogleVR/Legacy/prefabs/Audio/GvrAudioSoundfield.prefabオーディオ用のprefab削除しなくても可
    Assets/GoogleVR/Legacy/prefabs/Audio/GvrAudioSource.prefabオーディオ用のprefab削除しなくても可
    Assets/GoogleVR/Legacy/Editor/Audio/GvrAudioListenerEditor.csオーディオ用のscript削除しなくても可
    Assets/GoogleVR/Legacy/Editor/Audio/GvrAudioRoomEditor.csオーディオ用のscript削除しなくても可
    Assets/GoogleVR/Legacy/Editor/Audio/GvrAudioSoundfieldEditor.csオーディオ用のscript削除しなくても可
    Assets/GoogleVR/Legacy/Editor/Audio/GvrAudioSourceEditor.csオーディオ用のscript削除しなくても可
    Assets/GoogleVR/Legacy/Scripts/Audio/GvrAudio.csオーディオ用のscript削除しなくても可
    Assets/GoogleVR/Legacy/Scripts/Audio/GvrAudioListener.csオーディオ用のscript削除しなくても可
    Assets/GoogleVR/Legacy/Scripts/Audio/GvrAudioRoom.csオーディオ用のscript削除しなくても可
    Assets/GoogleVR/Legacy/Scripts/Audio/GvrAudioSoundfield.csオーディオ用のscript削除しなくても可
    Assets/GoogleVR/Legacy/Scripts/Audio/GvrAudioSource.csオーディオ用のscript削除しなくても可

  7. 既にSpatial Audioを使用しているUnityプロジェクトの場合、オーディオ系GameObject、Componentを差し替えます。
  8. 差し替え前差し替え後備考
    GvrAudioListenerResonanceAudioListener-
    GvrAudioSourceResonanceAudioSource-
    GvrAudioSoundfield-GvrAudioSoundfieldはResonance AudioではResonanceAudioSourceにて対応される
    GvrAudioRoomResonanceAudioRoom-

  9. AudioSourceとResonanceAudioSourceの結びつけ
  10. ResonanceAudioSourceを任意のGameObjectにアタッチすると、自動的にAudioSourceもアタッチされます。
    ただし、このままではAudioSourceから再生されるだけで、Resonance Audioによるサウンド効果は得られません。AudioSourceの「Output」をMaster(Resonance Audio)に変更する必要があります。

  11. Spatial Blendの変更
  12. AudioSourceの「Spatial Blend」はデフォルトで2Dになっているので、立体音響のために3Dに変更する。

  13. 音源のSpatialize、Spatialize Post Effectsの有効化
  14. Developer Guide for Resonance Audio for Unity」にはAudioSourceの該当パラメータを有効にすることが記載されていますが、これにより微妙にトラブルに見舞われました。
    事象としては、PrefabにResonanceAudioSourceをアタッチして自動的にアタッチされるAudioSourceの「Spatialize」を有効にすると再生してもその音源から音が聞こえないといった事象になります。
    PrefabにアタッチされているAudioSourceの「Spatialize」はデフォルト無効にしておき、スクリプト上で、AudioSource.Play実行後にAudioSource.spatialize、AudioSource.spatializePostEffectsを有効にすることで回避できました。同じような事象が発生したら試してみてください。
    ※ シーン上に初めからインスタンス化されているGameObjectに設定しているResonanceAudioSourceでは本事象は発生しませんでした。

サンプルアプリ

ここにサンプルアプリを置きました。 試してみる場合は、以下の手順で確認してみてください。
  1. ここから環境をクローン
  2. サブモジュールが2つ組み込まれているので、それぞれを取り込む
  3. ブランチをタグ"v0.0.6"に切り替える
  4. Unityでクローンした環境を開く
  5. "Google VR SDK for Unity"、"Resonace Audio SDK for Unity"用のパッケージをimport
  6. ここを参考にして不要なファイルを削除
  7. 環境をビルドし、アプリをインストール
  8. 起動するとメニューが表示されるので「Resonance Audio」を選択(大分選択し辛いです。この辺についても調査予定)
  9. タッチパッドをクリックすると灰色の直方体が表示され、そこから猫の鳴き声が聞こえます(直方体をクリックすると直方体が消えて、鳴き声も聞こえなくなります)

コメントの投稿