【Quest开发】空间音频的使用

软件:Unity 2022.3.51f1c1、vscode、Meta XR All in One SDK V72

硬件:Meta Quest3

用到的是这个Meta XR Audio SDK,导入了Meta XR All in One SDK的应该不用再导入这个了,本身就包括了这个sdk的。

官方文档:https://developers.meta.com/horizon/documentation/unity/meta-xr-audio-sdk-unity-req-setup

贴一下介绍

Meta XR Audio SDK 提供空间音频功能,包括基于头相关传递函数 (HRTF) 的对象和环绕声空间化,以及房间声学模拟。

在三维空间中定位音频源的能力是我们体验声音的基本要素。空间化是指修改声音使其可定位的过程,使声音听起来仿佛来自相对于听众的不同位置。它是在虚拟现实游戏和应用中营造临场感的关键,而 Meta XR Audio SDK 简化了实现这一目标的过程。

区分(粗糙理解):

空间化音频------能感受到声音的方位,其实和Unity自带的空间化音频作用差不多哈,就是能感受到声音远近高低各不同。

房间声学模拟------能体会到声音所处的环境,举例来说,有点像音乐软件里的音效效果,不是有大厅、KTV、教堂...这样的效果吗,差不多就是这样,其实用Au也能做,只是这个可以自定义房间大小、墙壁材质啥的,胜在可编辑性。

怎么说呢,我个人认为这个插件不是那么必须,特别是你没有长期或者大批量调整声音的需求的话,还不如用Au调好丢到Unity里。不过还是记录一下怎么使用。

一、项目设置

Edit > Project Settings > Audio配置如下

将默认扬声器模式设置为立体声。将 DSP 缓冲区大小设置为最佳延迟,以设置平台支持的最小缓冲区大小,从而减少整体音频延迟。

二、空间化音频

1、找到你需要发出声音的物体,Add Component搜索MetaXRAudioSource,添加后会自己附带AudioSource

2、配置Audio Source

3、根据需求配置MetaXRAudioSource

ps.下面这个表和上面的属性顺序是反的,上面是空间化在前,下面是声学在前

这里面就Reverb Send dB要难理解点,需要结合音频方面的知识,直达声是音源直接发出到达听者的声音,反射声是音源发出的声音经过其他物体反射传递到听者的声音(也就是混响),把Reverb Send dB调大,反射声就会变大,设定数值过高会覆盖掉直达声。

我们还没开始配置声学room,只需要空间化的同学记得把Enable Acoustics关掉。

4、官方文档还说可以加一个MetaXRAudioSourceExperimentalFeatures,不过我没测试过作用,也没添加,这里贴一个属性表(机翻,看不懂的地方最好对一下英语),感兴趣的同学自己调调。

5、戴上头盔运行了测试一下,四处走动一下,能听出来明显差别。

三、声学房间

1、只有启用了 "启用声学""启用空间化" 设置的源才会生成声学效果。这些设置默认启用,但可以通过检查连接到音频源的 Meta XR 音频源组件是否存在来验证。

2、设置音频混音器 Audio Mixer

字面意思,把传进去的音频混音,步骤如下

1)打开窗口

2)添加混音器

3)在混音器里添加需要的效果,我只需要房间反射效果,只加了这个效果

添加后点击这个Master在Inspector就出现了新属性

属性值如下

大家自己调调就明白效果了,我自己也没摸得特别清楚

3、将设置好的混音器添加到自己的音源里

4、设置声学房间模型

这里meta给了两个选项

  • "MetaXRAudioRoom" components adjust the Shoebox Room
    "MetaXRAudioRoom"组件调整 Shoebox Room
  • "MetaXRAcoustic" components adjust the Raytraced Acoustics
    "MetaXRAcoustic"组件调整光线追踪声学(类似射线反射吧)

我只研究了一下较简单的鞋盒房间(就是长方体房间)

创建一个空物体,添加Meta XR Audio Room Acoustic Properties组件

这就是我们的鞋盒了,房间越大,混响尾音就越长,而材质越硬,房间的混响效果就越强(混响越响亮)

属性释义如下

这里面就第一个 Lock Position To Listener比较绕,实验了一下,锁定就是声学房间会跟着摄像机动,取消勾选就可以自己决定位置。

这时候会有聪明的同学在想是不是能在一个场景里创建多个这样的鞋盒了。然而并不能,一个场景只能有一个鞋盒

If a scene has multiple rooms, and you would like to have different acoustics in each room, the properties of the Room Acoustics component can be updated at runtime.

如果场景中有多个房间,并且您希望每个房间都有不同的音响效果,则可以在运行时更新房间音响组件的属性。
There should only ever be one instance of the Room Acoustics component in a scene. Updating its properties (for example, changing the width, height, and depth) will immediately change the reflections and reverberation applied to sound sources. This effectively creates the illusion of moving from one room to another.

每个场景中只能有一个"房间声学"组件实例。更新其属性(例如,更改宽度、高度和深度)会立即改变应用于声源的反射和混响。这有效地营造出从一个房间移动到另一个房间的错觉。
Determining when to update the properties is left to the developer. One option is to use invisible colliders placed in different parts of a scene that trigger a change in the properties when a player enters them.

何时更新属性由开发者决定。一种方案是使用放置在场景不同位置的隐形碰撞器,当玩家进入时触发属性的变化。

所以想要模拟多房间的同学,要勾选 Lock Position To Listener,然后在碰到新房间的触发器时,把新房间的属性传给这个鞋盒房间,实现切换房间的效果

材质反射系数表官方有给出,太多了我只截了一部分

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

四、步骤总结

想要制作具有空间感和房间声学反射的音频效果,需要给发出声音的物体添加MetaXRAudioSource,勾选空间化和调整空间混合系数,在场景里用Meta XR Audio Room Acoustic Properties制作鞋盒房间,在游戏里播放音源即可。

相关推荐
ykjhr_3d1 小时前
沉浸式 VR 汽车之旅:汽车虚拟展厅与震撼试驾体验
汽车·vr
ykjhr_3d1 小时前
VR 汽车:引领生产与设计的革命性飞跃
汽车·vr
若苗瞬3 小时前
为(FramePack)的视频生成添加首尾帧功能
音视频·图生视频·framepack·首尾帧·尾帧
EasyDSS5 小时前
EasyRTC嵌入式音视频实时通话SDK助力AI与IoT智能硬件打造音视频交互多场景应用
人工智能·音视频
AgilityBaby5 小时前
UE5 C++动态调用函数方法、按键输入绑定 ,地址前加修饰符&
开发语言·c++·3d·ue5·游戏引擎
Magnum Lehar5 小时前
vulkan游戏引擎核心vulkan_types.inl实现
服务器·前端·游戏引擎
万里不留行7 小时前
定时清理流媒体服务器录像自动化bash脚本
服务器·自动化·bash·音视频
向宇it8 小时前
【unity游戏开发——编辑器扩展】EditorUtility编辑器工具类实现如文件操作、进度条、弹窗等操作
ui·unity·c#·编辑器·游戏引擎
lqj_本人12 小时前
鸿蒙OS&UniApp 开发支持图片和视频的多媒体展示组件#三方框架 #Uniapp
uni-app·音视频·harmonyos
zhangfeng113312 小时前
绘制音频信号的各种频谱图,包括Mel频谱图、STFT频谱图等。它不仅能够绘制频谱图librosa.display.specshow
音视频