第二节 物体融化的动画
BlobbySueface粒子的私有属性非常少,只有radiuPP(控制每一个粒子的半径)和Threshold(控制粒子渲染融合度)所以很好控制,并且因为它可以使用标准材质,所以通常用来模拟流体,在实际应用中最常用的特效就是制作金属的融化了。
在这里我们就制作两个实例,一个是物体的融化,还有一个就是模仿《终结者2》里面的那段金属液体逐渐组成一个人的特效。两个效果有异曲同工之妙。
下面就从第一个融化物体开始进入粒子的高级应用:
让物体融化的方法:让物体发射粒子,发射粒子的同时让发射粒子的位置透明,这样就产生了面变成了粒子的效果,然后将粒子变成BlobbySueface类型,并且使其渲染成流体效果,这就产生了物体融化的效果。
我们下面就把这只鸭子融化掉:
首先要做的是分配这个模型的uv坐标,目的不是要做贴图而是为了制作控制粒子发射的贴图坐标,我们希望物体是从下到上的消失,所以只需要很简单的制作一个正面的PlanarMapping就可以了:
注意:这里的UV坐标进行了缩小的处理,这是为了以后的贴图动画作准备的,这一点很重要!
要说一下的是:如果你的模型本身就有uv坐标的话,再制作一个uv坐标的时候就需要使用Creat New UVset选项:
然后使用Window→RelationshipEditors→UVLinking→UV-centric将不同的UV坐标系统连接到不同的贴图上面就可以了。
针对这个模型来说是相当简单的,整个模型使用了两种材质,一种是白色的身体的材质,一种是黄色的嘴巴上的喙和脚部的材质,所以我们使用了不同的材质位置的面发射不同的流体粒子,并赋予和模型相同的材质,这样就产生了非常逼真的融化效果(如果是一个拥有复杂贴图的模型,那么就不能制作出拥有相应贴图信息的BlobbySueface粒子,只有使用Point等硬件渲染的粒子这个后面会学到)。
接下来我们开始制作控制粒子发射器从下至上发射粒子的动画贴图了,我们使用黑色表示发射粒子,白色表示没有粒子发射,所以使用Ramp是一个最好的选择:
创建一个Ramp并且调整为黑白无过渡色,同时将两种材质球如图放置:
接下来,先把Ramp的Outcolor属性和两个材质球的Opacity属性相连:
这样就可以通过滑动黑色颜色的位置滑竿的位置来控制从下到上的鸭子的透明了:
如果想要制作鸭子从下往上消失就只需要对黑色的位置滑竿进行关键帧的设置或者写表达式都可以了:这里使用了最简单的方法key帧
在第一帧时鸭子是正常的,第240帧的时候鸭子就全部透明了。
接下来要制作控制粒子发射时候使用的黑白贴图了,要知道如果是白色发射粒子那么这张动画的黑白色的图是不可以满足的,因为白色是发射粒子,所以透明的鸭子会不停的发射粒子,我们希望的是:透明了就不发射了,没有透明的地方也不发射粒子,我们只希望粒子是在透明变化的那条黑白交界线上面发射出来的。
我们需要的是一张只有一条细细的白色线条,从下往上运动就可以了,但是,这条白色的运动位置和速度必须和透明贴图的黑白交界线完全吻合,这样才会在透明与不透明的交界处发射出粒子来,如此就好像是鸭子在从下向上的融化,不是么?
那么这张图应该怎么做呢?很简单,首先需要一个与透明贴图完全一样的RampTexture,然后只要增加一条黑色的滑竿产生一个一条白色的横线的效果,然后让这条滑竿随着已经动画的那条滑竿移动就可以了。
先将那个透明用的RampTexture取名为TouMing,然后再制作一个相同的RampTexture重新命名为:Lizi,并作出一条白线的效果。
接下来就要让这条白线与TouMing的黑色线条的位置和上升速度同步,为此我们不得不使用表达式,就是:
1)让Lizi的上面的那条黑色的滑竿完全等于TouMing的那条黑色的滑竿。这只需要一个简单的赋值表达式就可以了。
2)让Lizi的那条白色一直保持同样的宽度并随着黑色上升。这也是使用赋值表达式就可以,只需要增加一个变量就可以了。
先解决第一个问题,我们需要知道TouMing的黑色滑竿的表达式名称和Lizi的上面的那条黑色的滑竿的名称,这很容易得到:只需要打开ScriptEditor(脚本编辑器),然后轻微的移动一下那个滑竿,就可以得到一条修改这个属性的表达式命令:
很明显TouMing.colorEntryList[1].position就是TouMing的黑色滑竿的名称了
所以我们为Lizi的黑色滑竿写表达式,使得该属性等于TouMing.colorEntryList[1]. position就可以了。
接下来,在要写表达式的属性上面鼠标右键单击,在弹出的菜单里面选择CreateNewExpression…就可以打开表达式编辑器:
那么很简单了,把SelectedObj&Attr里面的那长串属性名称(那就是要写表达式的属性名称)复制,然后写出属性表达式:
这样Lizi的那条黑线就和TouMing的那条黑线完全同步了。
接下来搞定第二个问题,让白线跟随黑白交界走:
选择第二个滑竿,然后同样的方法打开表达式编辑器,同样复制属性名称,这次的表达式是:
这样,下面的滑竿始终与上面的滑竿相差0.03的位置,如此达到了我们要的效果,这条白色的线条与透明贴图的黑白交界线始终同步。(白色线条的地方发射流体粒子)
细心的读者可能已经发现问题了,那就是这条白线在第一帧的时候是没有的,但是在最后一帧的时候就一直存在了:
很明显,黑色已经是1.00了,到顶了,那么白色始终差0.03,所以就一直存在。这并不是问题,应为在我们开始为鸭子进行坐标分配的时候就把UV坐标整体缩小了,所以这条白色的线并不会影响到模型:
到此为止,我们制作好了透明用的动画帖图,并且已经应用;也制作好了用来控制粒子发射的动画帖图,接下来就是用这个动画的白色条线来制作融化时不断发射的粒子。
分别选择鸭子的不同材质部分的模型,为两个部分的模型制造具有相同参数的粒子发射器,发射同样类型,大小的粒子:
选择模型,进入动力学板块,使用菜单命令Particles→EmitterFromObject,具体参数设置如下:
这样,整个鸭子都发射出了粒子,把粒子的渲染属性设置成为BlobbySueface类型,适当调整粒子的大小(Radius)和筏值(Threathold),并且为粒子赋予相应的材质部分相同的材质(用复制的材质没有动画的),嘴巴就是嘴巴的复制材质,身体就是身体的复制材质:
简单的为粒子的大小进行设置:
播放动画,并且渲染,察看效果:
播放的效果:
渲染的效果:
已经有点意思了,现在就用上那条控制粒子发射的动画线:
选中粒子发射器,打开粒子发射器的属性面板,找到TextureEmissionAttribute属性栏,在这里可以看到TextureRate属性,使用这个属性我们可以通过颜色来控制发射器的发射速率(Rate)。
默认的是:帖图的白色发射粒子,黑色不发射。
所以,我们把那条动画的白色线条Ramp的OutColor分别连接到两个发射器的TextureRate的贴图上面,并且打开EnableTextureRate选项:
这时的粒子已经是按照Ramp的那条白线发射了,我们选择粒子添加重力场,融化的粒子是要向下落的:
为了达到更好的效果,我们可以为粒子添加RadiuPP属性来控制每一个粒子的大小,然后使用Ramp来使得粒子在生命周期里面从大到小的过渡,当然了粒子也给一个随机的生命周期值,这样就更完美了:
有了Ramp控制粒子的RadiusPP属性,那么粒子将会在生命周期的过程中依次使用从下至上的Ramp的颜色所代表的数值作为RadiusPP的值。
那么粒子的生命周期自然也需要手动调整,否则默认的就是1
作了这些工作后,得到的粒子就会从发射出来的那一刻开始变小,然后在最后变得很小以后消失,非常cool。
效果如下:
让物体融化做好了,技术含量不是很高,目的是为了下一个特效作准备,那就是终结者里面的那段水银般的流体逐渐汇聚成为一个“鸭子”。
如果你认为只要简单的倒放就可以了这就错了:
首先,流体汇聚成为鸭子,流体是顺着鸭子的身体流上去,而不是垂直飞上去的;
其次,也不是整个身体从下到上的附着粒子,而是有顺序的先是脚,然后是身体,再是手,最后是头(或者手部和头部同时出现),这样依次被附着上粒子;
最后,流体粒子会依次消失,并显现出一个金属的鸭子,然后再变成有材质的鸭子。
所以简单的使用倒放是无法实现这种效果的,那么制作这样的特效,我们当然还是使用正作倒放的方式来制作这种特效。
首先,制作粒子附着到物体上面,其实就是制作粒子从面上发射出来,然后到过来放,那么这次粒子发射的过程和顺序就应该是和前面说的一样,那么还是使用一个Ramp的动画黑白图片来控制粒子发射,那么要产生粒子从手臂到手指的逐渐发射,就必须修改模型的坐标了:
这样的坐标就可以达到要求了,如果有一个逐渐向下的白色增加的动画,那么首先变成白色的就会是手指尖和头顶,然后手部的逐渐发展到身体,头部的也逐渐发展的身体,最后向下到脚上,这就是我们要的那个控制粒子发射的效果,也是我们要的透明的顺序:
将这张Ramp应用在材质的透明上面,结果是这样的:
那么倒过来放就是先从下面开始消失,一直到头顶和手指。这就是最后流体形成鸭子的正确过程。
于是只要让粒子从黑白交界处的一块范围里面发射出来,并且发射出来以后就沿着身体向下流动就可以了(当然,如果粒子发射有一个从无到有过渡的过程就更好了)。
所以再制作和前一个熔化案例同样的那个控制粒子发射的Ramp动画帖图,这次的向下的速度要参考这个透明动画的速度,最后这张图应用到面的粒子发射器的控制上就可以了(当然了在这里整个鸭子的身体作为一个整体,就使用了一个粒子发射器就可以了):
这是鸭子身体的面粒子发射器的设置:
模型表面上的粒子依然是BlobbySurface。
透明的Ramp是很简单的:白色向下的运动就是简单Key帧的动画(第1帧在最上面第240帧在最下面)。
最终,这个Ramp控制的是一个金属材质的透明,因为我们的鸭子必须事先变成金属的然后再变成正常的鸭子,材质变化的过程暂时忽略,在这里做到鸭子变成金属就可以了,所以就把透明连接到一个金属材质上面然后再使用一个层材质来屏蔽金属高光对透明的影响:
如果不使用层材质,那么结果就会是透明的地方材质的高光依然存在,下面就是比较:
使用层材质
不使用层材质
搞定了鸭子的材质,接下来就是使用Ramp控制粒子发射器的TextureRate属性了:
控制粒子发射的Ramp就是建立在透明的那个Ramp基础之上的(其实就是Copy的),然后再增加一个黑色的跟随颜色产生一条白色的线条的动画,和前面案例的几乎完全一样,不同的是,这次没有使用表达式,自己控制吧,只要知道白色是发射粒子的就可以了:
Ramp材质与粒子发射器TextureRate的连接:
所以现在的效果是这样的:
除了金属材质不怎么样,总体的感觉已经出来了,如果倒过来看就是一个金属液体从下往上消失,然后变成一个金属鸭子的过程,可是我们的终结者是流体金属,也就是粒子是不断流动的(从下往上沿着身体的表面流动),而不是静止不动的,所以按照倒放的原则,我们应该让粒子在发射后一段时间就沿着身体向下流,这样倒放以后就是真正的终结者了。
所以,最后,也是最难的一步,就是要使得粒子从头顶开始往下流动,并且是沿着身体向下流动。
要控制粒子沿着表面流动是很简单的,只要使用goalU和goalV就可以了,但是现在使用GoalPP几乎是不可能的,因为我们的粒子是要从发射的位置开始向下流的,再者goalU和goalV需要使用Nurbs曲面,这个鸭子绝对不可能用一个面片就制作出来,所以goalU和goalV在这里不能使用。
那么除了这个还有什么办法能让粒子随心所欲的移动呢?表达式在这里就显示出力不从心了,因为鸭子的表面路径很难用表达式写出来,就算是写出来了也无法单独应用到每一个粒子身上,所以我们不得不放弃这个念头。
综上所述,我们已经学过的所有知识都根本不可能实现这个效果,所以我们进行粒子控制的最后一个方法的学习,这也是粒子控制的终极方法,用这个方法你几乎可以像控制自己的手指一样控制粒子的运动方向:流体驱动。
流体的特性是非常特殊的,也是很复杂的,鉴于本书重在粒子的控制,所以结合这个案例,与粒子控制无关的就不多做解释了,为了能够控制这个鸭子身上发射出来的粒子能够沿着身体向下流动,我们先沿着鸭子的身体制作许许多多的路径,这些路径将会是粒子移动的方向:
在鸭子身上绘画路径的时候必须注意方向,线条的起始点是粒子初始位置,结束点就是粒子的目标方向:
按照如图所示的方向绘制许多条路径,没有特别的,越详细效果越好:
最终的路径线几乎就是一个鸭子的轮廓了:
制作好了足够多的路径线了以后就可以制作制作一个3d流体容器了,进入动力学板块,使用菜单命令FluidEffects→Create3DContainer就可以创建一个容器了:
把鸭子正好装进这个容器里面,打开容器的属性面板,里面有非常多的内容,我们要使用的就只是容器的速度(Velocity)这个在属性,我们已经学习过,要控制粒子其实就是控制它的速度,所以我们利用流体容器的速度来控制我们粒子的速度,将属性调整到如下图的形势:
我们关闭了所有的属性只打开了Velocity(速度)控制属性,接下来就利用这个容器把刚才绘画的路径线条变成速度:
首先选择所有制作好的线条(最好删除构建历史这样能够减少计算机的工作量),最后选择流体容器,使用菜单命令FluidEffects→Ass/EditContent→withCurve来实现这一功能:
在弹出的对话框里面,进行设置:
依然是只是用速度(Velocity)这个在属性,其中Radius很明显就是路径变成速度的转换半径,注意打开Curvature-BaseVelocituy选择框,该属性能够产生曲线控制点较多的地方速度较慢的效果。
确定无误以后,按下Apply按钮,接下去是长时间的等待,计算机的工作量非常大,速度看情况而定,等计算好了以后就可以看到速度是什么样子的了:
可以看到有很多黄色的小箭头出现了,这就是速度,完全按照我们绘画的曲线路径的趋势产生,如果没有显示黄色的箭头可以打开属性面板的Display栏目,选择VelocityDraw单选框来显示出速度:
有了速度接下去就是让速度影响粒子了,很简单有很多种方法产生连接,最简单的两种是:
1.使用动力学连接编辑器:
2.使用菜单命令:Fields→AfterSelectedObject(s)。使用时先选择粒子,再选择流体容器。
等连接了动力学和粒子以后,就可以看到粒子受到了速度的影响,但是并不是沿身体流动的。
这是因为粒子有惯性,所以要把惯性减小,把粒子的Conserve调整到合适的值。
于是就可以产生很不错的流体效果。
结果发现粒子在落在地面上并不是很好,所以为粒子添加一个Vortex旋转动力场(使用体积力场),来让粒子在地面上旋转,这样流体的效果就更真实了:
效果如下:
最后是渲染粒子,BlobbySurface粒子是软件渲染的粒子,简单地说就是可以把粒子当作是模型渲染,所以可和模型一起使用同一渲染器进行渲染,很方便。
看看效果如何:
看来已经完成了,倒过来放就是终结者的效果。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。