【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制作鞋盒房间,在游戏里播放音源即可。

相关推荐
淡海水1 小时前
16-03-C#数据结构源码-附录C-参考资源
unity·c#·游戏引擎·il2cpp
2601_962381131 小时前
做城市历史视频时,AI 自动生成变迁动效的实现路径拆解
人工智能·音视频
天神哥哥啊2 小时前
unity联调注意事项-安卓
android·unity·游戏引擎
天神哥哥啊2 小时前
unity联调注意事项-IOS
unity·ios·游戏引擎
TK泰妞2 小时前
爆款视频怎么改成TikTok带货内容?
人工智能·prompt·音视频
吴声子夜歌2 小时前
HTML——富媒体资源元素(音视频)
html·音视频·媒体
音视频牛哥11 小时前
四足机器人如何做好智慧电力巡检?从低延迟图传到可信巡检数据闭环
音视频·四足机器人·智慧电力巡检·whip whep·机器人巡检·工业音视频巡检·智能电力巡检技术方案
美狐美颜sdk12 小时前
直播APP接入美颜SDK后出现卡顿怎么办?从性能瓶颈寻找解决方案
android·人工智能·音视频·美颜sdk·直播美颜sdk
美狐美颜SDK开放平台13 小时前
直播APP开发实战:从摄像头调用到视频美颜sdk集成
android·人工智能·计算机视觉·音视频·直播美颜sdk
可爱系程序猿13 小时前
Unity 材质预览才弹 d3dcompiler_47.dll?先分清编辑器 SDK、着色器缓存和玩家包
程序人生·3d·unity·电脑·材质