第四节 粒子火焰应用
使用流体固然能够制作非常逼真的火焰效果,但是局限性却也不言而喻,这里我们就制作一个喷火的鸭子,这个特效只有用Cloud粒子才能制作:
还是这只鸭子,不同的是这次为它制作了一段动画:
这一节就配合最后那个张大嘴巴的动作制作一段喷火的效果,方法:使用cloud粒子。
这就开始做:
首先制作一个粒子发射器,并且将发射器固定在鸭子的嘴巴上面(其实就是让粒子发射器跟随鸭子的头移动),所以使用菜单命令Particles-CreateEmitter创建粒子发射器:
将粒子发射器连接到头部骨骼上:
接下去为粒子发射器的发射率(Rate)设置关键帧,因为鸭子在前面作动作的时候是不发射粒子的:
将动画播放到鸭子张大嘴巴喷出粒子的时间段,可以看到喷出粒子的运动状态不错,不需要控制什么了(如果愿意可以加一个动乱场产生点混乱的感觉):
接下来就是把粒子渲染属性改成Cloud类型:
然后跟着就是控制火焰粒子的大小状态了,粒子从嘴巴里出来的时候是很小的,可是到了快要烧尽的时候应该是最大的,所以就需要控制粒子的RadiusPP和生命周期了。
所以先为粒子添加RadiusPP粒子属性:
接下来控制RadiusPP粒子属性,为了达到先小后大的效果我们可以简单的使用Ramp控制就可以了。
为粒子的RadiusPP属性添加Ramp控制:
在调整Ramp的颜色结构前,把粒子的生命周期进行调整,因为默认的创建了Ramp控制以后粒子的生命周期会被设置成为Constan1的。
调整粒子的生命周期:
通过调整Ramp的颜色结构和颜色映射值来达到控制粒子大小变化的目的:
在RadiusPP粒子属性上用鼠标右键单击:
进入Ramp调整颜色结构,将粒子的大小先后顺序制作出来:黑色是产生时候,白色是结束时候:
继续在RadiusPP粒子属性上用鼠标右键单击:
进入调整颜色的映射值,通过映射值改变黑色和白色代表的数值,控制粒子最小的大小和最大的时候的大小:
通过上面的调整,粒子的运动和控制就都差不多了,接下去就是控制cloud粒子的材质了。
通过为粒子材质的贴图制作出火焰的效果,首先为粒子添加新的体积材质ParticleCloud2和新的表面材质Lambert2:
添加新材质:
对体积材质和阴影表面材质进行调整:
采用分开调整的方法(灯光不用制作了,因为场景里面已经有灯光了),首先把体积材质ParticleCloud2的浓度(Dysity)降低到0,这样就不会把体积材质渲染出来,从而达到屏蔽体积材质的效果:
接下来调整表面材质的融合度,选中粒子进入属性编辑器,在渲染属性中对Surface Shading和Thershold进行控制:
由于背景是黑色的,所以表面材质颜色暂时没有改成黑色(否则就和背景融合无法分辨了),还是使用默认的灰色,暂时性的用来调整融合度的测试,如果测试好了就可以把颜色改成黑色的(当然了,如果读者对火焰的阴影有独特的见解可以调整到其他的颜色):
渲染测试:
如果觉得这种融合度满意了,就可以把表面材质的颜色设置成自己想要的颜色,同时把粒子的体积材质ParticleCloud2的浓度(Dysity)适当升高,产生与阴影的融合:
有了满意的体积材质和表面材质的融合后,就可以进行体积材质的颜色制作了,制作这个火焰的颜色和制作爆炸的颜色几乎是一样的,首先给ParticleCloud2的LifeColor一个Ramp纹理:
默认的,同时Color属性也同时被赋予了同样的Ramp纹理,也就意味着,粒子从出生到死亡依次表现出Ramp颜色结构里从下到上的颜色。
所以下一步就是对Ramp纹理的颜色结构进行设置。
对Ramp颜色结构进行调整:
其中Crater的颜色设置如图:
Crater的纹理坐标设置如图:
这时的效果如下:
大体效果已经出来,由于是做火焰,所以最重要的就是火焰要有撕裂的感觉,能够透出阴影融合出来,所以对BlobMap的控制就显得非常重要。
在BlobMap属性上进行贴图能够控制总体的透明,而不是每一个粒子的透明,所以通常会被用来“撕裂”体积材质。
给BlobMap属性一个Crater纹理:
其中Crater的颜色设置如图:
Crater的纹理坐标设置如图:
这时的效果如下:
撕裂的效果和阴影融合完全体现出来了,仔细观察发现火焰的透明是不对的,因为从最里面出来的时候火焰应该是最不透明的,在快要烧尽的时候应该是很透明的,所以要制作一个LifeTransparecy,来控制基于粒子生命周期的透明。
给LifeTransparecy属性一个Ramp纹理:
Ramp的颜色结构如下:
适当调整Noise参数和Roundness的数值然后进行渲染测试,直到满意为止。
加一点glow效果就更好了:
粒子的体积材质ParticleCloud2有了LifeTransparecy效果是不错,但是表面材质还没有LifeTransparecy,这样在粒子火焰燃烧尽头的地方就会有太多的阴影浓度:
所以,表面材质Lambert2同样需要一个LifeTransparecy,但是普通的材质是没有这个属性的,那么我们就手工打造一个LifeTransparecy的材质节点:
在材质编辑器里面创建如图两个节点,一个ParticleSamples,一个Ramp纹理节点:
使用ConnectEdior将ParticleSamples的OutUVCood属性与Ramp节点的纹理放置坐标节点的UVCood属性连接起来:
有了ParticleSamples的接入,ramp纹理就能够产生类似LifeColor的那种,随着粒子年龄的增加依次体现ramp纹理从下到上的颜色的效果。
接下来调整Ramp的颜色结构,并且将纹理连接到表面材质Lambert2的Transparency。
调整Ramp的颜色结构如下:
连接Ramp材质的输出颜色到表面材质Lambert2的Transparency:
现在表面材质也有了LifeTransparecy,于是就不会出现体积材质透明的地方阴影效果过于明显的问题了,下面是对比:
最后,如果读者愿意,可以为ParticleCloud2的LIfeIncandidency进行贴图来取代简单的使用Glow来产生更加复杂的火焰。
下面这张图只是简单的将LifeColor的纹理连接到了LIfeIncandidency上面,同时关闭了glow属性的效果,两种效果各有特点,读者可以做一下比较:
LIfeIncandidency的效果:
Glow属性的效果:
如果渲染测试没有问题了,在进入实际渲染之前,依然是要制作材质动画,很简单的为crater的三维纹理坐标制作动画,有两个crater纹理,所以要为两个纹理坐标设置相同的动画:
这里让纹理沿着Z轴运动,是因为鸭子是向Z轴喷火的。纹理和粒子运动方向一致就不会产生很奇怪的感觉了。
这里使用了很简单的表达式控制坐标物体的移动:
最终效果如下;
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。