【转载】Unreal | 玩个火

297 阅读2分钟

原文链接:Unreal 玩个火 | Thepoly

图片

Hello . 大家好

今天亲手给大家玩个火

我是木偶心没

首先先上卖家秀

640 (1).gif

燃烧动画是通过贴图的 uv 偏移来产生的,在 uv 的偏移上再加一个 noise 扰动就可以模拟燃烧的效果。

1. uv 动画

首先做第一层燃烧效果,让 noise(designer 里面拉一个)动起来去采样一张 normal 贴图

图片

  • 单独预览效果如图

640 (1).gif

我们再给前面半秒加一个动画,和前半部分进行融合,让动画连贯起来。

还是用原来的 noise 贴图,但是把时间错开 0.5

图片

  • 预览效果和之前差不多

640 (1).gif

2. Blend Mask

Mask 也给一个动态的,直接用原来 frac 后的时间,这个时间范围是在 [0,1],我们用把兰伯特思想把范围映射到 [-1,1],再取绝对值,就可以得到一段全黑的 mask ,用这段 mask 去blend 上面的两个 uv 动画

图片

混合出来效果大致如下,暴露 multiply 的值,还可以控制混合的效果。最后的结果输入到 opacity mask 可以让物体燃烧没掉。

640 (2).gif

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. 增加蓝图控制燃烧范围

由于燃烧的范围是可以根据 PositionRadius 来控制的,所以我们可以将 PositionRadius 直接在蓝图里面控制或者做成一个全局的 MPC 来用蓝图控制范围

这是一个简单的蓝图

图片

然后在 MPC 里面控制 mask 的半径就可以燃烧起来(买家秀)

640 (1).gif

后期加个粒子,应该问题不大(不会粒子的乱说)- _ -

- End -