menu
版本
2022.1.18.8567
2024.1.3.8749
2023.1.11.8682
2022.1.18.8567
2021.1.14.8108
2019.2.15.7667
2019.1.11.7296
2018.1.11.6987
2017.2.10.6745
2017.1.9.6501
2016.2.6.6153
2015.1.9.5624
2024.1.3.8749
2023.1.11.8682
2022.1.18.8567
2021.1.14.8108
2019.2.15.7667
2019.1.11.7296
2018.1.11.6987
2017.2.10.6745
2017.1.9.6501
2016.2.6.6153
2015.1.9.5624
Wwise SDK 2022.1.18
|
以下是此页面的概要:
下表简要列出了 Spatial Audio Room 和 Portal 的特性,并根据声学现象进行了分组,同时说明了与之对应的 Spatial Audio 属性以及声音设计师如何将其用于工程。
声学现象 | Spatial Audio | Wwise 中的声音设计 |
---|---|---|
直达路径的衍射 |
|
|
漫反射场(混响) |
|
|
房间耦合: 相邻 Room 的漫反射场的混响空间化和衍射 |
|
|
透射 |
|
|
在 Spatial Audio Room 和 Portal 环境下,将利用抽象概念 Room 和 Portal 来管理听者之外其他房间的声音传播。另一 Room 内的发声体会通过多个 Portal 及与这些 Portal 关联的衍射将声音传播到听者;若无衍射路径,则通过声音对房间墙壁的透射来传播。对于需要传播的所有声音,确保在 Positioning 选项卡中选中 Enable Diffraction and Transmission 复选框。
对于相邻 Room 内的每个发声体,Spatial Audio 都会计算相连 Portal 最近边缘与 Shadow Boundary(阴影边界)的衍射角。有关详细信息,请参阅 衍射 章节。然后,将此衍射角(最大 180 度)映射为衍射系数 (0 ~ 100%),并提供给 Wwise 用户,以便从两种方式中选一种来设置对应音频变换。用户可为“发声体”游戏对象设置 Diffraction 值,也可设置内置游戏参数 Diffraction 值。
“发声体”游戏对象上的 Diffraction 值用于驱动设计工具中的曲线。在默认情况下,使用工程 Obstruction 曲线。您可以在 Project Settings 的 Obstruction/Occlusion 选项卡中加以设置,并利用其影响 Volume、LPF 和 HPF 来模拟音量和频率相关行为。工程 Obstruction 曲线会影响工程中的所有声音,所以使用起来不太灵活。不过,可在应用于声音的 Attenuation ShareSet 中创建自定义 Diffraction 曲线。
除此之外,还可使用 Diffraction 内置参数。为此,可创建游戏参数并在对应 Bind to Built-in Parameter 下拉菜单中选择 Diffraction。推送至该游戏参数的值的作用域由游戏对象界定,确保与发声体一一对应。然后,可结合使用 RTPC 来控制 Actor-Mixer 的属性。Output Bus Volume 和 Output Bus LPF 要优于基准 Volume 和 LPF,因为它们只会应用于直达信号路径,而不会应用于 Room 混响对应的辅助发送。
dangerous | 警告: 跟曲线相比,在使用内置参数时需要执行更多操作。内置游戏参数也只应用在适用于游戏对象的所有位置的单个值上。在设有多个值时,取最小值。如上文所述,在 Room 包含不止一个 Portal 时,会使用多个游戏对象位置。因此,不建议将内置参数用于此类场景。 |
另外,Spatial Audio 的声音传播模型还包括了 Room 的漫反射能量(作为 Room 对应 Auxiliary Bus 的输出)。Spatial Audio 会同时计算这部分的衍射(湿声衍射)。Spatial Audio 假定漫反射能量沿 Portal 垂直方向从 Room 向外渗透。因此,它会计算相对于 Portal 法向矢量的衍射角。此衍射值可以用在 Wwise 中,方式与发声体的干声路径相同。在使用内置游戏参数时,应结合使用 RTPC 来控制房间对应的辅助总线(通常用于总线的 Output Bus Volume 和 Output Bus LPF)。为了避免影响此混响与听者所在房间混响耦合的辅助发送路径,最好选用总线的 Output Bus Volume 属性,而不要选用 Bus Volume 属性(情形与 Actor-Mixer 相同)。
在完成 Spatial Audio 的初始化设置 AkSpatialAudioInitSettings::bCalcEmitterVirtualPosition
后,将修改听者相邻 Room 内发声体的位置,使其与听者之间呈衍射角(如适用)。在以下 3D Game Object Profiler(3D 游戏对象性能分析器)截图中,听者 (Listener L) 位于 Portal 右侧,实际发声体 (Emitter E) 位于左下方且无朝向矢量。因此,Spatial Audio 将发声体重新定位到了左上方,使视位置看上去就像从该角落切入一样,并始终符合传播距离的衰减规律。听者与 Portal 边缘的阴影区约呈 45 度,所以衍射系数为 27(如两条线段的交点处所标)。
在有多个 Portal 连通两个 Room 时,Spatial Audio 会将多个位置指派给发声体(每个 Portal 指派一个)。这时将使用 MultiPosition_MultiDirection
模式,以免在启用或禁用 Portal 时影响与此同时感知到的其他 Portal 的音量。
Room 之间的声音透射分湿声路径和干声路径两部分单独进行建模。在此,干声路径称为 声源透射 ,湿声路径称为 Room 透射 。
类似于衍射,您可以根据需要选用以下两种途径对最终的透射损失值进行听觉化处理:曲线或 Transmission Loss 内置参数。
在默认情况下,工程 Occlusion 曲线用于透射。您可以在 Project Settings 的 Obstruction/Occlusion 选项卡中加以设置,并利用其影响 Volume、LPF 和 HPF 来模拟音量和频率相关行为。工程 Occlusion 曲线会影响工程中的所有声音,所以使用起来不太灵活。不过,可在应用于声音的 Attenuation ShareSet 中创建自定义 Transmission 曲线。
info | 备注: 最好使用曲线而非 RTPC 来模拟透射损失,因为这样在一并对透射和衍射进行建模时具有更高的精确度。由于 RTPC 无法单独应用于某条特定声音路径,所有映射至透射损失 RTPC 的参数会同时影响源自发声体的潜在衍射路径。 |
在听者和发声体不在同一 Room 且两者无法直接通过 Portal 看到彼此时,Spatial Audio 会向游戏对象应用透射损失系数,并据此对声音穿透墙壁的情形进行建模。Room 之间的透射损失依据 Room 设置的 AkRoomParams::TransmissionLoss
参数进行计算,并取听者所在 Room 和发声体所在 Room 当中的最大值。若发声体被一个或多个几何表面阻挡,则应用几何构造的透射损失系数(由 AkAcousticSurface::transmissionLoss 定义)。若发声体和听者之间存在不止一个表面,则采用最大透射损失系数。同样地,若声音既被几何构造阻挡又跟听者不在同一 Room,则应用所有透射损失当中的最大值。
除了 Room 内各个发声体的声音透射,Spatial Audio 还会对 Room 本身的声音透射进行建模。这当中涉及到漫反射场(混响)以及在 Room 内播放并穿透墙壁的房间底噪(如有)。
跟声源透射一样,在计算 Room 的透射损失时会对声源所在 Room 和听者所在 Room 进行比较,并取两者中的较大值作为透射损失系数。在为房间底噪设置 Room 透射时,会使用声音的 Attenuation ShareSet 上的 Transmission Loss 曲线、Wwise Project Settings 中的 Occlusion 曲线(如无 Attenuation ShareSet)或 Transmission Loss 内置参数。在为漫反射场(混响)设置 Room 透射时,会使用 Room 的辅助总线 Attenuation ShareSet 上的 Transmission Loss 曲线、Wwise Project Settings 中的 Occlusion 曲线(如无 Attenuation ShareSet)或 Transmission Loss 内置参数。
建议使用 Project Settings 的 Occlusion 曲线来设置 Room 的漫反射场(混响)。这是因为我们不建议在 Room 的 Auxiliary Bus 上添加 Attenuation ShareSet。您可以使用由距离驱动的 Auxiliary Send volumes 曲线来在对应的 Attenuation ShareSets 中为声音设置 Auxiliary Send Volume 衰减。若 Room 的 Auxiliary Bus 上设有 Attenuation ShareSet,除了声音的 Auxiliary Send volumes 曲线,还会在声音上应用由距离驱动的音量曲线。若无法使用 Project Settings 的 Occlusion 曲线且必须有自定义 Transmission Loss 曲线,请确保将平直曲线用作由距离驱动的音量曲线,并将其用于 Room 的 Auxiliary Bus 上添加的 Attenuation ShareSet。
info | 备注: 要想启用 Room 透射,必须定义 Room 形状,并为其设定声源和边界。Room 形状依据 Room 所关联几何构造周围的边界框进行计算。若要通过 API 设置 Room 透射,请参阅 设置 Room 几何构造 章节。 |
相邻房间内通过 Portal 渗透到听者所在房间的衍射能量可被视为 Portal 位置的声源,因此也应对听者所在房间产生激励作用。也就是说,应将其发送至听者所在房间对应的 Auxiliary Bus。为此,可针对相邻房间对应的辅助总线勾选 Enable Game-Defined Sends 复选框(如上文所述)。您可以使用 Game-Defined Send Offset(游戏定义的发送偏置)来调节发送到其他 Room 混响器的散布量。
多个房间之间也会发生声音传播。在搜索传播路径时,会在 SpatialAudio 内部搜索 Room 树。为了避免循环连接,在遇到已经到过的 Room 时,将停止搜索。搜索深度可通过 Spatial Audio 的初始化设置 AkSpatialAudioInitSettings::uMaxSoundPropagationDepth(默认值为
8)来加以限制。
Spatial Audio 会在内部按 Room 将游戏对象逐个注册到 Wwise。
dangerous | 警告: 此游戏对象的位置和辅助发送值不可直接调节。 |
在听者位于 Room 内时,Room 内的游戏对象将随听者移动。因此,Room 和 Listener 对象之间的距离近似为 0。不过,其朝向与 Room 设置 (AkRoomParams
) 中指定的朝向保持一致。有关 3D 总线朝向的论述,请参见“ 在 Wwise 中设置 Room Auxiliary Bus ”部分。
在听者位于 Room 外时,Room 内的游戏对象将沿用对应 Portal 的位置。确切地说,是设在 Portal 后方与 Portal 正切的听者投影位置,并固定于 Portal 界限之内。您可以通过查看 Room 内的游戏对象来验证这一点(参见上文“ 通过 Portal 模拟虚拟定位和衍射 ”部分的 3D Game Object Profiler 截图)。
对于多个 Portal,在 MultiPosition_MultiDirection
模式下,将为 Room 内的游戏对象指派多个位置(情形与发声体相同)。
在 Portal 内部过渡时,会对 Room 内部和 Portal 行为做平滑插值。
Room 游戏对象的主要作用在于对混响(发声体的湿声路径)实施空间化处理。不过,我们可以有效运用 Room 和 Portal 的空间化行为(参见 Room 游戏对象行为 章节),来直接针对 Room 游戏对象发送 Event 以实现房间底噪。有关如何在 Wwise 中设置房间底噪的信息,请参阅 在 Wwise 中设置房间底噪 章节。有关如何发送 Event 的信息,请参阅 针对 Room 游戏对象发送 Event 章节。
Wwise 中声音的散布决定在将 3D 声音摆位到 Audio Bus 时要构建多宽的声场。对于大部分声音,Wwise 中会依据声音衰减设置中的曲线来定义散布。不过,对于 Room 游戏对象上播放的声音(即房间底噪)和发送到 Room Auxiliary Bus 的混响,并不需要定义所述曲线,因为 Spatial Audio 会自动计算散布。
若针对声音在 Wwise 的衰减设置中定义了散布曲线,且该声音穿过了一个或多个 Portal,则最终的散布曲线将由这些 Portal 的 Aperture 决定。您可以将 Aperture 值视为声音散布的上限,并利用其模拟声音穿过 Portal 时声场的收缩。
通过以下设置,可在 Wwise 的 Game Object 3D Viewer 中直观地显示发声体的散布:
除此之外,也可在 Advanced Profiler 的 Obs/Occ 选项卡中查看游戏对象的 Spread 值和 Portal 的 Aperture 值。
Game objects may have a Spread value that is calculated by Spatial Audio if they are Radial Emitters.
对于 Room 游戏对象,Spread 值与 Aperture 值相同。在计算时,基于各个 Portal 相对于听者的立体角取近似值。注意,对于 Room 游戏对象,每个 Portal 只有一个 Spread 值(每个 Portal 都会作为一个单独的声音位置进行渲染)。
游戏对象的 Aperture 值是按照路径计算的,其大小为特定声音路径中穿过的所有 Portal 的最小 Spread 值。对于 Room 游戏对象,Spread 和 Aperture 采用相同的值。
对于给定的声音位置和听者对,按照以下方式计算最终的 Spread 值:
AK::SpatialAudio::SetGameObjectRadius
章节)。若未给出半径,则不定义散布曲线,并将 Spread 值设为 0。