前言
最近公司有个活涉及到DMX打光的活,还比较急。为了减少美术同学的压力,所以我就想通过音乐分析+播放Sequence的方式来实现。
UE有自带基于FFT的音乐分析功能,但只能根据频率进行对应的判断,比较麻烦所以放弃了。具体操作可以参考:
https://www.bilibili.com/video/BV1FP411c79v/
AudioAnalysisTools
这里推荐使用audio-analysis-tools,原因是免费且开源,默认带有一些预设:IsHiHat、IsBeat、IsKick、IsSnare,同时可以通过频率范围来判断节拍。但也正因为此一些功能不够完善,需要自己改一下。
下载地址:https://www.unrealengine.com/marketplace/zh-CN/product/audio-analysis-tools
以下是我做的一个案例,通过音乐分析与K帧来播放对应的子Sequence(预先K好DXM动画)来实现音乐控制DMX灯光效果:
IsBeatRange是根据指定频率声音的音量进行判断,这里可以根据需要来设置判断条件:
因为逻辑是写在Actor中的,所以搞了按键事件来停止音乐播放。
不过需要注意:启用这个插件之后导入Wav就会变成这个资产。如果想要获得SoundWave资产就必须停用插件并且再次导入。
DMX移植
只需要在新工程里启用DMX插件,之后将官方的DMX的工程迁移即可。需要注意的是Sequence里的需要使用DMX,里面设置好DMXLibrary以及补丁(这中文翻译槽点满满)即可。
后续工作
这个方案有一些缺点:
- AudioAnalysisTools需要播放声音才能获取的数据。
- AudioAnalysisTools无法使用UE自带的Asset,同时会导致无法在导入后生成SoundWave Asset。
- 无法在Sequence停止播放时停下(更好的控制)或者在拖动轨道时执行正确的行为。
这就需要通过自定义Sequence Track以及修改插件才能完美实现。