如何做一个Animated Fire?
第一个是让火焰图移动起来,这个我们只需要做UV的移动就可以。第二个是强度渐变,有一个类似正弦的曲线强度变化。
主要是让UV坐标移动按我们给定的速度和时间移动起来。如果要做丰富一点的变化,还可以加入强度,让强度滑块在时间内做正弦变化。
需要使用到的节点是Panner。
Panner节点根据时间值将UV坐标或其他Vector 2位置移动指定的Speed。如果在“ 时间”输入端口上未设置任何输入,则使用Unity计时器提供连续的平移动画。在这种情况下,“时间”属性充当Unity计时器值的乘数。 另一方面,如果在“时间”输入端口上建立了连接,则它将假定该值为最终值,并且在内部不使用任何类型的计时器。
必须将所需要移动的纹理的wrap mode 设置为repeat。Panner所需要三个Input,一个是UV,一个是Vector2作为Tilespeed,一个Time(可以选择缩放时间,慢几倍,快几倍)
这样TileableFire就做好了。将这张纹理与Mask 相乘得到的图,我们可以用一个Intensity作为滑块来控制,让该火焰的强度做正弦时间的变化,丰富一下效果。
我们为了让火焰的变化保持持续,而不是从显示到消失,我们可以将Sin时间加上一定的数值,
然后乘以强度,这样整个正弦的值都会大于0,并且强度变化会比较明显。最后再放到Emission中输出出去。
通过这个案例还知道了在ASE中可以将Emission写成一个Function,最后在shader中以Function的形式拿出来用,只需要将我们需要改变的几个参数用FuntionInput代替即可。