3DS MAX图文教程事件驱动粒子系统喷泉效果.docx

上传人:b****3 文档编号:12892947 上传时间:2023-04-22 格式:DOCX 页数:27 大小:894.60KB
下载 相关 举报
3DS MAX图文教程事件驱动粒子系统喷泉效果.docx_第1页
第1页 / 共27页
3DS MAX图文教程事件驱动粒子系统喷泉效果.docx_第2页
第2页 / 共27页
3DS MAX图文教程事件驱动粒子系统喷泉效果.docx_第3页
第3页 / 共27页
3DS MAX图文教程事件驱动粒子系统喷泉效果.docx_第4页
第4页 / 共27页
3DS MAX图文教程事件驱动粒子系统喷泉效果.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

3DS MAX图文教程事件驱动粒子系统喷泉效果.docx

《3DS MAX图文教程事件驱动粒子系统喷泉效果.docx》由会员分享,可在线阅读,更多相关《3DS MAX图文教程事件驱动粒子系统喷泉效果.docx(27页珍藏版)》请在冰豆网上搜索。

3DS MAX图文教程事件驱动粒子系统喷泉效果.docx

3DSMAX图文教程事件驱动粒子系统喷泉效果

3DSMAX图文教程:

事件驱动粒子系统——喷泉效果

发布时间:

2006-12-1101:

38:

13    来源:

    作者:

    浏览:

290

第二部分事件驱动粒子系统(粒子流)

  本节开始介绍3DSMAX6.0开始的事件驱动粒子系统(下文一律简称为“粒子流”),我们将会接触到非常多的3DSMAX概念和功能,所以请耐心细致地阅读。

  粒子流的功能强大,但制作流程不像非事件驱动粒子系统那样直观。

我们将要和“粒子视图”打交道,这个视图由一系列的“事件”组成。

一个粒子流源(粒子流的发射源)发射出来的粒子将会经历系列的“事件”,在每一个事件内部,我们可以使用“运算符”设置粒子的各种变化效果(比方受到空间弯曲的影响),事件与事件之间通过“测试”彼此联系,整个粒子系统的设置过程就像是在绘制程序的流程图一般似行云流水,这也是“粒子流”得名的原因之一。

  打个比方来说,粒子流源就是长江源,它发射出来的粒子就如同长江的流水。

这些流水沿着长江流动,一部分会遇到大坝(事件)的阻拦,大坝会利用这些水去发电、灌溉(运算符处理),还有一部分水会被放行流到下游,下游又会有其他的水利设施(事件)将其用于其他用途(运算符处理)。

实例四:

喷泉效果

  1、最终效果和实现步骤

  我们将要制作的是一个喷泉,你也许看到过一些利用普通的非事件驱动的粒子系统制作喷泉(也就是前面制作水流、烟雾的那种粒子系统),虽然制作出来的效果也算是差强人意,但是它们有一个致命的缺陷——缺少细节,而粒子流的优势恰在于此。

  逼真的喷泉效果应当是,水流从喷嘴出来之后首先受到重力影响下落,接着遇到风,风会把水花吹成更小的水花,接着水花落进水池溅起涟漪。

此外喷泉喷水的速度和数量也有不规则的变化。

所有这些效果在制作逼真的场景中都是必不可少的细节,在3DSMAX中只有粒子流才能制作这么多的效果。

  随本文一并提供的初始场景中包含一个水池,水池中央是喷泉的喷嘴。

水面用一个Plane(平面)物体制作,添加了Noise(噪波)和Ripple(涟漪)两个修改器,并且具有波纹效果。

 

效果

实现方法

水源源不断喷出

PFSource粒子系统

水花落下

Gavity空间弯曲

在水面溅起小水花

POmniFlect空间弯曲和粒子流的Spawn运算符共同作用

在水面激起涟漪

ShapeMark运算符

水花在空中飘散

Wind空间弯曲和Spawn运算符共同作用

  2、粒子发射源

  1)打开Create(创建)->Geometry(几何体)->ParticleSystems(粒子系统),单击PFSource按钮,在场景中任意位置拖动建立粒子发射源,将其命名为“喷泉_PFSource”。

  PFSource粒子系统的默认图标是一个矩形,接下来我们需要对其大小和位置进行调整,使之与喷泉的喷嘴匹配。

  2)进入Modify(修改)面板,在Emission(发射)卷展栏中选择IconType(图标类型)为Circle(圆形),因为喷泉的喷嘴是圆形的,用一个方形的发射器显然不合适。

然后设置LogoSize(图标尺寸)为30,Diameter(直径)为3。

 3)单击主工具栏上的Align(对齐)按钮激活对齐功能(快捷键Alt+A),然后单击喷泉的喷嘴物体(这个物体是示例场景自带的,名称为英文FountainSource)。

在弹出的对话框中将X、Y和Z三个方向同时选中。

  4)这时如果播放动画你也许看到不到粒子发射效果,这是因为粒子发射的方向反了。

单击工具栏上的SelectAndRotate(选择并旋转)按钮(快捷键E)和AngleSnapToggle(角度捕捉)按钮(快捷键A),这时发射器旁边将出现旋转操作的调节坐标系,锁定X轴旋转180度,发射器的方向(由一个箭头表示)就指向上方了。

  3、空间弯曲

  对于制作和粒子系统相关的效果而言,空间弯曲是必不可少的,在这个场景中我们需要三个空间弯曲,分别是Gravity(重力)、Wind(风)和POmniFlect(平面散射挡板),前面两个的作用非常明显,第三个的作用要解释一下,它将阻挡并反弹水花,配合粒子系统的事件设置,形成溅起小水花的效果,具体的制作方法将在后文详细介绍。

  1)打开Create(创建)->SpaceWarps(空间弯曲)->Forces(力),单击Gravity按钮,在场景中拖动,将其命名为“下落_Gravity”,它的参数不需要调整。

         

  2)选择粒子系统子类型为Deflectors,单击POmniFlect按钮,在场景中拖动,将其命名为“水面_POmniFlect”。

注意这种空间弯曲和普通Deflector空间弯曲一样,其位置和大小会影响到其作用的发挥。

由于我们将用它来模拟水池中水面对落下的水花的反弹效果,因此要调节其大小和位置使之和水池中的水面相匹配。

 进入Modify(修改)面板对其参数进行设置,首先在Timing中设置TimeOff为300,也就是和动画长度相等,然后在Reflection中Bounce为0.3。

  3)打开Create(创建)->SpaceWarps(空间弯曲),单击Wind按钮在场景中拖动建立风空间弯曲,将其命名为“风_Wind”,其参数可以自己随意设置,不必拘谨。

调整其方向指向喷泉。

POmniFlect空间弯曲

POmniFlect的名字很独特,它是OmniFlect空间弯曲的平面版本,最开始的P代表Planar,那么OmniFlect空间弯曲又是怎么回事呢?

前面我们已经介绍了Deflector空间弯曲,OminiFlect其实也是Deflector空间弯曲的一种,不过它们的功能不仅仅是将粒子反射回去,而且具有“折射”和“产卵”功能。

所谓“折射”是指让粒子穿透过去,同时改变其运动方向,如同光线穿透液体时的折射效果一样。

所谓“产卵”是指粒子碰到POmniFlect会产生新的粒子,这个功能必须和粒子流的事件配合使用。

POmniFlect空间弯曲的操作步骤包括:

1、创建POmniFlect发射器

2、在非事件驱动粒子系统中使用POmniFlect时,使用BindToSpaceWarp(绑定到空间弯曲)工具将粒子系统和POmniFlect绑定,在粒子流中使用POmniFlect时,在粒子视图中为事件添加Collision(碰撞)测试或者CollisionSpawn(碰撞产卵)测试。

3、调整POmniFlect的参数。

  4、粒子发射和重力影响

  一直到上一步,你可能都觉得粒子流和前面介绍的非事件驱动粒子系统“差不多”,但是从这一步开始我们要开始使用粒子流特有的一些功能了。

这一步需要完成两项任务,第一是设置粒子发射的数量和方向,第二是让空间弯曲“下落_Gravity”作用于粒子系统。

  1)打开ParticleView(粒子视图)(快捷键6),这时一个我们以前没有接触过的窗口,下面的背景知识对这个窗口做了介绍。

选择Event01,在其标题栏上单击鼠标右键选择Rename,将其命名为“粒子发射_Event”,后面我们还要建立多个事件,修改事件名称可以避免后面混淆。

 2)设置粒子的发射时间和数量,选择事件“粒子发射_Event”中的Birth01运算符,这时右边的窗口将会显示出相应的参数。

设置EmitStop为300,使粒子系统在整个动画过程中不断产生粒子。

选择粒子发射数量的设置方法为Rate(发射率),输入一个较大的值,比如300。

  3)如果你的机器速度不是足够快,务必选择Display01运算符并设置其Visible为一个尽量小的参数,比如10%。

这个参数控制粒子在编辑状态下显示的比率,将它设置为较小的值并不会影响渲染效果,但却可以明显制作的流畅程度,如果直接使用默认的100%,很容易出现“卡”的现象。

注意,后面新建的事件大多都要进行同样的设置,文中将不再提示。

  4)选择事件“粒子发射_Event”中的Speed01运算符,在右边设置Speed为300,Variation为30,Divergence为4.0。

Variation选项紧靠在Speed参数下面,因此它的作用是对粒子的飞行速度进行随机变化。

而Divergence参数的作用则是控制粒子飞行方向的扩散。

这些参数和非事件驱动粒子系统中的都是相似的,粒子视图只不过提供了一种不同的设置方式。

  5)现在我们要让空间弯曲“下落_Gravity”作用于粒子系统了,前面介绍非事件驱动粒子系统时,我们使用BindToSpaceWarp(绑定到空间弯曲)的方式来做到这一点。

对于粒子流,我们要使用不同的方式,这种方式虽然不够直观,但是更加灵活。

在事件“粒子发射_Event”上单击鼠标右键,从弹出菜单中选择Append(添加)->Operator(运算符)->Force(力),然后就可以看到事件“粒子发射_Event”下面多出了一个运算符,名称为Force01。

  选择Force01,在右边的属性面板中单击ByList(通过列表添加)按钮,然后选择空间弯曲“下落_Gravity”。

 这时播放动画可以看到“下落_Gravity”的强度太大了,粒子飞出来之后,立刻就被“拉”回了地面,选择空间弯曲“下落_Gravity”,将其Strength参数设置为一个较小的参数。

ParticleView(粒子视图)

粒子视图是3DSMAX中操控粒子流的主界面。

它的界面由四部分组成。

粒子视图内部的操作流程

1、当我们在场景中添加一个粒子流源之后,在粒子视图中会自动建立一个以粒子流源命名的事件,这个事件是GlobalEvent(全局事件),在这个事件内部的运算符将会影响该粒子流源产生的所有粒子。

和全局事件一道生成的还有一个事件Event01(Event01是系统的默认名称,我们对这个名字进行修改),这个事件中必须包含一个Birth运算符,粒子系统才能正常发射粒子。

2、从下面的运算符库中拖放更多普通远算符到Event01事件内部从而实现对粒子的更多控制。

3、在Event01事件内部添加Test(测试)运算符(这种运算符也能在下面的运算符库内部找到),Test运算符根据一定的条件来确定哪些粒子符合条件,并将其“输出”到其他事件。

4、添加其他事件,接受Test运算符输出的粒子并进行进一步的处理。

  5、溅起水花

  水在重力的作用下落到水池中应当溅起水花,下面我们就来制作这个效果。

  1)从粒子视图下面的运算符库内拖放一个Collision(撞击)测试到事件“粒子发射_Event”内部,放在最下面(你也可以使用上面单击鼠标右键从弹出菜单中选择Append的方式添加,结果是一样的)。

  5、溅起水花

  水在重力的作用下落到水池中应当溅起水花,下面我们就来制作这个效果。

  1)从粒子视图下面的运算符库内拖放一个Collision(撞击)测试到事件“粒子发射_Event”内部,放在最下面(你也可以使用上面单击鼠标右键从弹出菜单中选择Append的方式添加,结果是一样的)。

  2)选择新添加的Collision01运算符,在右边的属性面板中单击ByList(通过列表添加)按钮,选择“水面_POminiFlect”。

  在TestTrueIfParticle(如果粒子出现以下情况时测试返回值为True)下面的Collide中选择Speed为Bounce,这样下落的粒子在碰到空间弯曲“水面_POmniFlect”时会反弹起来。

 3)上一步中设置的Bounce参数只能让粒子原样弹起来,但是我们希望要的效果是不仅仅是反弹,而是原来的水花消失,同时溅起更多的小水花。

这种效果可以使用Spawn(产卵)测试来实现。

具体来说就是,事件“粒子发射_Event”中Collision运算符输出的粒子还需要经过一个新的事件处理,这个事件能够让粒子“产卵”——产生更多的小粒子。

  从粒子视图下方的运算符库中拖放一个Spawn测试到上面的窗口,这时会自动创建一个事件,将其命名为“溅起水花_Event”

  4)选择事件“溅起水花_Event”中的Spawn01测试,在右侧的属性面板中选中DeleteParent(删除父粒子),也就是说,当粒子落到水面溅起小水花时将原来的水花删除掉。

然后设置Offspring为较大的值,比如20,也就是一个大水花溅起的小水花的数量,紧接在下面的Variation参数对这个数值进行一些随机的变化。

另外还要设置下面的Speed中的Variation和Divergence,这些参数的含义都很明显,不再一一解释了。

  我们将这些参数串起来解释其含义就是,每个水花从空中落到水面后,将溅起大约20个(Offspring)小水花,同时原来的水花消失,小水花的具体数量会有10%(Variation)的波动;这些新产生的水花基本继承原来水花的运动速度(Inherited),但是会有30%的波动,并按照这个速度在一定的扩散角度内(Divergence)向上溅起。

  5)事件“溅起水花_Event”设置好了,那么父粒子从哪里来呢?

很显然,落到水面上的粒子就是“产卵”的父粒子。

  拖动事件“粒子发射_Event”中Collision01运算符的输出手柄到事件“溅起水花_Event”中的Spawn运算符的输入手柄上释放鼠标。

  6)这时如果播放动画可以看到一个缺陷,就是溅起的小水花运动速度有点夸张,像爆炸的弹片一样四散飞离。

我们需要添加一个Drag(阻力)空间弯曲来延缓其运动。

 A.暂时退出粒子视图,打开Create(创建)->SpaceWarps(空间弯曲),单击Drag按钮在场景中拖动,将这个空间弯曲命名为“减速_Drag”,进入修改面板设置其作用的时间和动画等长,X、Y、Z三个轴向的强度均设置为5%。

  B.回到粒子视图中,拖放一个Force运算符到事件“溅起水花_Event”中,放在Spawn01测试下方,选择这个新建立的Force01运算符,在右侧的属性面板中单击Add或者ByList按钮选择空间弯曲。

  7)拖放一个Delete运算符到事件“溅起水花_Event”中,放在最下方,选择Delete01,在右侧的属性面板中选择Remove(删除)方式为ByParticleAge(按照粒子生命),设置LifeSpan(生命长度)为20左右。

  7、涟漪效果

  现在我们开始制作水面上的涟漪,显然形成涟漪的事件应当接受来自事件“粒子发射_Event”中的Collision测试的输出。

制作涟漪效果可以使用ShapeMark运算符。

  1)在粒子视图中,从下方的运算符库中拖放一个ShapeMark运算符到上方视图的空白出,这样会自动建立一个新事件,将其命名为“激起涟漪_Event”。

  我们需要将事件“粒子发射_Event”的Collision测试的输出和事件“激起涟漪_Event”的SplashMark运算符的输入连接起来。

但是在前面的操作中我们已经将Collision输出指向事件“溅起水花_Event”了。

所以还必须想办法“分流”出一部分粒子。

  2)从粒子视图下方的运算符库中拖放一个SplitAmount测试到事件“溅起水花_Event”中,并放置在最顶端。

 )将SplitAmount的测试输出和事件“激起涟漪_Event”的输入连接起来。

  4)选择ShapeMark01运算符,在右侧的参数面板中单击ContactObject按钮,然后在场景中单击选择水面物体(WaterSurface)。

  现在我们来理一下思路,在事件“粒子发射_Event”中粒子不断产生(由Rate、Speed等运算符控制产生的数量和速度),这些粒子经过Collision检测的测试,凡是和空间弯曲“水面_POmniFlect”发生碰撞的粒子都会被传递给事件“溅起水花_Event”,“溅起水花_Event”通过SplitAmount运算符将一部分粒子交给事件“激起涟漪_Event”处理,在“激起涟漪_Event”中我们就要通过ShapeMark01运算符来模拟水面的涟漪效果。

  5)这时如果播放动画可以看到,当粒子碰到水面时,水面上会出现微小的多边形,但是面积太小,几乎看不见。

打开ShapeMark01的参数面板,在InWorldSpace中设置Width和Length为较大的值,比如20左右。

  6)现在还有一个比较棘手的问题,那就是水花落到水面时出现的涟漪是逐渐扩大的,如何制作这种效果呢?

我们可以使用Scale运算符。

 从下面的运算符库中拖放一个Scale运算符到ShapeMark01运算符下方,注意位置不能放错,否则就失效了。

选择这个新添加的Scale运算符,设置其Type(类型)为RelativeFirst,ScaleFactor(缩放指数)均为10%,ScaleVariation(缩放变化)均为5%。

  7)打开AutoKey动画记录模式,将动画滑块拖动到60帧左右的位置,然后设置ScaleFactor参数为100,这是你可以看到参数右边的调节按钮周围出现红色方框,这表明动画已经成功记录。

现在播放动画就可以看到粒子碰到水面时的涟漪荡漾的效果了。

  8)还有最后一个问题,涟漪会一直飘在水面上,像浮萍一样,显然这也是不真实的。

我们添加Age测试,它能够测试粒子进入事件后经历的时间长度,如果到了一定期限,我们就将其传递给另外一个事件。

  从运算符库中拖放一个AgeTest测试到事件“激起涟漪_Event”中,放在最下面,设置其为EventAge,其他设置不必修改。

  9)拖放一个Delete运算符到视图中的空白区域,这样可以新建一个事件,将其命名为“删除涟漪_Event”。

将事件“激起涟漪_Event”中AgeTest测试的输出和事件“删除涟漪_Event”连接起来。

 8、随风飘散

  要想制作更加逼真的效果,风是必不可少的。

具体来分析一下就是:

喷嘴中飞出来的一部分水珠会被风吹成更小的水珠,这些小水珠的下落速度会变慢,并且会随着风飞舞。

  水珠破碎的效果显然可以用Spawn来实现,而小水珠的下落速度减慢以及随风飞舞的效果则应当使用Force运算符。

  1)在粒子视图中从下面的运算符库中拖放一个Force运算符到上面的视图中,注意不要放到其他事件内部,让系统自动建立一个新的事件,并将其改名为“随风飘散_Event”。

  选择事件“随风飘散_Event”内部的Force03运算符,在右侧的属性面板中单击ByList按钮将空间弯曲“下落_Gravity”加入其中,然后将Influence参数由1000减少到500。

之所以进行这样的调整是因为,被风吹碎的小水珠下落速度应当减慢,因此减少重力空间弯曲的影响程度。

  2)再拖放一个Force运算符到事件“随风飘散_Event”内部,选择这个运算符,在其属性面板中将空间弯曲“风_Wind”添加过来。

  3)从运算符库中拖放一个Spawn运算符到事件“粒子发射_Event”中,放在Collision01上面,将这个Spawn运算符的输出和上一步建立的事件“随风飘散_Event”的输入连接起来。

  4)这些随风飞舞的水花不会自动消失,而是一直在场景中飘,因此我们还需要为事件“随风飘散_Event”添加一个Delete运算符,设置其参数为ByParticleAge。

      

  9、材质和渲染

  现在进入最后一个步骤,和非事件驱动粒子系统的使用方法一样,在对粒子流进行渲染之前也需要对粒子进行适当的设置。

对于非事件驱动粒子系统而言,我们将粒子的类型设置为Facing就可以了,但是对于粒子流而言,我们仍然需要使用运算符。

  1)在粒子视图的运算符库中拖放一个ShapeFacing运算符到事件“粒子发射_Event”内,然后对事件“溅起水花_Event”和“随风飘散_Event”执行同样的操作。

如果嫌一个一个添加麻烦,可以使用运算符的复制粘贴功能来快速完成。

  2)现在设置材质,再为“粒子发射_Event”、“溅起水花_Event”、“随风飘散_Event”这三个事件添加一个MaterialDynamic运算符,在这个运算符的属性面板中单击None按钮,从弹出的材质/贴图浏览器中选择一个水化材质(这个材质非产简单,其制作方法不再介绍了,你可以直接借用前面制作流水效果中使用的材质。

  3)水中涟漪的材质和上面的略有不同,不过制作也很简单,只需要再Opacity贴图通道中贴入一个GradientRamp贴图,并设置其渐变方式为Radial,然后调整一下滑块就可以了。

  设置好材质之后同样为事件“激起涟漪E_Event”添加一个MaterialDynamic运算符,并将刚才制作好的涟漪材质赋予这个运算符。

  至此,这个喷泉就已经基本制作完成了,不过还有很多地方值得完善。

你可以再为事件“粒子发射_Event”、“随风飘散_Event”添加Scale运算符使其在运动过程中逐渐增大,重力和风力的强度还可以进行更细致的调整,再有就是为“粒子发射_Event”中的Birth和Speed参数添加Noise(噪波)运动控制器使粒子产生的速度和数量不至于一成不变而显得呆板。

这些操作所使用的方法在上面的介绍或者以前的教程都已经做了细致介绍,因此不再一一展开。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1