版本

menu_open

Wwise Reflect

(请参阅下文的 “Wwise Reflect 属性”一节。)

Wwise Reflect 插件效果器采用多抽头时变延迟线及滤波器来模拟空间化早期反射。

在涉及声学特性的几何建模时,通常采用“镜像声源法”计算空间化早期反射声。采用这种方法,可以通过镜像声源来表示早期反射声,就像反射声音的几何表面是镜面一样,详见下图。

在此图中,发声体 E 和听者 L 位于同一几何构造(房间)内(即黑色实线框标示部分)。从发声体到听者的反射路径标示为绿色实线。镜像声源法针对各个反射面生成发声体的镜像。镜像声源位于表面之后的等距离处,与发声体的连线与反射面正交。声音传播的总距离相当于镜像声源和听者之间的距离。注意,镜像声源的分布方位严格依赖于发声体位置和几何构造,而与听者位置无关。

对于给定插件实例,游戏会向其推送一系列镜像声源。对于每个镜像声源,都会向延迟线添加一个抽头(tap),然后依据镜像源的相对 3D 位置、基于距离的曲线和相关 “Acoustic Texture”一节 进一步滤波、摆位和缩放。

Wwise Reflect 一般用在代表早期反射的 Auxiliary Bus(辅助总线)上。若总线与其声音来源对应的游戏对象建立关联,则便可准确模拟早期反射声。

在 Wwise 工程中设置 Wwise Reflect

  • 添加用于早期反射的 Auxiliary Bus(辅助总线)。

    • 在 Project Explorer(工程资源管理器)中,右键单击要在其下创建 Early Reflection Auxiliary Bus 的总线。

    • 依次选择 New Child > Presets > Early Reflection Auxiliary Bus(新建子对象 > 预设 > Early Reflection Auxiliary Bus)。

      这时将添加新的 Auxiliary Bus。

      [备注] 备注

      只有安装了 Wwise Reflect 并将 Wwise Reflect Factory Presets 添加到工程才会显示此预设。若尚未添加这些 Factory Preset,则可随时打开 Project > Import Factory Assets...(工程 > 导入出厂素材...)菜单来进行添加。

    • Early Reflection Auxiliary Bus 为标准 Auxiliary Bus,其采用了以下设置:

      • Bus Configuration(总线配置)为 1.0(单声道)。虽然 Reflect 能够处理多声道输入声音,但是其首先会将其下混为单声道。因此,将总线直接设置为单声道会更加高效,这样可以避免 Wwise 对发送到此 Auxiliary Bus 的声部执行不必要的空间化计算。

        [备注] 备注

        在将总线设为单声道时,并不会影响 Reflect 的输出(不会转换为单声道)。您可以通过 Reflect 的 Effect Settings(效果器设置)来设定早期反射空间化所用的输出配置。

      • 它上面添加有 Wwise Reflect 插件。

      • 在 Positioning(定位)选项卡中,选中了 Listener Relative Routing(听者相对通路)选项,而将 3D Spatialization(3D 空间化)保留为了 None(无)。否则,Wwise 会对 Wwise Reflect 生成和空间化的镜像声源实施进一步的摆位和衰减。

        [备注] 备注

        此总线本身不得应用任何衰减。不过,可在 Reflect Effect Editor 中自定义衰减。

  • 检查要反射的声音。

    • 若要结合 Wwise Reflect 使用 Wwise Spatial Audio Geometry API(首选方式),请在 Sound Property Editor 的 General Settings 选项卡中将新建的总线指派给 Early Reflections 的 Auxiliary Bus。除此之外,还可调节发送音量。

    • 在 Sound Property Editor(声音属性编辑器)的 General Settings(常规设置)选项卡中,选中 Use game-defined auxiliary sends(使用游戏定义的辅助发送)选项,以便结合 Wwise Reflect 使用 Wwise Spatial Audio 的原始 SetImageSource API,或者将其发送到其他 Auxiliary Bus 来实施后期混响。

    • 通常要以 3D 形式对声音进行空间化处理,同时应用衰减。为此,请在 Sound Property Editor 的 Positioning 选项卡中选中 Listener Relative Routing 选项,并将 3D Spatialization 设为 Position + Orientation(位置 + 朝向)。然后,在 Attenuation(衰减)分组框中添加衰减。

  • 在 Reflect Effect Editor 中配置效果器。

    • 通过修改 Output Config(输出配置)属性,将输出声道设为所需配置。其中,Parent Bus(父总线)代表 Auxiliary Bus 的父总线的输出总线配置。

    • 确保将 Max Distance(最大距离)数值设置得足够大,确保可以看见镜像声源。

  • 生成音频包。

  • 确保已获取 Reflect 授权。

使用 Spatial Audio 设置 Wwise Reflect

“在 Wwise 工程中设置 Wwise Reflect”一节后,需要在游戏端加以设置。为此,可使用 Spatial Audio API。

  • 确保通过包含 AK/Plugin/AkReflectFXFactory.h 来注册 Reflect 插件。

  • 包含 Spatial Audio 头文件:AK/SpatialAudio/Common/AkSpatialAudio.h

  • 初始化 Spatial Audio 模块,并注册 Spatial Audio 听者。

    // 初始化 Wwise Spatial Audio。
    AkSpatialAudioInitSettings settings;
    res = AK::SpatialAudio::Init(settings);
    
    // 注册“听者”游戏对象(如尚未注册),然后将其注册为唯一的 Spatial Audio 听者。
    static const AkGameObjectID LISTENER_ID = 10000;
    AK::SoundEngine::RegisterGameObj( LISTENER_ID, "Listener" );
    AK::SpatialAudio::RegisterListener( LISTENER_ID );
    
  • 定义并设置构成 Reflect 几何构造表面的几何构造。

    创建 AkGeometryParams,并填入几何构造的三角形、顶点和表面。

    static const AkGeometrySetID GEOMETRY_ID = 200;
    AkGeometryParams geometryParam;
    
    // 将三角形、顶点和表面填入 geometryParam。
    // 参见 Integration Demo 中的示例。
    // ...
    
    AK::SpatialAudio::SetGeometry( GEOMETRY_ID, geometryParams );
  • 在发声体移动时更新其位置(将调用由 SoundEngine::SetPosition 替换为 SpatialAudio::SetPosition)。

    AK::SpatialAudio::SetPosition( EMITTER_ID, soundPos );

不使用 Spatial Audio 设置 Wwise Reflect

“在 Wwise 工程中设置 Wwise Reflect”一节后,需要在游戏端加以设置。

  • 确保通过包含 AK/Plugin/AkReflectFXFactory.h 来注册 Reflect 插件。

  • 包含 Reflect 头文件:AK/Plugin/AkReflectGameData.h

  • 另外可能还要将 AkReflectFX.lib 添加到可执行程序的输入库。

  • 使用 Reflect API 创建镜像声源,并根据想要从哪里反射声音来设定其位置。

    // 创建 AkReflectGameData 对象。
    AkReflectGameData * reflectGameData = nullptr;
    reflectGameData = (AkReflectGameData *)_alloca(AkReflectGameData::GetSize(1));
    // 填入数据。
    reflectGameData->listenerID = LISTENER_ID;
    reflectGameData->uNumImageSources = 1;
    reflectGameData->arSources[0].uID = 123;
    reflectGameData->arSources[0].params.sourcePosition = { 200, 0, 0 };
    // 以下数值代表发声体和镜像声源之间的距离系数。
    // 若声源位置与反射表面相对应,则该数值应为 2。
    reflectGameData->arSources[0].params.fDistanceScalingFactor = 1.f;
    reflectGameData->arSources[0].params.fLevel = 1.f;
    // 在此将镜像声源与 Acoustic Texture 关联(如有必要)。
    reflectGameData->arSources[0].texture.uNumTexture = 0;
    reflectGameData->arSources[0].name.SetName("Img src 1");
    
    // 发送到 Reflect。
    AK::SoundEngine::SendPluginCustomGameData(AK::SoundEngine::GetIDFromString("ER"), EMITTER_ID, AkPluginTypeEffect, AKCOMPANYID_AUDIOKINETIC, 171, reflectGameData, AkReflectGameData::GetSize(1));
  • 在需要更新镜像声源的位置时,发送新的 AkReflectGameData

Acoustic Texture

每个镜像声源最多可传递 4 种 Acoustic Texture(声学材质)。Acoustic Texture 代表材料属性(详见 “Acoustic Texture Editor”一节)。在应用插件的过程中,各材质的四个吸收频段(Low、Mid Low、Mid High 和 High)转换为四频段衰减。

在应用多种 Acoustic Texture 时,频段吸收系数的效果将叠加,就像把信号连续滤波一样。这样可以有效模拟先后碰到多个表面后生成的反射声。

Wwise Reflect 吸收频段的默认映射

  • Low(低):< 250 Hz

  • Mid Low(中低):> 250 Hz 且 < 1,000 Hz

  • Mid High(中高):> 1,000 Hz 且 < 4,000 Hz

  • High(高):> 4,000 Hz

[技巧] Wwise Reflect 的吸收频段默认值可更改

您可以更改 Wwise Reflect 的吸收频段默认值,但此操作仅应针对非常特殊的情况。为此,可直接编辑 %Wwise%\Authoring\x64\Release\bin\plugins\AkReflect.xml 文件,更改 BaseTextureFrequencyDefault Value。这样会定义新的默认 Low 频段,其他频段将按照两个八度的间隔连续排布。

利用 Wwise Reflect 模拟第三人称声音的反射

为了将 Wwise Reflect 用于第三人称声音,必须在与该发声体关联的总线上运行该插件。有关详细信息,请参阅 3D 总线 AK::SoundEngine::SetGameObjectAuxSendValues()。您可以利用 AK::SpatialAudio 服务来相应地设置总线实例。

微调 Wwise Reflect 设置

Wwise Reflect 提供一组简单的参数,方便微调生成的反射声。

反射声是将输入信号进行下混后,再经过摆位、滤波和延迟得到的。游戏驱动的镜像声源的距离和 Wwise Reflect 的 Speed of Sound 都会影响延迟时间。滤波和音量缩放将依据镜像声源距离和衍射系数,通过各个曲线计算得到。此外,滤波还会受镜像声源的 Acoustic Texture 影响。

[技巧] 技巧

距离衰减曲线用来模拟空气对声音的吸收和能量衰减。

使用衍射

镜像声源也可应用衍射系数。若为镜面衍射,则该系数一般为零;若声音传播路径需要在反射表面边缘附近弯曲才能到达听者所在位置,则衍射系数不为零。这种反射的振幅一般较小且会经过滤波。Wwise Reflect 提供各种曲线,方便根据衍射系数来微调这些参数。有关衍射、衍射与早期反射的交互作用、AK::SpatialAudio 模拟方式的详细信息,请参阅 Spatial Audio 概念 – 衍射早期反射的几何衍射

Wwise Reflect 属性

界面元素

描述

Name

名称。效果器实例的名称。

效果器实例是一组效果器属性设置。它们可以是两种类型之一:自定义或共享集。自定义实例只能由一个对象使用,然而共享集可在多个对象之间共享。

显示对象的颜色。单击图标可打开颜色选择器。

选择一种颜色并将其应用于对象。

[备注] 备注

若选中颜色选择器最左侧方块,则对象沿用其父对象的颜色。若针对对象显式选择某种颜色,则显示调色板图标并在右下角标注黄色三角(如图所示)。

Inclusion

决定是否包含该对象。如勾选,则包含该元素。如未勾选,则不会包含该元素。在默认情况下,此设置应用于所有平台。使用复选框左侧的 Link indicator 来查看或设置平台专有属性。

若取消选中此选项,则将禁用编辑器中的属性和行为选项。

Default value: true

指示工程中有多少元素包含对对象的直接引用。若存在对对象的引用,则图标显示为橙色;若不存在此类引用,则图标显示为灰色。

通过单击该按钮,可打开 “Reference View 视图”一节,并在 References to:(引用:)字段中查看对象的名称。

Notes

备注。Effect 的其它信息。

Metering

电平测量。指示当前正在测量电平的对象的名称。

允许浏览其他要测量电平的对象。
[备注] 备注

只有对于包含 VU 电平表的效果器,Effect Editor 中才会显示电平测量界面元素。

设置 Effect Editor 中选定标签页的显示方式。默认情况下,整体面板中仅显示一个选定标签页。不过,您可以通过单击分隔器按钮将面板沿横向或纵向一分为二,显示两个不同的标签页。当前所选选项将以高亮背景色显示。

[备注] 备注

无法同时在两个面板中显示同一标签页。若选中的标签页已在另一面板中显示,则另一面板将自动显示另一标签页。

General

Speed Of Sound

声速。游戏单位每秒。该单位与游戏使用并发送至 Reflect 的距离单位对应。声音在空气中的传播速度约为 340 m/s。若游戏所用单位为厘米,则该值应为 34,000(cm)/s。

Default value: 345
Range: 0.001 to 2147483648

Distance Smoothing

距离平滑。该平滑滤波器将应用于发送至延迟线的反射线距离参数。增大平滑处理幅度将减慢反射时间的更新速度,但会限制移动产生的多普勒变调。归一化值介于 0 和 1 之间。

Smoothing Type

平滑类型。定义平滑滤波器响应随时间变化的形状。IIR 和 FIR 对应的曲线图标指示滤波器对射线距离突变产生的影响。

Threshold Mode

阈值模式。Continous(连续)模式允许移动时产生最大限度的多普勒变调。若移动速度快到超出阈值,则将降低反射声音量,直至音高恢复至阈值以下。若将阈值设为 0,则每次出现移动时都会降低反射声音量。

Step(步进)模式允许距离阈值“冒泡”(即不连续),只有达到一定的最小位移量才会更新反射声。若将阈值设为 0,则每次出现移动时 Wwise Reflect 都会在新旧反射声之间交叉淡变。交叉淡变会产生时间拉伸效果,但不会修改音高。

Pitch Threshold

音高阈值。在连续阈值模式下,以音分为单位设置多普勒变调最大值,超过此上限后将降低反射声音量。在设为 0 时,每次移动时都将降低反射声音量。

Distance Threshold

距离阈值。在步进阈值模式下,按游戏单位设置射线距离变化的最小值,超过此下限后将更新反射声延迟时间。在设为 0 时,每次移动都时会将反射声交叉淡变。

Center %

中置 %。3D 定位所使用的中置声道百分比。有关 Wwise 如何在 3D 定位中处理 Center % 的更多详细信息,请参阅 Positioning 选项卡:音频和辅助总线

Default value: 100
Range: 0 to 100

Output Config

输出配置。Wwise Reflect 为非原地效果器,其可采用与输入不同的声道配置来输出信号。Output Config 用于定义插件输出端的声道配置。

建议将 Wwise Reflect 用在单声道总线上,以避免声音引擎在多声道配置下执行不必要的空间化计算。若总线配置与单声道不同,则 Wwise Reflect 会先将输入信号下混为单声道。不过,输出的早期反射应当实施空间化处理。利用 Output Config 控件,可决定在哪种配置下实施空间化处理。

若值为 Parent Bus,则 Wwise Reflect 将查询并使用对应父总线的总线配置。

注意,若父总线的配置为 Audio Objects,则 Wwise Reflect 将针对每个早期反射声输出一个 Audio Object。也就是说,最终可能会产生大量 Audio Object。

Default value: Parent Bus

Output Level

输出电平。 Wet Signal 的音量电平 (dB) 。

Default value: 0
Range: -96 to 24

Monitoring List

Filter

筛选。键入全部或部分匹配内容(如游戏对象的名称或 ID)。坐标图视图中的 Monitoring List 列表和曲线游标都将只显示匹配的镜像声源。

清空 Filter 字段,并在下方各列和相关坐标图中显示 Wwise Reflect 影响的所有镜像声源。

控制镜像声源的 Mute(静音)和 Solo(独奏)状态,并显示其被动静音和独奏状态。

在静音镜像声源时,其在当前监控会话中不会播放。在独奏镜像声源时,当前 Wwise Reflect 中的所有其他镜像声源均不播放。

粗体 MS 字样表示镜像声源被直接设为 Mute 或 Solo 状态。非粗体淡色 MS 字样表示镜像声源由于另一状态而被动设为 Mute 或 Solo 状态。

[备注] 备注

Mute 和 Solo 仅用于监视目的,而不会保存在工程中或存储在 SoundBank(声音包)中。

Image Source ID

镜像声源 ID。与镜像声源关联的标识号。它是由游戏指派的唯一号码。

Image Source Name

镜像声源名称。镜像声源的名称。

Game Object ID(游戏对象 ID)

与游戏对象关联的标识号。它是由游戏指派的唯一号码。

Game Object Name(游戏对象名称)

名称。游戏对象的名称。

Textures

材质。反射声音的 Acoustic Texture 名称(如未找到名称,则显示 ID)。各阶反射均列有多种材质。

[备注] 备注

在出现阻挡对象时反射路径会发生衍射,每个衍射边缘都将显示 (Edge)。

Distance

距离。按游戏单位显示镜像声源和听者之间的距离。

Level(电平)

电平。镜像声源所发出声音的增益。此电平既可由用户使用 AkImageSourceParams 来设定,也可由 Spatial Audio 依据边缘反射产生的衍射角度来控制。对于后一种情况,若为镜面反射,则值为 1;若反射方向与表面平行,则值为 0。

Diffraction

衍射。对于可视区衍射,该项为镜面方向和反射方向之间的角度。对于阴影区衍射,该项为阴影区边界和反射方向之间的角度。

Smoothed Distance

平滑后距离。应用平滑滤波后的当前距离值。

Current Pitch

当前音高。连续阈值模式下,按音分显示当前反射距离改变所产生的多普勒变调。

Displacement

位移。步进阈值模式下,相对于当前反射长度(尚未应用)的累计位移。在超出距离阈值时重置为 0。

(Image Source 坐标图视图)

以图形来显示 Distance(X 轴)和镜像声源属性值(Y 轴)之间的关系。

坐标图视图可同时显示多条曲线。

Cursor Name Category

游标名称类别。该列表用于指定坐标图中是否显示以下参数标记:

  • No Flag

  • Image Source ID

  • Image Source Name

  • Game Object ID

  • Game Object Name

  • Texture(s)

Default value: No Flag

X

所选控制点的 X 轴坐标。X 值代表所选 Distance 的值。

如果选择了多个控制点,则字段显示 0 值,这时可以针对所有已选控制点的当前值,进行统一的增大或减小。例如,若选中两个控制点并将 X 滑块移至 -5,则两个控制点将同时左移 5 个单位。

Y

所选控制点的 Y 轴坐标。Y 值代表属性值:Distance Attenuation 音量(分贝)、Distance Spread(百分比)或 Low/High-Pass Filter(赫兹)。

如果选择了多个控制点,则字段显示 0 值,这时可以针对所有已选控制点的当前值,进行统一的增大或减小。例如,若选中两个控制点并在 Y 文本框中输入 5,则两个控制点同时上移 5 个单位。

基于坐标图视图的中心进行放大。

将坐标图视图重置为默认的 1:1 缩放比例。

基于坐标图视图的中心进行缩小。

Max Distance

最大距离。曲线的最大距离(游戏单位)。

Default value: 1000
Range: 1 to 2147483648

(固定/取消固定)

锁定/解锁。在启用 Pin 图标后,属性曲线的轮廓即便未被选中也会显示在坐标图视图中。

Color

颜色。该色块图例用来区分不同的坐标图视图曲线。

属性

属性。坐标图中显示以下八条 Wwise Reflect 镜像声源曲线,选中后可编辑。

  • Distance Attenuation:距离衰(镜像声源到听者)– 基于镜像声源到听者距离的 Volume 衰减。

  • Distance Attenuation (Emitter vs. Listener):距离衰减(发声体到听者)– 基于发声体到听者距离的 Volume 衰减。

  • Distance Spread(距离散布):3D 定位所用 Spread,基于镜像声源到听者距离。有关 Wwise 如何在 3D 定位中处理 Spread 的详细信息,请参阅《Wwise 帮助》的“3D 定位是如何计算的:”。

  • Distance Low-Pass Filter:距离低通滤波(镜像声源到听者)– 基于镜像声源到听者距离的一阶低通滤波。

  • Distance High-Pass Filter:距离高通滤波(镜像声源到听者)– 基于镜像声源到听者距离的一阶高通滤波。

  • Diffraction Attenuation(衍射衰减):基于此反射路径衍射系数的 Volume 衰减。为了保证镜面反射和衍射反射之间的插值平滑,请确保在 0% 衍射时该值为 0 dB。

  • Diffraction Low-pass Filter(衍射低通滤波):基于此镜像声源的衍射系数的一阶低通滤波。为了保证镜面反射和衍射反射之间的插值平滑,请确保在 0% 衍射时该值最大(无滤波)。

  • Diffraction High-pass Filter(衍射高通滤波):基于此镜像声源的衍射系数的一阶高通滤波。为了保证镜面反射和衍射反射之间的插值平滑,请确保在 0% 衍射时该值最小(无滤波)。


此页面对您是否有帮助?

需要技术支持?

仍有疑问?或者问题?需要更多信息?欢迎联系我们,我们可以提供帮助!

查看我们的“技术支持”页面

介绍一下自己的项目。我们会竭力为您提供帮助。

来注册自己的项目,我们帮您快速入门,不带任何附加条件!

开始 Wwise 之旅