3D收发器

概述

在CRIWARE UE4插件Ver.1.29.00.00 添加了用于使用CRI ADX2的空间声音连接功能“3D收发器”的新接口。通过使用3D收发器功能,可以模拟听到从特定房间或建筑物的门窗泄漏的声音。

基础知识

本节将介绍3D收发器的基本功能和注意事项。需要立即在UE4项目上尝试此功能时,请参照下述的如何使用"AtomTransceiverBox蓝图类”。

空间声音连接功能 “3D收发器”

此功能是将声音在3D定位的虚拟空间中进行子混音并从收发器合并输出的功能。

下图说明了3D收发器功能的概要。此图是一个被带有开口的墙壁包围的空间的鸟瞰图。3D收发器的功能是可以将墙内(室内)的3D声源进行分组,将音频混音并传递给墙外(室外)的3D倾听者。

atom_transceiver_overview.png

使用与不使用3D收发器的区别

在没有使用3D收发器的3D定位中,即使在游戏中的房间内有声源,声像的方向也会忽略墙壁。而通过使用此功能,可以从开口部集中输出于封闭空间中的声音。相反,当倾听者进入封闭空间时,可以在入口处收集和输出外界声音。

atom_transceiver_comparison.png

空间设定要素"3D Region"

3D声源和3D倾听者将根据添加的3D区域自动分组。分组后的声源将对具有另一个3D区域的3D倾听者从3D收发器输出声音。

如下图所示,具有“室内”区域的3D声源的音频输出会收集到同样具有“室内”区域的3D收发器中。具有“室外”区域的室外3D倾听者可以通过室内3D收发器听到室内3D声源的声音。另一方面,可以直接听到从室外3D声源的声音,而无需通过收发器。

atom_transceiver_region.png

注意:3D收发器与3D区域的对应关系

一个3D收发器中不能具有多个3D区域。同时,也不能将多个3D收发器连接到同一个3D区域中。请注意,3D收发器和 3D区域的对应关系必须始终为1:1。违反此原则的设置可能会导致意外行为。

如果地图上的建筑物有多个门,一个“室内”区域将不足够。对于每个门都需要有各自的收发器和区域。换句话说,此建筑物需要进一步划分多个区域作管理。

自然改变输出声音的Field功能

3D收发器具有三个Field功能。

  • Attenuation Distance Field
  • Input Crossfade Field
  • Output Interior Pan Field

可以参考下图了解这些Field功能。

atom_transceiver_field.png
Field图

上图显示了倾听者所在的3D空间中的位置的四种不同类型:(A)、(B)、(C)和(D)。在各位置倾听者所听到从3D聲源和3D收发器的音频输出都会发生变化。图中沒有显示区域。当3D倾听者跨过连接室内外的出入口时,3D倾听者的区域会自动切换。

Attenuation Distance Field

Attenuation Distance Field是Field功能,将根据3D收发器和倾听者之间的距离改变输出音频的音量。您可以设置以3D收发器为中心的最大和最小衰减距离。

在上图中,红圈显示最小衰减距离范围,蓝圈则显示最大衰减距离范围。输出音频将根据倾听者位置 (A) 至 (D) 发生如下变化。

  • (A):倾听者位于最大衰减距离范围外。此时,3D收发器的输出音频的音量将为0。
  • (B):倾听者位于最大衰减距离范围內。此时,3D收发器的输出音频的音量将根据后述的关系图产生变化。
  • (C):倾听者位于最小衰减距离范围內。此时,将最大化3D收发器的输出音频的音量。
  • (D):倾听者位于屋內位置。此时,3D收发器将不会输出任何音频。

请注意,如果倾听者位于位置(B),则输出音频的音量还会考虑3D声源和3D收发器之间的距离因素。此时将应用如下所示的衰减。

atom_transceiver_distance_attenuation_calc.png

Input Crossfade Field

在切换倾听者的3D区域时,预设设置下的声像会突然变化,以非连续变化的音频的形式从扬声器设备输出。游戏玩家可能会感到不自然,并失去对游戏的沉浸感。为防止此类问题出现,3D收发器具有输出音频的交叉渐变功能。

上述Field图中的蓝色区域称为“交叉渐变区域”,红色区域则称为“直接声音区域”。输出音频将根据倾听者位置 (A) 至 (D) 发生以下变化。

-(A):倾听者位于交叉渐变区域外。在这种情况下,倾听者听到的音频的声像仅受3D收发器的位置的影响。 -(B):倾听者位于交叉渐变区域内。在这种情况下,倾听者听到的音频将声像连接到3D收发器和3D声源之间的位置。 该声像根据3D倾听者的位置而变化。 -(C):倾听者位于直接声音区域内。 在这种情况下,倾听者听到的音频仅将声像连接到3D声源的位置。 -(D):倾听者位于屋內位置。在这种情况下,倾听者听到的音频仅将声像连接到3D声源的位置。

通过设置交叉渐变区域和直接声音区域,可以在移动到位置(B) –> (C) –> (D) 时连续改变声像。

Output Interior Pan Field

在5.1ch等多声道扬声器环境中,可以根据多个扬声器输出的音量大小来显示游戏过程中声像的变化。为了实现这些变化,CRI ADX2提供了Panning和内部距离功能。而3D收发器的Output Interior Pan Field也是基于类似概念的功能。

在上述的Field图中,红圈是收发器半径的范围,蓝圈是内部距离范围。输出音频根据倾听者位置 (A) 至 (D) 发生如下变化。

  • (A):倾听者位于内部距离外。在这种情况下,3D收发器的声音在一个或两个扬声器输出。
  • (B):倾听者位于内部距离内。在这种情况下,3D收发器的声音从三个或更多扬声器输出。可以实现更自然的声像移动。
  • (C):倾听者位于收发器半径内。在这种情况下,3D收发器的声音从所有扬声器以相同的音量输出。声像将位于与倾听者相同的位置。
  • (D):倾听者位于屋內位置。此时,3D收发器将不会输出任何音频。

距离/角度AISAC的应用

可以在3D收发器上设置全局AISAC和(控制全局AISAC的)AISAC控制器。此时,可以将AISAC控制器绑定到以下的值。

  • 3D收发器和3D倾听者间的距离
  • 相对于倾听者的3D收发器的方位角
  • 相对于倾听者的3D收发器的俯仰角
  • 相对于3D收发器输出位置的倾听者方位角
  • 相对于3D收发器输出位置的倾听者俯仰角

从上往下分别对应的是距离衰减AISAC、倾听者基准方位角AISAC、倾听者基准俯仰角AISAC、声源基准方位角AISAC和倾听者基准俯仰角AISAC。 关于各种AISAC的详细信息,请参照CRI ADX2工具手册中各个功能的说明。

通过应用AISAC于3D收发器,您可以将效果应用于输出音频并根据与倾听者的位置关系改变其强度。例如,通过对从室内泄漏的声音应用低通滤波器,可以表现虚拟的音响屏蔽。

3D收发器功能的接口

CRIWARE UE4 插件的用户可以使用以下接口来使用3D收发器功能。

  • Atom3dTransceiverComponent 类
  • Atom3dRegion Asset
  • AtomTransceiverBox 蓝图类

Atom3dTransceiverComponent 类

需要对3D收发器功能进行底层控制时,您可以使用 Atom3dTransceiverComponent类。此类是SceneComponent的派生类,可以从C++和蓝图访问,也可以通过在UE4编辑器上的GUI操作来挂载到目标Actor。

3D收发器功能的设置属性

下图为UE4编辑器中显示的 Atom3dTransceiverComponent的详细信息选项卡的内容。可以更改和应用上述3D收发器功能的设置值。

atom_transceiver_detail.png

调试用的可视化功能

通过在控制台变量“cri.ShowSoundLocation”中指定“1”,可以可视化3D收发器信息,如下图所示。

atom_transceiver_visualize.png

蓝色Sprite显示3D收发器的位置。红色箭头指向3D收发器的前方方向,浅蓝色箭头则指向上方方向。此外,黑色文本标签显示了3D收发器的区域信息和位置关系。区域名称旁边的字符串“(Inactive)”显示当前是否正在从该收发器输出音频。如果与倾听者属于同一区域,则显示“(Inactive)”,并不输出音频。

此调试功能可以可视化以下信息。

  • 3D收发器的方向(前方、上方)
  • Attenuation Distance Field
  • Output Interior Pan Field
  • Input Crossfade Field
  • 在3D收发器具有3D区域名称
  • 3D倾听者和3D收发器之间的距离/角度

在上图的三个Field中只有Output Interior Pan Field可以可视化。使用 Atom3dTransceiverComponent的各种Field设置属性的“Visible”复选框可以进行单独的显示切换。您还可以使用“Details”类别中的“Visible”复选框来切换文本标签的显示。

请注意,此功能仅在 PIE 期间可用。

Atom3dRegion Asset

在CRIWARE UE4插件中,3D区域作为一个单独的Asset类提供。用户可以创建 Atom3dRegion Asset,并设置给目标的3D声源、3D收发器和3D倾听者。

可以具有区域的类

在CRIWARE UE4插件中,3D声源、3D收发器和3D倾听者分别表现为不同的类。 另外其他一些类也可能拥有区域,列举如下:

类的名称 概述 具有3D区域的用途
Atom3dTransceiverComponent 3D收发器 (省略)
FAtomListener 3D倾听者 与此倾听者属于同一区域的3D声源输出音频时不会经过收发器
AtomComponent 3D声源 音频会被集中到与此AtomComponent相同区域的收发器进行输出
SoundAtomCue Cue (播放此Cue Asset的)AtomComponent与此Cue属于同一区域
AtomParameterComponent 保持Atom相关参数的组件 此组件具有Actor进行动画处理时,(根据PlayAtomCue通知动态生成的)3D声源与此组件属于同一区域

如何创建Asset

可以在UE4编辑器的内容浏览器上创建。

atom_transceiver_region_create_ui.png

调试时的文本标签的颜色

Atom3dRegion Asset保持Color属性。这反映为上述调试功能中显示的文本标签(在3D收发器中设置的区域名称等)的字体颜色。该数据仅在UE4编辑器上有效,实际构建的应用程序包中将不保持Color数据。

AtomTransceiverBox蓝图类

AtomTransceiverBox是一个无须程序即可使用CRI ADX2的空间声音连接功能 “3D收发器”的蓝图类。只需从内容浏览器中拖放AtomTransceiverBox蓝图Asset至场景中即可使用3D收发器功能。

atom_transceiver_box_icon.png

请注意,要如上所示在内容浏览器中显示AtomTransceiverBox蓝图Asset,需要从“View Options”中启用插件内容的显示设置。

atom_transceiver_box_how_to_show.png

如何使用

步骤1:AtomTransceiverBox的放置

请在内容浏览器中显示AtomTransceiverBox蓝图Asset。您可以通过将此Asset直接拖放到视口以放置AtomTransceiverBox在地图上。

步骤2:设置前方/后方的3D区域

在AtomTransceiverBox中可以设置两个 3D区域:前方的区域和后方的区域。它们分别称为"Forward Region"和"Rear Region"。如果倾听者进入 AtomTransceiverBox并向前走,则"Forward Region"将被设置为倾听者 的区域。相反往后倒退时,"Rear Region"将被设置为倾听者的区域。

例如下图中,应该在AtomTransceiverBox的x轴上的前方设置红色房间(“ClayRoom”区域),在后方设置绿色房间(“Marble”区域)。

atom_transceiver_box_forward_and_rear_regions.png
atom_transceiver_box_forward_and_rear_region_properties.png

此外同时支持倾听者和AtomParameterComponent进入或退出AtomTransceiverBox。当挂载了AtomParameterComponent的Actor进入或退出AtomTransceiverBox时,会根据方向自动添加“Forward Region”和“Rear Region”到该组件中。

步骤3:设置各种Field和AISAC

接下来,对具有AtomTransceiverBox的Atom3dTransceiverComponent进行各种设置。但请注意,AtomTransceiverBox有两个 Atom3dTransceiverComponents: Atom3DTransceiverForward和Atom3DTransceiverRear。它们分别对应于Forward Region用和Rear Region用。这是由于收发器和区域之间是1:1的对应关系。

在关卡开始时,将自动设置Atom3DTransceiverForward为Forward Region,Atom3DTransceiverRear为Rear Region。在下图中,假设3D倾听者(摄像机)属于AtomTransceiverBox背面的Marble Region。在这种情况下,倾听者将听到从Atom3DTransceiverForward的输出音频。

atom_transceiver_box_and_listener.png

需要编辑倾听者听到的音频时,请更改Atom3DTransceiverForward的设置值。

步骤4:设置倾听者的初始区域

没有任何区域的倾听者将无法听到从3D收发器输出的音频。使用蓝图时,请在以下的函数节点中为倾听者设置所需的目标Atom3dRegion Asset。

atom_transceiver_how_to_set_region_for_listener.png

以上为基本用法。CRIWARE SDK for UE4包含了3D收发器功能的示例关卡 (Atom160_Transceiver),可以用来确认功能。另外AtomTransceiverBox作为一个小规模的蓝图类,可以由用户修改和扩展。