menu
 

使用Wwise/Unreal Engine 4/Unity 3D进行脚步材质管理

游戏音频 / 声音设计 / Wwise 技巧和工具

在前期制作之初,声音设计师需要设定很多系统的原型,而且他们不是总有音频程序员帮忙。

幸运的是,Wwise结合现今的引擎,比如Unreal Engine 4和Unity 3D,能提供很大帮助。

比如,Unreal Engine 4有非常强大的脚本界面,让声音设计师无需程序员的参与也能做很多事。结合Wwise提供的强大功能,如果不去用这些超棒的工具就太可惜啦!

说到这点,这篇指南会解释如何检测/管理地面材质并播放合适的脚步声。

它主要的构成和重点在于:

  • Audiokinetic Wwise 2016.1:Switch Group(切换开关组)、 RTPC、RTPC 控制的Switch(切换开关),以及Random Containers(随机容器)
  • Unreal Engine 4.12.5:Blueprint、Surface & Physical Materials(表面和物理材质)、AkEvent Notify、Set Switch,以及Set RTPC
  • Unity 3D 5.1
  • Unreal和Unity商店的免费素材

Wwise

Unreal和Unity可以针对引擎检测到的地面材质播放脚步声,而要做到这一点它们的设置是基本一样的。

Game Syncs (游戏同步器)

  • 在Game Syncs建立一个新的Switch Group并命名为Material(材质)。
  • 在这个Switch Group下建立4个Switch并分别命名为Concrete(混凝土)、Grass(草地)、Tiles(瓷砖)和Wood(木头)。

 FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D请记住Switch是“基于游戏对象的”,也就是说它可以用在不同的场合而不仅仅是针对玩家的脚步。它根据适用的游戏对象可以有不同的值,比如弹痕效果和NPC脚步。这意味着“全局(global)”的State(状态)不能被用于管理物理材质。

Global Setup (全局设置)(Audio/Events/Switch Assignation(音频/事件/切换开关分配))

FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

  • (1) 建立一个新的Switch Container并命名为FS_Pawn
  • (2) 建立4个Random Container对应每一种材质:Walk_Concrete、Walk_Grass、Walk_Tiles和Walk_Wood
  • (3) 根据这些容器和材质导入所有的音频文件。
  • (4) 点击Switch Container并设置之前建立的Switch:

                                 Group: Material (组:材质)
                                 Default Switch/State: Concrete (默认切换开关/状态:混凝土)

FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

设置默认值意味着如果引擎发出了一个Wwise没有的材质名,它就会默认播放
Concrete(如设置为“无”,则不会播放任何东西)。
  • (5) 然后在Assigned Objects(指派的对象) 里从Contents Editor(内容编辑器)(或Project Explorer(工程管理器))里拖拽每个Random Container到它们对应的Switch。
    脚步材质管理-使用Wwise / Unreal Engine 4 / Unity 3D

FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

  • (6) 从Switch Container FS_Pawn里建立一个New Event Play(新事件播放)并命名为Play_FS_Pawn。
  • (7) 您能在Transport Control(传输控制)或Soundcaster Session(声音选角器会话)里测试Event并切换Material。

Unreal Engine 4

Project Settings (工程设置)

  • (1) 打开Project Settings并前往Engine(引擎)>Physics(物理)>Physical Surface(物理表面)
  • (2) 添加4个新的Surface Types (表面类型)(使用和Wwise里建立的一样的名字): Concrete、Grass、Wood和Tiles。

FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

Physical Material Settings (物理材质设置)

  • (1) 在内容浏览器里建立4个新的Physical Material并命名为PM_Concrete、PM_Grass、PM_Tiles和PM_Wood。

FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

  • (2) 分别打开它们并分配相应的Surface Type。

FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

 

Material Settings (材质设置)

  • 打开您地图中使用的每个Material并对它们设置正确的Physical Material:PM_Concrete、PM_Grass、PM_Tiles和PM_Wood。

FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

  • Map Overview (地图概览)

FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

Animation Sequence (动画序列)

  • 打开Animation Sequence。在这里我们要触发AkEvent脚步。

FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

  • (1) 在时间轴上将通知AkEvent添加到想要的位置。
  • (2) 在Anim Notify中,选择在Wwise工程中建立的Wwise AkEvent Play_FS_Pawn。
这时,如果您播放动画,您会听到默认Switch,Concrete的脚步声。

 

Blueprint

  • Unreal会在Blueprint中“识别”pawn(Unreal中的人工智能游戏对象)行走时所踩的不同材质,并向Wwise发出正确的Switch。
  • 在内容浏览器中,建立一个新的Blueprint Class(分类)(Actor Component Class)并将这一Blueprint命名为BP_Wwise_Footsteps。

FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

  • 打开Blueprint并开始写脚本。完成后,它看起来应该是这样!

FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

让我们来仔细看看脚本的每一块:

  • (1) Blueprint是基于tick(时间单位)的,而且会包括玩家pawn的位置。
FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D
  • (2) LineTraceByChannel对话框基本就是对从始到末输入值(Z值根据您的pawn要进行调整)的一个光线追踪 。您可以把Draw Debug Type(绘制调试类型)调成“For One Frame(针对一帧)”来在游戏中可视化光线追踪;它会在您的pawn下方显示一条伸向地面的红线,如果光线追踪碰到了地面,也会在下方显示一个方框。

FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

  • (3) 第一个分支对话框用来检测LineTraceByChannel是否有返回值。

第二个分支是在Pawn没有在新的Surface Type(表面类型)上行走时,用来避免Blueprint将Switch发送给Wwise。没有这个门限的话,每一tick,Wwise都会一直收到Switch!

Get Surface Type(获取表面类型)对话框会返回一个和Project Settings(工程设置)相联系的Enum(枚举)。

为了获取并设定这一变量,要建立一个名为CurrentSurfaceType的变量并将其类型设为EPhysical Surface。

FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

  • (4) 就像我说的,Wwise Switch是“基于游戏对象的”。在这个例子中,发送到Animation Sequence里的AkEvent通知会建立一个关联到网格的Ak Component(组件),所以我们需要在这个Ak Component上设置Set Switch,而不是在pawn本身上。

FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

  • (5) 这个对话框会返回对应的字符串到Surface Type Enum(表面类型枚举)(Concrete,Grass,…)。
  • (6) 这时,我们就能填上Set Switch对话框,它会向Wwise发送pawn行走时所踩到的Current Surface Type(当前表面类型)!

                                              目标:从AkEvent所附着在的网格上获取Ak Component
                                              Switch Group:材质(跟在Wwise会话中设置的一样)
                                              Switch State:在Unreal中定义的Surface Type

                                          Print String(打印字符串)对话框只用于调试,可以在Unreal Screen上显示Current Surface。

FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

  • 编制Blueprint并保存,然后将其作为组件添加到您的pawn。

FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

  • 将Wwise连接到Unreal,Switch就会在Profiler layout(性能分析器布局)的Capture log(捕获日志)里显示。

FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

进阶

Wwise所提供的超酷功能之一就是能让Switch完全由RTPC控制,也就是说Switch能根据发到RTPC的值而改变!

在我们的例子中,这点非常棒,因为我们将用这一功能来根据pawn的速度来在Walk(行走)和Run(奔跑)间切换脚步声。

在UE4,打开Pawn’s Animation Blueprint并在“Update Animation Event(更新动画事件)”(基于tick)的末端添加一个Set RTPC对话框。

  • 目标:我们必须在Ak Event Notify所发送到的位置获取Ak Component。
  • RTPC: Pawn_Speed
  • Value: Get Speed(获取速度)(基于速率)

 FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

建立一个由RTPC控制的Switch

  • 建立一个名为FS_Type的Switch Group,将Walk和Run作为Switch的值。
  • 建立一个名为Pawn_Speed 的RTPC。

                            Min (最小值)=0(pawn空闲)

                            Max(最大值)= 300(最大速度)

                            Default (默认值)=0

FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

  • 在我的例子中,我知道0≤Walk Speed(行走速度)<250≤Run Speed(奔跑速度)≤300(您可以将Wwise连接到Unreal并对发送到pawn的RTPC进行性能分析来实时跟踪这一速度)。
  • 勾选Use Game Parameter并建立像这样的一个“阶梯”,来将Pawn_Speed RTPC联系到FS_Type Switch。

FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

我们的Switch现在就是由游戏发出的RTPC值来控制了:

  • 0<Pawn_Speed≤250时Switch到Walk
  • 250<Pawn_Speed≤300时Switch到Run

  • 导入所有您工程对象层级中的Run Assets(奔跑素材)音频文件,并基于FS_Type建立一个新的Switch Container,它将包括基于Material的两个Switch Container。您会得到类似这样的结果(您可以使用Bradley Meyer的方法迅速地完成这件事)。

  FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

  • 建立您的SoundBanks,进行游戏,并好好享受吧!

Unity 3D

设置Tags(标签页)

  • 点击您地图里任意的actors并进入Inspector(检视)窗口。
    • 点击Tag下拉菜单并选择Add Tag(添加标签页)…

FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

  • A在这个窗口添加Wood,Concrete,Grass和Tiles的值。

FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

Ground (地面)设置

  • 对每个玩家行走可以踩到的地面/对象,将Inspector窗口里正确的Tag分配到Collider(碰撞体)。
    • 有时Collider并不是是嵌入网格的,所以要确认将Tag设置到Collider而不仅是网格上。

FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

 

C Sharp 代码

  • 把这段C#代码添加到您项目的Character Controller(角色控制器)。
  • 变量声明:

FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

  • 主脚本:

FOOTSTEPS MATERIAL MANAGEMENT - using Wwise / Unreal Engine 4 / Unity 3D

希望您喜欢这些,我也期待不久的将来在Audiokinetic博客上和你们分享更多游戏音频知识!

塞巴斯蒂安 盖拉 (Sebastien Gaillard)

塞巴斯蒂安 盖拉 (Sebastien Gaillard)

评论

棋圣 邓

July 20, 2017 at 11:14 pm

收藏了,很有用

留下回复

您的电子邮件地址将不会被公布。

更多文章

如何利用声音来影响玩家表现

...

23.10.2018 - 作者:OSCAR COEN(奥斯卡·科恩)

《硬核机甲》(Hardcore Mecha)的音频设计 - Part 2

请阅读第一部分。 整合 整合上,为了能快速尝试音频设计的效果,我们大量运用了Wwise Type进行配置,所有的声音配置和绝大部分的Game Syncs内容都是将Wwise...

11.11.2019 - 作者:王健安

Wwise八个易忘小操作

大家好,我是来自深圳创梦天地乐逗的音频设计师洪伟森,主要负责自研部门的游戏音效设计与制作,和Wwise项目整合工作。...

2.3.2020 - 作者:洪伟森

Wwise语音管理探究

游戏的角色语音管理是一项细致且繁琐的工作。从项目的前期到后期,会遇到对角色语音的增删改查、添加动态效果处理及创建不同语种间的切换等需求。建立一套稳定可靠的语音管理流程会为工作带来效率。...

2.3.2021 - 作者:吉吉(徐喆)

将 Soundly 与 Wwise 结合

将Soundly带入Wwise Soundly平台为Mac & PC提供了广泛的音效,其音效库还在不断扩大。结合云存储(通过Amazon S3、Google...

19.10.2022 - 作者:SOUNDLY

借助 IR 混响增强声音的真实感

8.9.2023 - 作者:BOOM Library

更多文章

如何利用声音来影响玩家表现

...

《硬核机甲》(Hardcore Mecha)的音频设计 - Part 2

请阅读第一部分。 整合 整合上,为了能快速尝试音频设计的效果,我们大量运用了Wwise Type进行配置,所有的声音配置和绝大部分的Game Syncs内容都是将Wwise...

Wwise八个易忘小操作

大家好,我是来自深圳创梦天地乐逗的音频设计师洪伟森,主要负责自研部门的游戏音效设计与制作,和Wwise项目整合工作。...