Closed6

Meta XR Audio SDKを試す

Ekito|駅人Ekito|駅人

Audio Sourceの空間化

以下の記事に沿って、Audio Sourceからの音が立体的に聞こえるようにする。
https://developers.meta.com/horizon/documentation/unity/meta-xr-audio-sdk-unity-spatialize
以前Oculus IntegrationのSpatializerを試した際M1 Macでは使えなかったが、Meta XR Audio SDKはM1 Macでも使える。
https://zenn.dev/link/comments/c9e6346d7414e3

また、MetaXRAudioSource.csMetaXRAudioSourceExperimentalFeatures.csをAudio Sourceにアタッチすると、より多くのパラメータを制御できるようになる。ただし、反射音や残響音を生成するには、後述する音響モデルの設定をする必要がある。

MetaXRAudioSource.csで制御できるパラメータ

  • Enable Spatialization: 空間化の有無を切り替える。基本的に有りのままにする。
  • Gain Boost dB: 音量を上げられる。
  • Enable Acoustics: 反射音や残響音の有無を切り替える。ただ、有りにするとCPUを消費する。
  • Reverb Send dB: 後部残響音/後期残響(late reverberation)の大きさを調整する。

MetaXRAudioSourceExperimentalFeatures.csで制御できるパラメータ

  • HRTF Intensity: HRTFを適用する度合いを調整する。0にすると基本的にステレオパンに簡略化される。
  • Volumetric Radius: 音源を球体と見た際の半径を調整する。通常音源は点(つまり半径0)として扱われるが、半径が0より大きい球体として扱った場合その球体の中に入ると音源から聞こえる音が周囲全体に拡散する(つまり球体の中心から聞こえる感覚が薄まる)。

Volumetric Radius 関連記事

https://developers.meta.com/horizon/blog/volumetric-sounds/

  • Early Reflections Send dB: 初期反射音(early reflection)の大きさを調整する。
  • Reverb Reach: 距離に応じて直接音と残響音の比率がどの程度増加するかを調整する。0だと残響音は直接音とともに減衰するが、1だと直接音が減衰するに従って残響音は増加する。
  • Occlusion Intensity: オクルージョンの強さを調整する(ただし後述するAcoustic Ray Tracingモデルの使用時のみ)。1だと音源が物陰に隠れている場合完全に音が遮られる。
  • Directivity Intensity: 指向性の強さを調整する。1に近づくほど指向性が高くなる(ただしDirectivity PatternHuman Voiceに設定している場合のみ)。
  • Directivity Pattern: Human Voiceに設定すると、音源が指向性を持つ。
  • Direct Enabled: 直接音の有無を切り替える。
Ekito|駅人Ekito|駅人

室内音響

https://developers.meta.com/horizon/documentation/unity/meta-xr-audio-sdk-unity-room-acoustics

2つの音響モデルが提供されている。

  • Shoebox Room: 長方形の部屋における音響を手動で制御する。比較的負荷が軽い。
  • Acoustic Ray Tracing: 制御のプロセスを自動調整することでより自然な音響をつくり出す。

Shoebox Room

以下の記事を参考に、反射音や残響音を生成する。
https://developers.meta.com/horizon/documentation/unity/meta-xr-audio-sdk-unity-room-acoustics#prerequisites

シーン内の1つのGameObjectにMeta XR Audio Acoustic Propertiesをアタッチすると、音響シミュレーションのための直方体の部屋が配置される(Game Viewには表示されない)。

Lock Position To Listenerをtrueにすると、部屋の中心はAudio Listenerがアタッチされているオブジェクトになる。通常はMain CameraにAudio Listenerがアタッチされているので、部屋はMain Cameraに追従することになる。falseにすると、部屋の中心はMeta XR Audio Acoustic Propertiesがアタッチされているオブジェクトになる。

部屋のスケールを調整したり壁などのマテリアルを選択することができ、これらは反射音や残響音の生成に影響する。

Acoustic Ray Tracing

公式ウェブサイト

https://developers.meta.com/horizon/documentation/unity/meta-xr-acoustic-ray-tracing-unity-overview/

以下の記事に従って設定する。
https://developers.meta.com/horizon/documentation/unity/meta-xr-acoustic-ray-tracing-unity-getting-started#implementation

  • 空のGameObjectを配置してMeta XR Acoustic Geometryをアタッチし、シーン内の3Dオブジェクトをこの子オブジェクトにする。
  • もう一つ空のGameObjectを配置してMeta XR Acoustic Mapをアタッチし、Bake Acousticsをクリックする。これにより、シーン内の3Dオブジェクトで構成された空間に基づいて音響シミュレーションが行われる。

マテリアル

https://developers.meta.com/horizon/documentation/unity/meta-xr-acoustic-ray-tracing-unity-material

各3Dオブジェクトに音響シミュレーション用のマテリアルを設定できる。

  • Acoustic Material Propertiesアセットを作成する。Built-inのプリセット(レンガやカーペットなど)を選択するか、周波数ごとの吸収率などを自分で設定する。
  • 3DオブジェクトにMeta XR Acoustic Materialをアタッチし、作成したAcoustic Material Propertiesアセットを選択する。

コントロールゾーン

https://developers.meta.com/horizon/documentation/unity/meta-xr-acoustic-ray-tracing-unity-control-zone

コントロールゾーンを配置すると、そのゾーン内で残響時間(RT60)や残響レベルを調整することができる。

  • GameObjectにMeta XR Acoustic Control Zoneをアタッチする。
  • コントロールゾーンのTransform(Position, Rotation, Scale)はアタッチされたGameObjectのTransformによって決まる。

このスクラップは15日前にクローズされました