在拜访了AimSound之后,我们用UE4实现了一套免费声音解决方案。达到一些原本用UE4无法达到的设计效果。
效果1:固定声源在人朝向不同的时候,左右耳渲染出方向感;
效果2:实现游戏中根据遮挡物和距离动态设定声源发出声音的Lowpass。
操作系统:Win10
游戏引擎:Unreal Engine 4.12.5
FMOD的UE4插件: FMOD Studio UE4 Engine Integration for Windows/Android, 版本号fmodstudio10809ue4.12win64
声音引擎:FMOD Studio 1.08.09
声音算法插件:Oculus Audiosdk_1.0.4
安装解压过程省略,从部署插件开始说起
I. 部署插件
首先需要将Oculus插件部署到FMOD,然后需要将FMOD插件部署到UE4中。
I.I 将Oculus插件部署到FMOD
先建立FMOD工程,然后保存FMOD工程。退出FMOD后,打开FMOD工程目录(不是FMOD目录)。我的是F:\FMODProj\SoundTweak,在这个文件夹下建立“Plugin”文件夹
image.png
将\audiosdk_1.0.4\AudioSDK\Plugins\FMOD\Win32这个文件夹拷进去
image.png
然后再次运行FMOD工程,就有了一个新的Effect: OCULUS SPATIALIZER
OCULUS SPATIALIZER
I.2 将FMOD插件部署到UE4
首先把FMOD的UE4插件放入引擎的插件目录(也可以放在项目的Plugins文件夹里)
解压出的插件文件
拷贝到引擎中Plugins文件夹
然后启动 UE4,选择 Edit->Project Settings->Plugins->FmodStudio
插件设定
需要注意的是上图中Advanced-Plugin Files,这些文件并不在你的FMOD的UE4插件中,需要手工导入到相应目录。由于我们准备发布到PC64位,所以就把文件都复制到下图中的这个文件夹中下面的几个文件都需要拷贝到这里!
具体有哪些呢?第一个文件 ovrfmod 的来源是从Oculus Audio SDK里来,32或者64根据项目实际情况来。我用的是x64文件夹。这个是必须装的,把它放入上图的引擎中FMOD插件文件夹中的相应位置
ovrfmod 就在这里!!
然后是fmod_gain和fmod_distance_filter(最后,我没有装,那么上图(插件设定)中也要去掉Advanced->Plugin Files里面的1和2), 这两个不知道装了有什么用。但是好像是需要装的。 如果你不装,也没关系。需要强调的是,这两个文件是在FMOD软件的安装目录找到的。这个关于打包的问题这里没有讲完,最后一段是打包后的检查工作,以确保FMOD的Bank在打包运行时候能被读取和应用。
fmod_gain和fmod_distance_filter 在这里!!
2. FMOD生成Bank和Event
我们需要把Wav文件封装到FMOD里去,暴露出事件和参数接口。先启动FMOD
2.1 导入Wav

2.2 拖拽素材到Event中

2.3 依次放到Master Bank里

2.4 添加参数Occlusion

2.5 选择Event,添加FMOD Lowpass Simple 效果器

2.6 添加曲线,用于调整参数与Lowpass之间的关系

2.7 单击添加的轨道的任意一处,加点

2.8 拖拽白色时间轴,调整点。根据效果调整。

2.9 如果想循环播放,可以这样加上循环命令

2.10 别忘了保存后(过程省略)再Build

2.11 从FMOD工程里找到Build导入到UE4的工程中去

3. UE4中播放Bank声音
打开UE4,这时候发现虽然新建了一个文件夹,但是里面会显示出有4个文件夹。如图
这里能看到我们的Event
3.I 建立播放类
|变量名|变量类型|变量初值|
| :-------------: |:-------------:|:-------------:|
| FMODEvent | FMODEvent |None(Editable)|
| FMODInstance | FMODEvent Instance |None|
| LastNoOcclusionPos | Vector |0,0,0 |
3.2 初始化方法

3.3 调整Occlusion,注意拼写和大小写

3.4 利用射线做遮挡
如果射线找得到玩家,那么没有遮挡;如果射线照不到玩家,开始计算遮挡。

3.5 打包检查
上图是我的插件位置,下图是的打包出来的文件。我们需要确保这几个dll都有,如果没有,从上图拷贝到下图就可以了。这个步骤很重要。

参考资料
VR 游戏音频设计
An idiots guide to using the Oculus SDK with FMOD
网友评论