

Wwise&Unity的有机结合(应用篇)
郡墙
Programmer
阅读 941
2020年2月5日
接续上篇的Wwise集成,本篇将分享Unity与Wwise引擎的场景应用思路
3D声像的设计
什么是声像?
声像是指乐器在声场中的发声位置点。
事情并没有这么简单,那么人耳是如何听声辨位的呢?
举几个例子
如下图所示,在理想环境中,左右前方各有一个音响,同时以相同的音量播放相等的音频信号。
那么你会感觉声音是从正前方传来的。

实验一:将右边音箱的音量逐渐加大,你就会感到声像位置逐渐向这个音箱偏移。当两个音箱的声级差超过了15分贝的时候,你就会感到声像几乎完全被固定在右边的音箱上。 这说明了,人是靠两耳得到的声音的声级差来辨别声音的方位的。
实验二: 将右边的信号延时播放,并逐渐加大延时量,随着两个音箱所发出的声音之间的时差逐渐加大,你会感到,声像逐渐向左边的音箱偏离。当两个音箱之间的时超过3毫秒后,你就会感到声像是在左边的音箱上了。但事实上,两个音箱的音量是一样的。也就是说,在3~30毫秒的范围内,人耳会将声源的位置确定在首先到达耳朵的那个声源上。这就是声学上著名的“哈斯效应”。如果延迟达到50毫秒以上,你仍然感觉到声源是从未经延时的音箱上来的,但能感到这个声音之后有一个回声。
双耳效应是人们依靠双耳间的音量差、时间差和音色差判别声音方位的效应。声音强弱不同时,可感受出声源与听音者之间的距离。
如何设计角色扮演类的声像
在RPG品类的游戏中,一般是由第三人称的相机视角来渲染画面的。
因此听觉效果3D位置有以下特点:
位置使用角色位置
朝向使用相机朝向
法向使用角色法向
如下图所示

示意代码:
using UnityEngine;
[ExecuteInEditMode, AddComponentMenu("Wwise/AkGameObj3rdPersonCam")]
public sealed class AkGameObj3rdPersonCam : AkGameObj
{
private Transform _CameraTra;
private Vector3 _CacheForwad;
protected override void Awake()
{
_CameraTra = Camera.main.transform;
_CacheForwad = _CameraTra.forward;
_CacheForwad.y = 0;
base.Awake();
}
public override Vector3 GetForward()
{
var x = _CameraTra.forward.x;
var z = _CameraTra.forward.z;
var dst = Mathf.Sqrt(x * x + z * z);
_CacheForwad.x = x / dst;
_CacheForwad.z = z / dst;
return _CacheForwad;
}
}
空间感的营造方式

距离衰减
在确定每一类音频类型、创作意图后,就需要划分每个音源的衰减层次。以便在混音后的声音更有层次感。
声椎衰减(音源朝向)
距离衰减解决了基于“面”的音频空间层次感的营造。但是这个还不够有变化。想象一下,在战场中有一个骑兵正迎面朝你冲锋,你背后的队友向别人发起冲锋,两者发出的声音是成一定夹角区间的音束,从而你能分辨出发声体的相对方位。
距离衰减与声锥衰减的配合设计,可以使声音的方位、层次更佳立体饱满,从而提升整体的听感体验。
SoundBank整合思路与内存管理
SoundBank是什么?存储了哪些信息?
在Wwise中,有两种类型的SoundBank:
Initialization Bank : 一个特殊的Bank文件,包含了Wwise工程所有的信息,例如:总线结构、State、Switche、RTPC。这个文件会在Wwise每次生产Bank文件时 自动 重新生成。 该文件必须要使用其他Bank之前加载,否则其他Bank将无法正常解析。(可以理解有基础依赖)
SoundBank : 该文件 可以存储 事件的详细信息、音频、其他插件所需要的数据结构。可以简单理解为是一个 数据存放的容器。 该文件可以在运行中自由的控制加、卸载。
如何合理的组织Bank以及规划Bank粒度
这个问题和 如何规划 Unity 的AssetBundle的问题很相似,管理方式也大同小异。
资源的规划和组织的粒度,需要依据项目类型、设计思路、程序技术来思考如何做到项目最优。
资源的组织大致可以分为 具体业务专属、游戏生命周期通用等。程序可以实现数据采集进行 数据分析给出资源组织和规划的动态规划最优解。
有需要讨论的小伙伴可以点赞,关注,互动~
Wwise&Unity的有机结合(集成篇)
发布于技术交流
推荐阅读

【Unity】SBP - Scriptable Build Pipeline
2022-04-12
阅读 2762

Editor GUI 编辑器入门
2019-11-08
阅读 2330

用好内置Attribute,让开发事半功倍[More efficient with Attribute]
2019-11-08
阅读 2063

关于 .so\.a\.dll库文件、 C\C++\OC\Java 交互 的始末
2019-11-08
阅读 1376

结合微信组件实现跨平台日志模块 [a reliable log component with high-performance]
2019-11-10
阅读 698

如何编写更 契合Unity 的高效代码?[efficiency coder with unity]
2019-11-11
阅读 2410
0条评论

问
AI
全新AI功能上线
1. 基于Unity微调:专为Unity优化,提供精准高效的支持。
2. 深度集成:内置于团结引擎,随时查阅与学习。
3. 多功能支持:全面解决技术问题与学习需求。

问
AI