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如何优化贴图?
热门课程
专业讲师指导 快速摆脱技能困惑相关文章
多种教程 总有一个适合自己专业问题咨询
你担心的问题,火星帮你解答在数字技术重构创意产业的浪潮中,武汉虚幻引擎培训正成为从业者拥抱未来的重要通道。作为华中地区科技创新核心城市,武汉依托雄厚的工......
在数字经济快速发展的当下,北京UI设计培训正成为连接数字产品与用户的重要桥梁。作为全国互联网企业最集中的城市,北京UI设计师岗......
在影视创作的数字化浪潮中,每一帧画面的诞生都是技术与艺术的共生成果。作为全国影视产业的核心引擎,上海影视后期培训领域正以年均1......
在数字经济与视觉科技深度交织的当下,武汉这座长江经济带核心城市正悄然打造三维视觉产业高地。作为全国重要的科教基地,武汉依托百万......
在数字经济蓬勃发展的今天,UI设计作为连接用户与产品的视觉桥梁,已成为影视、互联网等领域的核心岗位。武汉这座"设计之都"凭借中......
在数字经济蓬勃发展的今天,北京UI设计培训作为连接用户与产品的核心技能,持续为影视、互联网、智能设备等领域输送专业人才。作为全......
同学您好!