(请参阅下文的 “Wwise Reflect 属性”一节。)
Wwise Reflect 插件效果器采用多抽头时变延迟线及滤波器来模拟空间化早期反射。
在涉及声学特性的几何建模时,通常采用“镜像声源法”计算空间化早期反射声。采用这种方法,可以通过镜像声源来表示早期反射声,就像反射声音的几何表面是镜面一样,详见下图。
在此图中,发声体 E 和听者 L 位于同一几何构造(房间)内(即黑色实线框标示部分)。从发声体到听者的反射路径标示为绿色实线。镜像声源法针对各个反射面生成发声体的镜像。镜像声源位于表面之后的等距离处,与发声体的连线与反射面正交。声音传播的总距离相当于镜像声源和听者之间的距离。注意,镜像声源的分布方位严格依赖于发声体位置和几何构造,而与听者位置无关。
对于给定插件实例,游戏会向其推送一系列镜像声源。对于每个镜像声源,都会向延迟线添加一个抽头(tap),然后依据镜像源的相对 3D 位置、基于距离的曲线和相关 “Acoustic Texture”一节 进一步滤波、摆位和缩放。
Wwise Reflect 一般用在代表早期反射的 Auxiliary Bus(辅助总线)上。若总线与其声音来源对应的游戏对象建立关联,则便可准确模拟早期反射声。
添加用于早期反射的 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 授权。
在“在 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 );
在“在 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 概念 – 衍射和早期反射的几何衍射。
界面元素 |
描述 |
|||
---|---|---|---|---|
Name |
名称。效果器实例的名称。 效果器实例是一组效果器属性设置。它们可以是两种类型之一:自定义或共享集。自定义实例只能由一个对象使用,然而共享集可在多个对象之间共享。 |
|||
显示对象的颜色。单击图标可打开颜色选择器。 选择一种颜色并将其应用于对象。
|
||||
Inclusion |
决定是否包含该对象。如勾选,则包含该元素。如未勾选,则不会包含该元素。在默认情况下,此设置应用于所有平台。使用复选框左侧的 Link indicator 来查看或设置平台专有属性。 若取消选中此选项,则将禁用编辑器中的属性和行为选项。 Default value: true |
|||
指示工程中有多少元素包含对对象的直接引用。若存在对对象的引用,则图标显示为橙色;若不存在此类引用,则图标显示为灰色。 通过单击该按钮,可打开 “Reference View 视图”一节,并在 References to:(引用:)字段中查看对象的名称。 |
||||
Notes |
备注。Effect 的其它信息。 |
|||
Metering |
电平测量。指示当前正在测量电平的对象的名称。 |
|||
允许浏览其他要测量电平的对象。
|
||||
设置 Effect Editor 中选定标签页的显示方式。默认情况下,整体面板中仅显示一个选定标签页。不过,您可以通过单击分隔器按钮将面板沿横向或纵向一分为二,显示两个不同的标签页。当前所选选项将以高亮背景色显示。
|
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 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 |
|||
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 |
距离。按游戏单位显示镜像声源和听者之间的距离。 |
|||
Level(电平) |
电平。镜像声源所发出声音的增益。此电平既可由用户使用 AkImageSourceParams 来设定,也可由 Spatial Audio 依据边缘反射产生的衍射角度来控制。对于后一种情况,若为镜面反射,则值为 1;若反射方向与表面平行,则值为 0。 |
|||
Diffraction |
衍射。对于可视区衍射,该项为镜面方向和反射方向之间的角度。对于阴影区衍射,该项为阴影区边界和反射方向之间的角度。 |
|||
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 图标后,属性曲线的轮廓即便未被选中也会显示在坐标图视图中。 |
|||
Color |
颜色。该色块图例用来区分不同的坐标图视图曲线。 |
|||
属性 |
属性。坐标图中显示以下八条 Wwise Reflect 镜像声源曲线,选中后可编辑。
|