UE4动态音频

学习官网教程动态音频,记录一下重点,方便以后进行查阅,故本博文不会全部更近教程中所有提及到的知识,推荐大家学习一遍教程后,有了自己的理解后再查阅本博文,温故而知新。这里附上官网教程地址ClickHere
在这里插入图片描述


往期音效笔记
1.UE4环境音效与程序化音效(1)
2.UE4环境音效与程序化音效(2)
2.UE4动态音频
3.UE4音效与空间


1.通过布尔切换音频

在这里插入图片描述
同时可以在音效播放完成之后绑定Audio Finished函数,并设定对应的自定义函数,在音效播放的时候添加判断,防止音效多次播放
在这里插入图片描述

2.通过整数切换音频

在这里插入图片描述

3.使用时间轴控制音频体积

使用时间轴来控制,你可以实现一些从无到有,通过控制音频的音量来实现一些特定的效果。
在这里插入图片描述
点开时间轴你可以自定义曲线的形状。
在这里插入图片描述

4.使用浮点值设置音效映射变量

在这里插入图片描述
这里蓝图中是通过CurveTime,来设置Layer01Audio音效的音量的。

在这里插入图片描述
转到前面的蓝图就会看到CurveTime值得设定,通过Map Range Clamped(映射范围限制),这里实现得功能是,通过检测SMTorchVar移动得距离,来控制音量得大小,最大得移动距离是250,对应着映射值1。最小为0。从而控制音量得大小。
不过这里得注意得是,音量得变化是线性得,如果你想让音量变化是非线性得。你可以自己自定义一个Curve
创建方式如下:
在这里插入图片描述
在这里面你可以自定义曲线
在这里插入图片描述

随后来到蓝图中,创建一个CurveFloat类型得变量Layer_01,将自己刚才自定义得曲线赋值给该变量。
在这里插入图片描述
随后再替换刚才得Curve Time,利用Get Float Value函数,这里Target对象是CurveFloat类型得,也就是我们刚才创建得Layer_01
在这里插入图片描述

5.在SoundCue内部控制布尔,整数和浮点

在文章开头我们是在蓝图中控制Bool和整数来判断播放得音效,这里我们在SoundCue内部进行实现。
Bool
在这里插入图片描述
使用Branch节点,同时设置节点变量名,在左侧面板中你可以设定
在这里插入图片描述
然后我们就可以回到蓝图中,替换我们一大堆得判断,判断后才进行选择播放哪一个音效
在这里插入图片描述
利用节点Set XX Paramater,(你要设置怎样得变量,需要你来定,这里我们用得是Bool,所以是Boolean Parameter),同时要注意得是Name变量名一定要正确。

整数
在这里插入图片描述
使用Switch节点进行整形设置,0-1-2对应着不同得音效,同样要记得命名变量名。在这里插入图片描述

浮点
在这里插入图片描述
利用Continuous Modulator节点进行设置,需要注意得是,该节点可设置得变量为两个,一个为Pich(音高)一个为Volume(音量),看自己得需求来进行设定。
在这里插入图片描述
在这里插入图片描述
在SoundCue内部设置,和在蓝图中设置各有各得好处,需要灵活运用,来简化我们得操作,大家需要自己进行权衡。

6.音频事件控制实例

通过判断玩家高度来控制风声的大小及频率

在官方教程中,打开蓝图Audio_Trees_Wind_Height可以看到该功能的具体实现。

首先我们来看看变量的设定
在这里插入图片描述

(Min\Max)Delay_Time: 对应着我们最小最大延迟播放,及音效的频率
Start_Height: 最低位置0
End_Height: 最高位置1

这里我们需要实现,在低位置,风声以及风的频率都不会很高,在最高位置到达最大,并且会播放树叶摇曳的声音。
在这里插入图片描述
首先我们看左侧的红框,获取玩家的高度及Z轴,利用MapRangeClamped函数,将值限定在0-1范围内,对应着Start HeightEnd Height。右侧的设置为音频限制,因为获取的是0-1的值,所以In RangeA-B设定为0和1,再与Max\MinDelayTime进行映射,输出的值利用Random Float Range函数增加随机性。这里我们便获得了两个值,一个是音量的限制范围0-1,一个是音频的限制范围(不是0-1,需要你自己进行设定),当然这两个值随着人物高度变化而变化。
在这里插入图片描述
这里输入的值便是音量的范围,接入Volume Multiply便实现了音量的控制。同时判断该值是否>0.8,来判断播放树叶摇曳的声音。后面的Retrigger自定义事件是用来触发下文的事件检测函数的。至此音量得判断便解决。
在这里插入图片描述
最后将上文取得的频率值,与Set Timer By Function Name函数结合使用,该事件检测函数利用延迟检测Time来触发Trigger_Sound(播放风声得函数),至此实现风声频率的切换。

7.音频与动画

你可以在动画中添加Notify(通知)来设置动作的音频,添加方式如下:
在这里插入图片描述
在右侧面板中设定音频Sound
在这里插入图片描述
需要注意的是这里的Follow跟随的是骨骼的名字
在这里插入图片描述
设置之后你可以在控制台输入Audio3dVisualize进行Debug测试(需要在游戏中),可以看到发出声音的位置
在这里插入图片描述

但这种方式的局限性在于,只能播放一种音效,不具有多样性。例如我们播放走路的音效,需要判断SurfaceType(地表种类)来播放不同的走路音效,就不能使用这种方式了。
于是我们得用另外一种方式来设置走路音效:
1.首先在人物的走路以及跑步动画中添加新的Notify-Footsetp
在这里插入图片描述
2.在人物动画蓝图EventGraph事件图表中输入刚刚创建的Notify-Footstep
在这里插入图片描述
同时利用LineTraceByChannel检测地表的类型,方式是人物的Z轴减去200(值可以自己测试)
在这里插入图片描述
将检测到的PysMat获取他的SurfaceType,再利用Select节点,进行选择播放。这里生成音效的方式是Spawn Sound Attached,因为走路的音效肯定是附着在人物身上的。
当然这里的SurfaceType可以自定义,设定的方法如下:ProjectSettings(项目设置)->Physics(物理)->Physics Surface(物理表面)
在这里插入图片描述
3.同时为了多样性,我们可以通过速度来设定走路音量的大小。
在这里插入图片描述
利用Normalize To Range 节点将Speed速度变量映射至0-1,当然这里的最大值与最小值取决与你动画中设定的值。速度越大发出的声音也越大。
4.除此之外我们还可以更进一步的优化么?有的,你可以通过曲线的方式混合走路与跑步的音效,同样也是通过判断速度的方式。
我们可以将蓝图优化至如下:
在这里插入图片描述
首先我来说明一下该蓝图,首先播放走路的音效,随后将Speed单位化0-1,再利用GetFloatValue节点,播放曲线(Footstep)对应的部分,再设置音效的大小。下面播放的是跑步的音效,方式同理走路音效。这里你就有疑问了,那这不就播放了两种音效了么。
至此我们来看看两者曲线的对比。
在这里插入图片描述
至此你可以发现,走路曲线在0-0.25上升到最大值0.25-0.8逐渐淡出。而跑步的值为1时到达最大值。这里控制曲线的走向便是Speed(把它单位化到0-1的原因)。所以这蓝图就可以实现走路与跑步声音的混合,使得更加自然多样化。

8.Particle粒子音频

设定粒子的音频时,你需要以下几步;
1.打开你需要设定的粒子
在这里插入图片描述
创建事件,右键空白面板Event(事件)->Event Generator(事件生成器)
然后单机生成的Event Generator,左侧面板进行设置:
在这里插入图片描述
这里的Type根据情形设定,这里我们设定Spawn(粒子生成时触发),注意的是变量名字Custom Name一定要记得设定。
虽然自定义一个蓝图类,在面板中添加ParticleSystem
在这里插入图片描述
点击后赋值自己刚刚设定的粒子
在这里插入图片描述
随后细节面板拉到最下面,可以看到可以触发的事件
在这里插入图片描述
这里我们选定点击OnParticleSpawn
在这里插入图片描述
EventName设置成刚自己自定义的名称便可以触发了。
同样的我们在来设定一下当粒子发生碰撞的时候的事件;
Type设定为Collision
在这里插入图片描述
再选定事件On Particle Collide
在这里插入图片描述
因为粒子碰撞到不同表面发出不同声音,所以这判断了一下SurfaceType
再设定粒子的音效的时候我们还需要注意一个点,因为粒子的渲染是在我们的视野范围之内才会被渲染出来,那当我们看不见它的时候就不会渲染,但这便会引发一个问题,我们隔得它很近,不在视野范围内就听不见它得声音。要避免这种情况得方法是。
点击粒子细节面板中Bounds设定勾上Use Fixed Relative Bounding Box。上面得各类参数是设定渲染的距离。
在这里插入图片描述

9.基于物理的音频

音效通常是由物理数据驱动的,例如两个物体相撞时就会播放一个音效,这里讨论如何约束和映射这些数值,让它们可以用到音频上,以及如何混合不同的音效,同时保留不同冲击强度下呈现的多种音效。

9.1案例1撞击木桶

在这里插入图片描述
教程中给的案例为,该木桶撞击到木板上,根据木板的高度发出不同的碰撞音效。
首先我们需要为木桶模拟物理,以及生成碰撞事件
在这里插入图片描述
随后生成事件Event Hit
在这里插入图片描述
将收到的冲击力单位化至0-1范围内,赋值给Force,再将Force赋值给音效。
你可以通过控制台输入AudioSoloSoundClass Collision(只播放造成碰撞的音效)来进行测试(这样可以防止其他音效影响),这样你就可以听出不同力度发出音效的音量。

上面的情况适用于只有一种音效,现在我们来混和一下三种不同的撞击音效,Soft,Medium,Hard在这里插入图片描述
官方教程中给了这三个音效的曲线。现在我们同样利用Get Float Value进行混合在这里插入图片描述
同时来观察一下三个曲线
在这里插入图片描述
可以发现三者曲线在0-1范围内进行切换,并发现交界处并不是完全只有一个音效。而这也更符合实际情况。

9.1案例2滚动木桶

在这里插入图片描述
教程中给的案例为,木桶滚动根据滚动速度发生不同音效,撞击到物体根据受力发出不同音效。据此我们需要关注木桶的x轴的角速度。
在这里插入图片描述
利用Get Physices Augular Velocity In Degrees(通过角度获取物理角速度),将其X轴的值赋值给Rotation Speed,和上文相似,将Normal Impulse 赋值给Force
首先我们来看滚动音效的蓝图:
在这里插入图片描述
这里通过判断角速度是否接近于0,进行播放滚动音效的Fade Out淡出
在这里插入图片描述
上方蓝图,Do Once 防止音效多次触发。Reset的条件是播放了Fade Out。同时我们需要注意的是,木桶滚动的音效的开始Start Time不能每次都是从0开始,如果每次都一样,你听到的滚动音效就会是一样的。所以这里获取音效的Duration(持续时间)在(0-Duration-1)随机选一个时间开始播放。
下方蓝图控制音效的音量(Volume Mulitiplier)和音高(Pitch Multiplier)。

接着我们来看撞击的蓝图:
在这里插入图片描述
同样需要DoOnce,利用Map Range Clamped(映射范围限制)将上文获取的Force赋值给音效

9.1案例3滚动Box

在这里插入图片描述

这里我们需要注意的是盒体就不能再关注其角速度了,而是它的线性速度。
在这里插入图片描述
后面的蓝图和上文提及的基本一样,所以不做讨论。

  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值