使用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

收藏了,很有用

留下回复

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

更多文章

在Mac环境下使用Wwise为VikingVillage 进行声音设计

背景 近日在完成了 Wwise 301 认证课程的学习之后,我以 Unity 商店中提供的 Viking Village 免费 Project 为基础,对其进行了全面的声音设计,并在 Mac...

16.3.2020 - 作者:孙宇轩

《ABZÛ》– 在游戏中为成千上万条鱼设计音频所面临的挑战

看到这幅画面,你首先会想到什么?

30.6.2020 - 作者:史蒂夫·格林 (Steve Green)

Tell Me Why | 音频日志 – 第 2 部分:音乐

《Tell Me...

30.3.2022 - 作者:路易斯•马丁 (Louis Martin)

早期采用者对 Strata 多音轨 SFX 库的评价

Strata 的诞生 在过去的四五十年里,SFX 库创作者都在以大致相同的方式制作和分发内容:录制、编排、混音并渲染构建的声音,然后将基于主题的数据包出售给用户。如果我们排除一些例外情况 – 比如...

2.12.2022 - 作者:西蒙.阿什比(Simon Ashby)

Wwise Spatial Audio 2023.1 新增功能 | 对 Aux Send 模型进行的完善

如果各位了解过 Wwise 2023.1 的新增功能,可能会注意到文档中有这么一句话:“对 Aux Send 模型进行的完善”。这个到底是什么意思呢?今天我们就来详细说说。在此,我会简要介绍对...

14.12.2023 - 作者:内森 哈里斯(NATHAN HARRIS)

借助互动音频增强游戏的可玩性

简介 我叫马特•摩尔多万,多年来一直从事电子游戏的声音设计、音频实现和作曲,目前在位于匈牙利的 Nemesys Games...

12.2.2024 - 作者:马特•摩尔多万 (Máté Moldován)

更多文章

在Mac环境下使用Wwise为VikingVillage 进行声音设计

背景 近日在完成了 Wwise 301 认证课程的学习之后,我以 Unity 商店中提供的 Viking Village 免费 Project 为基础,对其进行了全面的声音设计,并在 Mac...

《ABZÛ》– 在游戏中为成千上万条鱼设计音频所面临的挑战

看到这幅画面,你首先会想到什么?

Tell Me Why | 音频日志 – 第 2 部分:音乐

《Tell Me...