欢迎光临散文网 会员登陆 & 注册

Wwise+UE4踩坑笔记

2021-09-15 16:29 作者:kkxszz  | 我要投稿

平时慢慢攒下来的各种小坑吧,持续更新,不对的地方欢迎指正~


1. 自带的Occlusion系统(不是Spatial Audio那套)

手动添加的Ak组件、Wwise预制的AkAmbientSound蓝图、Wwise预制的动画notify播放音频时自动生成的Ak 组件,都有可以单独设置的Occlusion设置。

 

默认设置的检测通道是Visibility(所有可视的物体都会遮蔽声音)

检测间隔0.2秒(改成0是关闭此功能

AK组件的Details


什么设置都不做的话,播放的音频会根据摄像机是否能看到该物体进行遮蔽。(在Wwise里关闭Occlusion也可以解决此问题, 如果想要善用此功能可以做具体的设置)

 

工程设置里面可以设置默认的Occlusion Channel (影响通过Post Event等节点临时生成的Akcomponent,不影响已经存在的akcomponent)

Integration Settings

AkComponent.cpp里可以修改默认刷新时间 (影响通过Post Event等节点临时生成的AkComponent,不影响已经存在的AkComponent)

AkComponent.cpp


2. Animation

在动画上预览声音通知的时候,经常会出现3D声音听不到的情况,这种时候右键动画预览场景更新一下相机位置,就可以听到了……

AnimNotify_AkEvent 这个通知【打勾follow时】会在人物的mesh component下寻找ak组件,寻找不到的话会临时挂一个AkComponent使用。如果用这个通知的话最好提前在mesh component下挂好ak。(但是它预览的时候还是找不到的,有点蛋疼)。【不打勾follow】时,它就是一个定点播放的音效,不用到ak组件。

 

3. 触发音频的节点的混用注意事项(Post event /post ak event/ post event at location 等)

使用Post Event时,会在所选Actor下生成一个AkComponent并使用;

使用Post Ak Event时,会使用所选的AkComponent;

使用Post Event At Location时,会使用WwiseGlobal;

Animation 上使用的AnimNotify_AkEvent,打勾’Follow’的话效果同’Post Event’,不打勾’Follow’的话效果同’Post Event At Location’

AnimNotify_AkEvent 通知

Set Switch和Set RTPC也都有指定Ak的版本(节点名字是一样的,target不一样)。

 

经测试,自动生成的AkComponent和手动添加的Ak无法被另一种使用方式识别,因此设定rtpc和switch的时候要注意,最好不要把target为actor的节点和target为ak的节点混用。

 

另外,RTPC有全局/object两种用法,设置全局时actor不要连即可。当局部有赋值时,全局数值会被忽略,这一点也要注意一下。

 

Post Event和Post Event At Location有异步加载的版本(好像直接使用打包之后会有问题)。自行使用Async Load Asset来做异步加载,需要做特殊处理,不然打包之后资源无法正常播放。

 

 

4. AK Switch/State/RTPC 类

在前几个版本(2.6之前?)中无法作为一个类填在DataTable里(更低版本蓝图里也不能使用这个变量),此时只能使用name,升级到后期版本之后可以直接引用这些类,会方便很多。 用了AK Switch Object和Ak State Object后,Set State/Set Switch节点不再需要GroupName。

 

不需要填Group


 

5. EBP相关

 

首先,能不用的话,尽量不要用。(Wwise 2019.2.x早期版本会默认开启,记得检查设置)对于已经使用和不得不使用的情况,强烈欢迎大家多多分享遇到的坑以及解决办法。这里仅分享个人经验。

 

设置:

Edit > Project Settings > Wwise > Integration Settings  (这个页面在不同Wwise版本差别较大)以下是设置参考

Integration Settings
User Settings

Wwise里也需要修改Project Settings里的设置。Generate Per Bank Metadata File还有Include GUID需要选。

Project Settings


因为关闭了自动同步,所以进行生成音频资源的步骤是:

1)保存Wwise工程   2)UE中Build—Force Asset Synchronization  3)Generate Sound Data

Build界面

开启EBP时,建议禁用Split Switch Container Media,原因如下

 

EBP的异步加载相关:(常见问题:打包后播放音频显示Event Id Not Found)

AkEvent只是一个壳子,它的资源是所引用的Media。加载AkEvent的时候自动会加载其Meida,但是没有回调,只提供IsMediaReady用来判断是否加载完。

AkAudioEvent.h


用EBP时需要版本控制Ignore以下文件夹(Wwise工程目录下):

.cache/*

GeneratedSoundBanks/*

 

EBP的各种其他小问题:

1. 打开UE工程一直显示Cannot create asset in.... 或者存在同名akevent,无法进行其他操作(无法clear)。

1)关掉UE引擎,回滚版本控制的Content/WwiseAudio(或者自定义路径)文件夹至上一个无错误版本,重新generate。过程中保证自己的Wwise工程不受影响。

2)如果没有解决,检查之前回滚的重命名之类的操作有没有导致多余的uasset存在,可以手动删除。

3)再没有解决,【暴力方法】删除所有的EBP生成的资源(服务器里面也删除),重新生成并上传。(我这样干过,没丢引用。小心使。)

 

2. Generate Sound Data的时候会Checkout(更新)过多的文件;或者很大一部分莫名其妙的报错;或者GenerateSoundData时没有报错但是无法正常生成资源

1)检查UE工程设置里的Wwise > User Setting > Installation 里的Wwise安装路径是否正确、是否是同一个Wwise版本

2)检查UE工程设置里的Wwise > Integration Settings里的 Wwise Project Path 是否正确。Sound Data里的设置是否和原来一样。

3)检查Wwise工程目录下的.cache文件夹以及GeneratedSoundBanks文件夹是不是被版本控制改成了只读。


3. 一个音频源的多个复制体,如果Stream的开关不一样的话,会造成播不出来的情况。因为它们在UE里面是一个Media,不支持同时stream和非stream。这个在使用时要避免。

 


6. 平台设置:

打包到平台上发现没有声音(PS5的报错内容为 “Error :InitAudioOutContext:Failed sceAudioOut2ContextCreate with MaxObjectPorts 128, maxPorts 16,numGrains 512,queueDepth 4 ……”),很大原因是Wwise被UE的该平台原生音频系统挤掉了,需要进行禁用,具体参考下图:

 

 

PS5Engine.ini里面则是修改为

AudioDeviceModuleName=””

AudioMixerModuleName=””

UseAudioMixer=false

 

 

7. Spatial Audio 已知的坑

1. Room和其中的物体上的ak组件的加载先后问题。不动的物体需要在Room加载完之后再更新一下位置,不然无法识别和Room关系。(编辑器中无此问题)

2. 用了这套就别忘了关掉所有ak组件上的Occlusion。

3. AkGeometry无法加在普通的StaticMesh Actor上,所以应用限制还是比较大。

 


Wwise+UE4踩坑笔记的评论 (共 条)

分享到微博请遵守国家法律