版本
(请参阅下文的 Wwise Reflect 属性。)
Wwise Reflect 插件效果器采用多抽头时变延迟线及滤波器来模拟空间化早期反射。
在涉及声学特性的几何建模时,通常采用“镜像声源法”计算空间化早期反射声。采用这种方法,可以通过镜像声源来表示早期反射声,就像反射声音的几何表面是镜面一样,详见下图。
在此图中,发声体 E 和听者 L 位于同一几何构造(房间)内(即黑色实线框标示部分)。从发声体到听者的反射路径标示为绿色实线。镜像声源法针对各个反射面生成发声体的镜像。镜像声源位于表面之后的等距离处,与发声体的连线与反射面正交。声音传播的总距离相当于镜像声源和听者之间的距离。注意,镜像声源的分布方位严格依赖于发声体位置和几何构造,而与听者位置无关。
对于给定插件实例,游戏会向其推送一系列镜像声源。对于每个镜像声源,都会向延迟线添加一个抽头(tap),然后依据镜像源的相对 3D 位置、基于距离的曲线和相关 Acoustic Texture 进一步滤波、摆位和缩放。
Wwise Reflect 一般用在代表早期反射的 Auxiliary Bus(辅助总线)上。若总线与其声音来源对应的游戏对象建立关联,则便可准确模拟早期反射声。
添加用于早期反射的 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 授权。
在在 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 );
在在 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
。
每个镜像声源最多可传递 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 Reflect 用于第三人称声音,必须在与该发声体关联的总线上运行该插件。有关详细信息,请参阅 3D 总线和 AK::SoundEngine::SetGameObjectAuxSendValues()
。您可以利用 AK::SpatialAudio
服务来相应地设置总线实例。
Wwise Reflect 提供一组简单的参数,方便微调生成的反射声。
反射声是将输入信号进行下混后,再经过摆位、滤波和延迟得到的。游戏驱动的镜像声源的距离和 Wwise Reflect 的 Speed of Sound 都会影响延迟时间。滤波和音量缩放将依据镜像声源距离和衍射系数,通过各个曲线计算得到。此外,滤波还会受镜像声源的 Acoustic Texture 影响。
技巧 | |
---|---|
距离衰减曲线用来模拟空气对声音的吸收和能量衰减。 |
镜像声源也可应用衍射系数。若为镜面衍射,则该系数一般为零;若声音传播路径需要在反射表面边缘附近弯曲才能到达听者所在位置,则衍射系数不为零。这种反射的振幅一般较小且会经过滤波。Wwise Reflect 提供各种曲线,方便根据衍射系数来微调这些参数。有关衍射、衍射与早期反射的交互作用、AK::SpatialAudio
模拟方式的详细信息,请参阅 Spatial Audio 概念 – 衍射和早期反射的几何衍射。注意,AK::SpatialAudio
中的 Geometric Diffraction 目前为实验功能。
界面元素 |
描述 |
|||||
---|---|---|---|---|---|---|
Inclusion |
决定是否包含该对象。如勾选,则包含该元素。如未勾选,则不会包含该元素。 在默认情况下,此设置应用于所有平台。使用复选框左侧的 Link indicator 来查看或设置平台专有属性。 未勾选此选项时,Property Editor(属性编辑器)中各属性和行为选项都将不可用。 Default value: true |
|||||
Name(名称) |
Effect 实例的名称。 效果器实例是一组效果器属性设置。它们可以是两种类型之一:自定义或共享集。自定义实例只能由一个对象使用,然而共享集可在多个对象之间共享。 |
|||||
Effect(效果器) |
效果器。效果器的类型。 |
|||||
Shared by (Used by) |
共享对象。当前采用所选共享集的对象列表。 在编辑自定义 Effect 实例时,该字段会显示“Used By”。 |
|||||
|
打开搜索框,在其中输入标准字母和数字会筛选掉视图中不相匹配的元素。阅读 使用表格 了解详细信息。 点击搜索图标左侧的 Close(关闭)图标,以关闭搜索字段并删除筛选器。
|
|||||
|
将 Effect 属性设置恢复为默认值。 只有在编辑自定义 Effect 实例时,此选项才可用。 |
|||||
Notes(备注) |
备注。Effect 的其它信息。 |
|||||
General(常规) | ||||||
Speed Of Sound |
声速。游戏单位每秒。该单位与游戏使用并发送至 Reflect 的距离单位对应。声音在空气中的传播速度约为 340 m/s。若游戏所用单位为厘米,则该值应为 34,000(cm)/s。 Default value: 345 |
|||||
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 |
|||||
Output Level |
输出电平。 Wet Signal 的音量电平 (dB)。 Default value: 0 |
|||||
Monitoring List | ||||||
Filter |
筛选。键入全部或部分匹配内容(如游戏对象的名称或 ID)。坐标图视图中的 Monitoring List 列表和曲线游标都将只显示匹配的镜像声源。 |
|||||
|
清空 Filter 字段,并在下方各列和相关坐标图中显示 Wwise Reflect 影响的所有镜像声源。 |
|||||
控制镜像声源的 Mute(静音)和 Solo(独奏)状态,并显示其被动静音和独奏状态。 在静音镜像声源时,其在当前监控会话中不会播放。在独奏镜像声源时,当前 Wwise Reflect 中的所有其他镜像声源均不播放。 粗体 M 或 S 字样表示镜像声源被直接设为 Mute 或 Solo 状态。非粗体淡色 M 或 S 字样表示镜像声源由于另一状态而被动设为 Mute 或 Solo 状态。
|
||||||
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 |
游标名称类别。该列表用于指定坐标图中是否显示以下参数标记:
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 |
|||||
(Pin / Unpin 固定/取消固定) |
锁定/解锁。在启用 Pin 图标后,属性曲线的轮廓即便未被选中也会显示在坐标图视图中。 |
|||||
Color |
颜色。该色块图例用来区分不同的坐标图视图曲线。 |
|||||
属性 |
属性。坐标图中显示以下八条 Wwise Reflect 镜像声源曲线,选中后可编辑。
|