版本
menu_open

Wwise Reflect

(请参阅下文的 Wwise Reflect 属性。)

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

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

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

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

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

在 Wwise 工程中设置 Wwise Reflect

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

    • 在 Auxiliary Bus Property Editor(辅助总线属性编辑器)的 General Settings(常规设置)选项卡中,将 Channel Configuration(声道配置)改为 1.0(单声道)。虽然 Reflect 能够处理多声道输入声音,但是其首先会将其下混为单声道。因此,将总线直接设置为单声道会更加高效,这样可以避免 Wwise 对发送到此 Auxiliary Bus 的声部执行不必要的空间化计算。

      [备注] 备注

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

    • 在 Effects(效果器)选项卡中,添加 Wwise Reflect 实例。

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

      [备注] 备注

      此总线上不能应用任何衰减,不过可在 Reflect Effect Editor(Reflect 效果器编辑器)中自定义衰减。

  • 检查要反射的声音。

    • 在 Sound Property Editor(声音属性编辑器)的 General Settings 选项卡中,选中 Use game-defined auxiliary sends(使用游戏定义的辅助发送)选项。

    • 通常要以 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

  • 注册听者和发声体。

    // 注册听者。
    static const AkGameObjectID LISTENER_ID = 10000;
    AK::SoundEngine::RegisterGameObj( LISTENER_ID, "Listener" );
    AK::SpatialAudio::RegisterListener( LISTENER_ID );
    
    // 注册发声体。
    static const AkGameObjectID LISTENER_ID = 100;
    AK::SoundEngine::RegisterGameObj( EMITTER_ID, "Emitter" );
    
    AkEmitterSettings emitterSettings = AkEmitterSettings();
    // ER 是应用有 Reflect 效果器的 Auxiliary Bus 的名称。
    emitterSettings.reflectAuxBusID = AK::SoundEngine::GetIDFromString( "ER" );
    // 此数值代表听者和发声体之间的最大距离,在该距离内听者可以收到来自发声体的反射。
    emitterSettings.reflectionMaxPathLength = 500.f;
    
    AK::SpatialAudio::RegisterEmitter( EMITTER_ID, emitterSettings );
    
    // 将发声体与听者关联。
    static const AkGameObjectID aLstnrsForEmitter = LISTENER_ID;
    AK::SoundEngine::SetListeners( EMITTER_ID, &aLstnrsForEmitter, 1 );
  • 定义并设置构成 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 概念 – 衍射早期反射的几何衍射。注意,AK::SpatialAudio 中的 Geometric Diffraction 目前为实验功能。

Wwise Reflect 属性

界面元素

描述

Inclusion

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

未勾选此选项时,Property Editor(属性编辑器)中各属性和行为选项都将不可用。

Default value: true

Name(名称)

Effect 实例的名称。

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

Effect(效果器)

效果器。效果器的类型。

Shared by (Used by)

共享对象。当前采用所选共享集的对象列表。

在编辑自定义 Effect 实例时,该字段会显示“Used By”。

打开搜索框,在其中输入标准字母和数字会筛选掉视图中不相匹配的元素。阅读 使用表格 了解详细信息。

点击搜索图标左侧的 Close(关闭)图标,以关闭搜索字段并删除筛选器。

[备注] 备注

搜索不包括List View(列表视图), Query Editor, MIDI Keymap Editor 视图, and Reference View 视图中折叠起来的节点。

将 Effect 属性设置恢复为默认值。

只有在编辑自定义 Effect 实例时,此选项才可用。

Notes(备注)

备注。Effect 的其它信息。

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 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)。

[备注] 备注

对于二阶反射,将列出多种材质。

Distance

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

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 / Unpin 固定/取消固定)

锁定/解锁。在启用 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 之旅