Hello . 大家好,今天给大家模拟unreal中灯泡接触不良,我是木偶心没。一起来看这篇Unreal教程,BluePrint制作灯光闪烁效果。
先理一下思路,一般游戏中的灯光不只是有直接从引擎里面拉出来的物理灯光,更需要有emissive的模型灯光,即我们的mesh文件,所以整个灯在闪烁的时候,物理灯光比如point light的强度变化要和模型灯光的emissive变化是要同频并且强度变化要一致。
所以最方便的就是直接在模型灯光的BP中控制强度和emissive的值。

如下,手残党直接拉的一个圆柱体当做模型灯光,并给了一个简陋的emissive材质;

注意自发光的大小一定要暴露出来,方便在蓝图中读取。
然后右键给这个mesh创建蓝图,并在蓝图中添加一个point light。

日常生活中接触不良的灯泡的闪烁频率其实是不一样的,也就是每个亮度的持续时间是不一样的,所以我们需要在设置物理灯光的intensity和模型灯光的emissive之前进行亮度持续时间的设置,所以在Event Graph中,在Event BeginPlay 添加一个Delay节点。

而Duration值的话需要输入一个随机数Random Float in Range,范围大概在0到0.5之间,因为推迟的时间不能长,接着开始给模型的emissive设置一个随机值,首先用节点Set Scalar Parameter Value on Materials获取材质里面暴露出来的参数emissive power,Parameter Value同样给一个随机值,范围0-1。

然后用节点set intensity设置物理灯光的intensity,强度的话我们先用前面模型灯光的随机值乘上10000(因为物理灯光的intensity有点大)。由于需要不停的变换值,所以我们把最后的输出结果连到最开始的delay上面进行一个循环。

Compile后在场景中运行可以看到,两个灯光都在变化,但是仔细看就会发现只是变化频率一致,而强度变化并不一样,在物理灯光近0的时候,而模型灯光还是近1的值。

这是因为给到模型emissive的random值并不会同时被运用到物理灯光的intensity上,而是在走到set intensity的时候就变了一个随机值,所以我们现在要改的是将模型随机了以后的emissive的值给到物理灯光的intensity。我们就需要一个中间值来进行传递,才能保证两边的数值是一样的。
我们在左侧新建一个float的变量current emissive,然后拉到蓝图中选择set,将模型的随机emissive值给到set,然后把set放在set scalar parameter value on material之前。

再拉一个surrent emissive到场景中然后选择get,把get到的值输入到set scalar parameter value on material的parameter value和set intensity的new intensity中
再次编译就可以看到我们开始的效果,两个灯光属性的变化一致,同时增强或者减弱,并且时间和强度随机。

一般为了使用方便,我们还需要把里面的数值参数暴露出来,是否闪烁也可以添加开关,方便艺术家在外部进行调整,完整节点如下;

来源:Thepoly公众号
上一篇 Unreal如何优化贴图?
热门课程
专业讲师指导 快速摆脱技能困惑相关文章
多种教程 总有一个适合自己专业问题咨询
你担心的问题,火星帮你解答可灵年化5亿美元谷歌带队出海安徽举办省级漫剧大赛AI设计日报0623
可灵正推进从快手分拆独立运营,内部方向为2027年初递交港股上市申报 来源:上海证券报(2026-06-17) AI短剧"产......
火星时代
腾讯又放大招这款AI工具让游戏美术效率提升300是真革命还是噱头
但对于追求极致细节的资深原画师来说,自动化程度高也意味着部分控制权让渡,需要适应 实测体验:响应速度确实惊艳,比传统生图的等待......
2026年,AI短剧早已不是"写一段提示词等生成"的粗放阶段真正拉开差距的,是谁先把从立项到出片的整套工业化流程跑通 过去做A......
什么是负面提示词? 在AI绘画中,我们通常用正向提示词告诉模型想要什么——比如"一个穿红色连衣裙的女孩站在海边"这时候你需要一......
做AI漫剧最头疼的是什么?不是剧情写不好,不是场景出不来——是角色脸上的表情 想写角色开心,只会一句"他开心地笑了";想写难过......
同学您好!