原文链接:Unreal 玩个火 | Thepoly
Hello . 大家好
今天亲手给大家玩个火
我是木偶心没
首先先上卖家秀
燃烧动画是通过贴图的 uv 偏移来产生的,在 uv 的偏移上再加一个 noise 扰动就可以模拟燃烧的效果。
1. uv 动画
首先做第一层燃烧效果,让 noise(designer 里面拉一个)动起来去采样一张 normal 贴图
- 单独预览效果如图
我们再给前面半秒加一个动画,和前半部分进行融合,让动画连贯起来。
还是用原来的 noise 贴图,但是把时间错开 0.5
秒
- 预览效果和之前差不多
2. Blend Mask
Mask 也给一个动态的,直接用原来 frac
后的时间,这个时间范围是在 [0,1]
,我们用把兰伯特思想把范围映射到 [-1,1]
,再取绝对值,就可以得到一段全黑的 mask ,用这段 mask 去blend 上面的两个 uv 动画
混合出来效果大致如下,暴露 multiply
的值,还可以控制混合的效果。最后的结果输入到 opacity mask
可以让物体燃烧没掉。
3. BaseColor
我们在最后的混合结果上做一些限制,增加对比度等来增加白色的区域,然后给一个颜色作为底色物体的颜色。
4. Emissive Color
同样调整混合效果,作为边缘燃烧的颜色 mask
5. 控制燃烧范围
目前的效果是整个物件都会燃烧没掉,所以我们只做一个 mask 来控制这个燃烧范围
首先做一个平面的 mask,用 sphere 做出的 mask (SphereMask
)减去之前的混合 mask
- 效果如下
但是由于我们材质给到场景中以后,是三维的,所以需要使用Absolute World Position
,不然就会是下面的效果。
注意,sphere 的 A 输入 float3
以后,B 也要输入一个 float3
为了看到效果,此时的 Position
最好给到物体本身的坐标值
改一下 Emissive Color
6. 增加蓝图控制燃烧范围
由于燃烧的范围是可以根据 Position
和 Radius
来控制的,所以我们可以将 Position
和 Radius
直接在蓝图里面控制或者做成一个全局的 MPC 来用蓝图控制范围
这是一个简单的蓝图
然后在 MPC 里面控制 mask 的半径就可以燃烧起来(买家秀)
后期加个粒子,应该问题不大(不会粒子的乱说)- _ -
- End -