首页 百科知识 粒子和爆炸燃烧

粒子和爆炸燃烧

时间:2022-10-16 百科知识 版权反馈
【摘要】:之所以要为粒子发射器的速度和托拽场设置从大到小的关键帧,是为了制作爆炸以后燃烧的动态作准备的。爆炸以后就是燃烧,燃烧的时候球体粒子要向上升起来变成一个类似柱体的形状,要形成这种效果只需要使用立场将粒子拉上去就好了,所以为粒子创建一个统一场就可以了:所从,爆炸持续一秒钟(24帧)以后,开始进入燃烧,其中过渡用了半秒钟,运动形态是可以了。

第二节 Cloud粒子和爆炸燃烧

在影视作品中通常会看到气势磅礴的爆炸场面,通常给人以非常强烈的震撼力,真实的拍摄是不会有如此效果的,一则成本太高(炸掉一幢大厦有点不合算),二则过于危险(明星的命可是很值钱的呢),所以,基本上很夸张的爆炸场面通常都是制作出来的。

在Maya中制作爆炸时非常简单的事情,因为在Maya这个软件中有很多内置的流体效果,使用Visor就可以轻松的制作出非常专业的爆炸效果了(真不知道是应该高兴还是应该担心自己的饭碗):

img506

img507

img508

效果的确是非常惊人,但是流体相当的难以控制,要改变形态也不是一件容易的事情,使用Cloud粒子就可以完全可以产生同样的效果,而粒子的可控性是相当强的,所以爆炸、烟雾同样使用Cloud进行模仿,这里就使用一个爆炸来学习对Cloud粒子的爆炸应用的控制:

这里制作一个爆炸燃烧的效果,所以只需要在场景里面创建一个粒子发射器:

img509

把粒子的渲染状态变成Cloud类型:

img510

粒子出现了,接下来进入爆炸后燃烧的粒子运动控制:

爆炸就是一团球体;然后燃烧产生浓烟,就是粒子向上运动。所以粒子的运动过程应该是:首先发射成一个球,然后向上升起形成燃烧的形状(柱状)。

所以让粒子发射成一个球,粒子先快后慢并且要形成一个球体,这就需要用到粒子的发射速度Speed和一个托拽(Drag)动力场就可以实现了,所以首先将粒子的发射速度设置关键帧:

img511

粒子会被快速地发射出来,先快后慢,飞散的老远开来:

img512

发散得太开,这不是我们想要的,所以在快速扩散的同时如果有一个力,能够把粒子拖住,就可以产生一种矛盾的运动,那就是我们要的翻滚的粒子球了。实现这个效果只需要为粒子创建一个托拽(Drag)动力场(同样要为强度设置先大后小的关键帧)就可以实现:

创建Drag力场:

img513

为力场设置强度动画:

img514

这样粒子就会很快地发射出来的同时受到拉力的影响不得不慢下来,所以,里面的粒子很快地向外冲,外面的粒子受到拉力慢下来,这样就产生了一个爆炸球体。

img515

之所以要为粒子发射器的速度和托拽场(DragFiel)设置从大到小的关键帧,是为了制作爆炸以后燃烧的动态作准备的。

爆炸以后就是燃烧,燃烧的时候球体粒子要向上升起来变成一个类似柱体的形状,要形成这种效果只需要使用立场将粒子拉上去就好了,所以为粒子创建一个统一场(uniform)就可以了(为了一开始不影响爆炸球体的动画,为统一场的强度设置关键帧,开始为0,爆炸结束时为5):

创建Unidorm力场:

img516

为Unidorm力场设置动画:

img517

所从,爆炸持续一秒钟(24帧)以后,开始进入燃烧,其中过渡用了半秒钟(24帧~36帧),运动形态是可以了。

img518

img519

img520

最后是粒子自身的形状了:爆炸时候,粒子大小还可以,但是粒子上升变成烟雾了,烟雾是逐渐变大的扩散的,所以粒子应该在上升的时候逐渐变大,所以为粒子添加RadiusPP属性,并且添加Ramp产生先大后小的状态(当然了先把粒子的生命周期改一下,否则这个烟雾就没完没了了)。

调整粒子生命周期:

img521

为粒子添加RadiusPP粒子属性:

img522

接下来为RadiusPP粒子属性创建Ramp控制粒子的大小变化:

img523

修改Ramp的颜色结构:

img524

改变Ramp的应设值:

img525

最后,得到想要的粒子运动和形状:

img526

img527

img528

粒子的位置和形状控制并不困难,最重要的是粒子云材质(ParticleCloud材质)的控制,接下去的重点工作就是材质的调试:

和上一节的火焰是同一个原理,但是使用的手段有不同,其中有很多需要注意的地方,请读者仔细比较两个例子的不同之处:

首先当然是为粒子赋予ParticleCloud材质,并且播放到爆炸的位置,这样在调节材质的时候比较直观,我们的思路是:先把爆炸调出来,然后粒子上升了就变成烟雾了,也就是颜色变成了黑色,这就是用LifeColor很容易产生的效果。

赋予ParticleCloud材质以后,默认的渲染是很简单的蓝色团雾:

img529

接下来就开始为粒子进行贴图,将一个Ramp纹理连接到ParticleCloud材质的LifeColor属性上:

img530

调整Ramp的颜色结构并且为最下面的颜色进行再贴图,这次使用Creater用来模仿火焰的效果:

img531

之所以要把Ramp上面的颜色变成黑色,因为在粒子生命过程中,粒子在爆炸以后就变成了烟雾,而烟雾的颜色这里就简单的使用了一个黑色就可以了。

所以在材质编辑器里的节点连接网络是这样的:

img532

接下来调整Creater的颜色结构产爆炸的颜色效果:

img533

只有颜色是不够的,爆炸的感觉应该是内光外透的效果,所以需要将颜色上的Ramp材质添加到LifeIncandescence上面用来产生发光的效果:

自发光贴图:

img534

爆炸效果基本出来了:

img535

最后只要增加辉光效果就好了:

img536

爆炸的部分已经好了,接下去是燃烧冒烟的部分了,所以将动画播放到冒烟的部分:

img537

感觉上效果是很不错的,其实问题多多,主要是背景是黑色的,所以问题并没有出现,所以我们为摄像机制作一个背景。

img538

然后再渲染:

img539

问题出来了,透明的问题,还有烟雾边缘太过于光滑了。

所以首先调整整个粒子的透明问题:第一个需要控制的属性就是LifeTransparency,所以为其添加一个Ramp纹理:

img540

调整Ramp纹理的结构然后渲染:

img541

到此为止,爆炸燃烧的效果已经基本成型了,接下来就是细节的把握,烟雾的边缘应该是更加不规则一些,所以我们就必须使用BlobMap来产生这一细节,但是在爆炸的位置我们又不希望受影响,因为爆炸我们还是很满意的,所以最好是LifeBlobMap,不过可惜,maya没有提供这个属性,但是我们却可以自己制作出来。

我们已经知道,之所以会产生Life变化的效果,是因为有particleSamplerInfo节点,所以我们只需要一个particleSamplerInfo节点就可以自己制作出LifeBlobMap的效果了,所以用最简单的方法,把LifeTransparence的Ramp纹理节点网络复制一个,不就可以得到particleSamplerInfo节点材质网络了么。

img542

将复制出来的,带有particleSamplerInfo节点的Ramp的颜色结构作调整,并且将Creater纹理应用到该纹理上面:

img543

将Creater纹理的参数和颜色结构进行调整,并且将该Ramp材质纹理连接到ParticleCloud材质的BlobMap属性上:

img544

如此一来,爆炸位置的粒子就不会以BlobMap=0(白色表示0)的形式存在,也就是不受影响,而烟雾部分则受到Creater材质纹理的影响而出现毛糙的感觉,并且这种有影响和没有影响的范围都可以通过调整Ramp的颜色结构来很方便地调整。

渲染得到最终的结果:

img545

如果是制作单张图片到这一步应该已经结束了,但是如果是做动画,那么,这样还没有结束,因为火焰粒子有运动,但是Creater材质纹理没有运动,这样会造成火焰没有向上升的感觉,所以最后应该将Creater材质纹理的“纹理坐标定位器”制作向上运动的动画:

img546

这里使用了很简单的表达式,产生了纹理向上运动的效果。

img547

随着时间的变化,纹理坐标节点向上移动,形成火苗上窜的效果。

到此并未结束,只是完成了动画和粒子云材质的颜色和透明的设置,接下来的工作就是决定细节增加真实感的工作:

由于是有背景的渲染,所以为了让爆炸融合到场景里面,我们需要做两件事情:

1.为场景添加灯光,并且将光线的角度调整到合适整个场景的角度,同时打开光线追踪阴影(粒子云的透明必须使用光线追踪的阴影)。

2.增加地面接收阴影,但自身隐藏。

添加场景模拟灯光:

img548

添加地面阴影接收:

img549

地面使用了BackGround材质,这种材质可以产生和背景相融合,同时可以接收阴影,产生反射、折射等,并且最终与背景相融合。

再次渲染,爆炸产生了阴影,并且阴影的方向和大小和场景融合了:

img550

这样的爆炸边缘似乎有点过于虚化了,并且表面也没有爆炸时的表面才质阴影的感觉,所以先把边缘加强(使用粒子云材质的属性),增加Roundness:

img551

Roundness可以增加粒子云材质边缘的不透明感:

img552

再次渲染进行比较:

img553

就算是边缘不虚化了,有体积感了,但是还是没有实体的感觉,没有表面张力的感觉,只是因为我们没有打开这个选项:

img554

这些属性在本节一开始就有所介绍,可以仔细阅读了解。

设置了SurfaceShading以后,就必须为粒子添加表面材质用来产生表面张力的阴影,配合Threshhold属性产生的功能与BlabySurface完全一样,如果读者愿意可以把SurfaceShading设置成为1,产生的效果和BlabySurface完全一样,没有了粒子云材质,只有表面材质,能够配合Threshhold属性产生流体的效果。

所以接下来为粒子添加表面材质:

img555

有了表面材质再进行渲染:

img556

效果很不错了,但是新的问题随之出现了,当我们播放动画到比较后面再进行渲染的时候,就会发现:

img557

随着粒子的增大,表面的阴影非常夸张,根本就不是我们所需要的了,所以最好是爆炸的地方有阴影,烟雾的地方不要有阴影,有两个办法:

1.可以采用复制LifeColor的粒子采样节点来为表面材质进行生命周期上的透明,可是比较麻烦。

2.可选择比较简单的方法:为粒子的SurfaceShading属性设置关键帧,在爆炸的过程中保持0.69,在进入燃烧烟雾的过程中变成0.005:

img558

于是所有的细节设置都做好了,渲染阶段性的几个关键帧,作为预览,如果满意就可以开始批量渲染了:

img559

img560

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈