• 所属类目:3DSMAX实例教程
  • 更新时间:2006-01-25 01:01:01
  • 关键词:水花 粒子 全攻略 Source 汽车 Max 7.0 3DS
  • 浏览次数:(今日:,本周:,本月:

分享到:

第九篇 汽车溅起的水花

  这节课我们通过一个实例来学习飞驰的汽车行驶在雨后的路面上所带起的水花飞溅的效果,效果如下图所示。在本课中,我们将教给大家如何使用粒子流来创建汽车轮胎在与地面接触过程中所溅起的水花。这些水花粒子在飞溅过程中不应受到轮胎向前运动的影响,为此我们将通过使用脚本来设置粒子的运动效果。下面我们就来看一下实际的操作步骤。

\

  1、打开范例场景。单击此处下载(594K, winzip压缩文件)并打开pf9.max我们提供的一个场景文件,在这个场景中,我们提供了一段汽车在路面上行驶的动画,场景中除了汽车模型外,还有四个立方体BOX对象,主要用来在制作车轮溅出的水花时会用到,如图1-1所示。

\

图1-1

  2、创建粒子流系统。单击动画播放按钮观看摄影机视图,我们会发现小汽车在路上运动。激活摄影机视图,单击Create(建立)/Geometry(物体)钮,在其下拉列表中选择Particle Systems(粒子系统)选项,然后在命令面板上单击PF Source在视图中创建一个粒子流,并将其命名为PFRS,其大小如图1-2所示,我们将在摄影机视图中进行大量的设置工作。

\

图1-2

  3、按下键盘上的6键或者是在Modify(修改)命令面板中单击Particle View(粒子视图)以打开粒子视图设置窗口,在名为“Event 01”的事件中,首先单击选择“Birth”操作符,在其右侧的参数设置命令面板上将“Emit Stop(发射停止)”设置为155,这样这些轮胎将会在整个动画过程中发射粒子,然后再勾选“Rate(速率)”选项,如图1-3所示。

\

图1-3

 4、定义粒子来源。在这个实例中,粒子的来源是从轮胎底部与地面接触的位置,首先从“粒子视图”仓库中将“Position Object”操作符拖到现有Event01事件的“Position Icon”操作符上,确保引入线为红色,这样“Position Object”就会替换“Position Icon”,如图1-4所示。

\

图1-4

  5、单击“Position Object”操作符,在其参数命令面板上单击“By List(按列表)”按钮,然后单击选择“车轮03”对象,然后单击“Select(选择)”按钮,车轮03对象将会出现在“Emitter Objects(发射器对象)”列表当中,如图1-5所示。

\

图1-5

  6、定义发射粒子轮胎的子对象。此时播放动画观看会发现,粒子将从整个轮胎对象上发射,在实际过程中,粒子只应该从轮胎的底部发射,但是轮胎正在向前旋转,所以我们需要定义独立于轮胎之外的子对象选择,在我们的场景中提供了四个立方体(BOX)对象,这四个立方体都非常小,位置在每个轮胎的下面,它们是独立于轮胎之外的,它们被做为子对象链接到了车体上,它们的运动同轮胎没有任何联系,但是将会同轮胎一同向前运动。首先在视图中选择车轮03对象,然后单击Modify(修改)钮进入变动修改命令面板中,为车轮03添加Vol Select(体积选择)修改器,在“Parameters(参数)”卷展栏上,将“Stack Selection Level(堆栈选择级别)”设置为“Face(面)”,将“Select By(选择方式)”设置为“Mesh Object(网格对象)”,并单击“Mesh Object(网格对象)”下的None按钮,然后在场景中单击拾取按钮选择位于轮胎下面的BOX04,将“Selection Method(选择类型)”设置为“Subtaract(交叉)”,如图1-6所示。

\

图1-6

  7、返回“Particle View(粒子视图)”,将更新“Position Object”控件,启用“Lock on Emitter(锁定发射器)”和“Animated Shape(动画图形)”,将“Location(位置)”设置为“Selected Faces(选定面)”,并启用“If Location(如果位置无效)”>“Delete Particles(删除粒子)”,然后,从“Event 01”中删除“Speed 01”、“Shape 01”和“Rotation 01”操作符,当前,粒子锁定在发射器上以继承运动,但是在给定轮胎旋转速度的情况下,粒子应被快速甩离,如图1-7所示。

\

图1-7

  8、从仓库中将“Age Test”添加到“Event 01”的底部,保持默认的“Age Test(粒子年龄)”设置,并将“Test Value(测试值)”和“Variation(变化)”都设置为 1,如图1-8所示。

\

图1-8

  9、创建Display新事件。在“Event 01”下面的空白区域中添加“Display”操作符来创建一个新事件,并拖动“Age Test”关联至“Display”事件,如图1-9所示。单击激活摄影机视图并播放动画,我们发现,粒子不仅离开了轮胎,而且还跟随汽车的运动,在实际过程中,我们并不希望粒子跟随汽车运动,解决这种问题的办法需要从粒子的运动中减去汽车的运动,这将使用到粒子的脚本。

\

图1-9

  10、去除粒子跟随汽车的运动。为了实现更加真实的粒子运动效果,我们将使用脚本将数据从粒子流中的一个粒子系统传送至另一个粒子系统。首先,我们需要创建一个测试用的粒子系统,右键单击“粒子视图”事件显示,并选择“新建”>“粒子系统”>“Empty Flow”,在场景中将会创建名为“PF Source 01”的新源图标,选择新的“PF Source 01”图标,将其重命名为 PFCK,在视图中移动其图标,使它在摄影机视图中可见,如图1-10所示。

\

图1-10

  11、选择PFCK粒子流图标,单击Modify(修改)钮进入修改命令面板中,在“Modify(修改)”命令面板中,在发射卷展栏上,将“ Quantity Multiplier(数量倍增)”的“Viewport(视口) %”设置为 100,如图1-11所示。

\

图1-11

  12、在“Particle View(粒子视图)”中,将一个“Birth”操作符从仓库拖至全局事件下面以创建一个新事件,然后托运PFCk关联至此新事件,如图1-12所示。

\

图1-12

  13、单击“Birth”操作符以选择它,在其右侧的参数命令面板中,将“发射开始”和“发射停止”都设置为 0,并将“数量”设置为 1,这是因为新系统只需要一个粒子,并且它必须出现在动画的开始处,如图1-13所示。

\

图1-13

  14、在仓库中将“Position Object”操作符添加到新事件当中,然后选择Position Object对象,在其右侧的参数命令面板中单击By List按钮,在弹出的对话框中选择车体对象,然后勾选“Lock on Emitter(锁定发射器)”选项,这样该粒子就与汽车一起运动了,现在在整个动画过程中,只有一个锁定到汽车的粒子,如图1-14所示。

\

图1-14

  15、返回到“Event 02”事件当中,从仓库中拖动“Script Operator(脚本操作器)”放在Event02事件的下方,然后使用“Script Operator”控件中的“编辑脚本”按钮编辑脚本,由于脚本操作符提供了默认的脚本,所以我们不需要重新输入脚本,只需要运用其中的自带的一段即可,在这个实例当中我们只保留以下内容即可,将其余的脚本都删除,如图1-15所示。

on ChannelsUsed pCont do
(
pCont.useTime = true
pCont.useSpeed = true
pcont.useInteger = true
)

on Init pCont do
(

)

on Proceed pCont do
(
count = pCont.NumParticles()
timeEnd = pCont.getTimeEnd()
$PFCarSpeedCheck.updateParticles $PFCarSpeedCheck timeEnd
carSpeed = $PFCarSpeedCheck.particleSpeed
for i in 1 to count do
(
pCont.particleIndex = i
if pcont.particleInteger != 1 do -- subtract the motion of the car only once
(
pcont.particlespeed -= 0.8 * carSpeed -- leave 80 percent of the motion
-- now to introduce a little variation in the particle speed to randomize things a little:
pcont.particleSpeed *= 1 - (pcont.rand11() * 0.3)
-- pcont.rand55() is a built in Particle Flow function that generates a random number between -0.5 and 0.5,
-- I then turn that into a -0.3 to 0.3 multiplier, or 30% variation
-- 这样可以对渲染采取更大的积分步长,并仍然避免喷出。
pcont.particleInteger = 1 -- 设置此项以便其在后面循环测试的叠代中会被忽略
)
)
)

on Release pCont do
(

)

\

图1-15

  16、激活摄影机视图并播放动画,我们会观察到粒子在汽车后面形成了拖尾,而不是随着汽车一起运动,这就是我们需要的效果,如图1-16所示。

\

图1-16

  17、将汽车的右后轮胎添加到事件当中。单击选择“Event 01”事件,选择其中的“Position Object”操作符,在其右侧的参数命令面板中单击By List(按列表)钮,在弹出的窗口中单击选择车轮04将其添加到发射对象列表当中,如图1-17所示。

\

图1-17

  18、设置前轮粒子系统。下面我们来创建用于前面轮胎的粒子系统,它与后面轮胎的设置过程基本相似,唯一不同的地方就是粒子在离开前轮胎后在与后轮胎相碰撞时应该消亡。由于大部分的设置同后轮相同,为此我们将使用复制粒子系统的方法进行设置。需要说明的是使用复制的方法进行粒子系统的设置必须在“Particle View(粒子视图)”中进行复制,如果使用在场景中复制粒子流图标的方法是 不正确的,在场景中复制粒子流只会复制发射器的图标。在“Particle View(粒子视图)”,框选PFrs 流上的的所有事件,然后单击鼠标右键,在弹出的菜单中选择“Copy(复制)”,然后将鼠标光标移动到空白区域,右键单击并选择“Paste(粘贴)”,这样我们就粘贴了前轮胎流所需的所有事件。如图1-18所示。

\

图1-18

  19、设置前轮为发射器。重新命名新粘贴的全局事件为PFFS,我们将将设置新粒子系统然后将前轮胎用作发射器,同时创建该轮胎的子对象选择。按照前面讲过的体积选择的方式对前轮进行设置,也可以直接复制后轮的体积选择项,粘贴到前轮胎即可。选择其中的一个后轮胎“轮胎03”,然后在Modify修改命令面板中单击“Vol Select(体积选择)”修改器使其高亮显示,在修改器堆栈中右键单击“Vol Select(体积选择)”并选择“Copy(复制)”,然后再在场景中选择左前轮胎,右键单击其修改器堆栈并选择“Paste(粘贴)”,这样“Vol Select(体积选择)”修改器将会显示在左前轮胎的修改器堆栈中,如图1-19所示。

\

图1-19

  20、选择前轮胎“轮胎02”,并将BOX01选择作为“Vol Selected(体积选择)”修改器的“Select By(选择方式)”组中的网格对象,如图1-20所示。

\

图1-20

  21、在“Particle View(粒子视图)”中,在新创建的PFFS粒子流当中,在“Event 04”单击“Position Object 03”,在其右侧的参数命令面板中分别选择车轮03和车轮04,然后按下Remove钮移除两个现有的轮胎对象,然后将BOX01添加进来,如图1-21所示。与后轮胎设置过程一样,单击ADD按钮,然后将另外一个前轮胎“轮胎1”也添加进来。

\

图1-21

  22、播放动画观看效果,我们会发现粒子从前轮胎的底部流出,然后落在了汽车的后面。下面我们来进行渲染设置。在场景中单击选择PFRS粒子流图标,然后单击Modify钮进入修改设置命令面板中,将Quantity Multiplier(数量倍增)Viewport(视口)%值设置为 10,如图1-22所示。

\ 

图1-22

  23、在“Particle View(粒子视图)”中,在Event 02事件的后面,添加一个“Shape Facing”操作符,在其右侧的参数命令面板上单击Look At Camera/Object(注视摄影机/对象),然后在场景中单击选择CameraA01(摄影机),如图1-23所示。

\

图1-23

  24、在“Shape Facing”操作符的参数命令面板中,将“In World Space(在世界空间中)”的“Units(单位)的值设置为 60.0,将“Orientation(方向)”设置为“Allow Spinning(允许自旋)”,如图1-24所示。

\

图1-24

  25、从粒子视图的仓库中拖动“Spin”操作符放置在“Shape Facing”操作符的后面,然后将“Rate(自旋速率)”设置为 90.0,将“变化”设置为 20,并使其余控制保留默认设置,如图1-25所示。这样设置以后,粒子将在每4秒钟内自旋一次并且还具有一些变化。

\

图1-25

  26、对轮胎粒子进行缩放。为了使效果更加的真实,这些粒子还应该在出现以后变得更大,我们将使用“Scale”操作符来实现,将“Scale”添加到“Spin”操作符的后面,然后在其右侧的参数命令面板上将三个轴的“类型”设置为“相对最初”、“缩放变化”设置为 20.0,如图1-26所示。

\

图1-26

  27、设置粒子缩放动画。在动画设置栏中单击Auto打开“自动关键点”选项,然后在第 0 帧将“比例因子”设置为 20%,之后转到第 3 帧并将其设置为 100,最后,转到第 100 帧并将比例设置为 300,然后单击Auto Key钮关闭自动关键点选项。图1-27分别为在第 0 帧、第 3 帧和第 100 帧处的缩放百分比的值。

\

图1-27

  28、进行材质指定。如果要为粒子系统指定材质,则需要使用材质操作符,这里我们将使用“Material Dynamic”操作符,该操作符将会使用动画材质使粒子的外观随粒子的寿命变化。在“Event 02”中的任意位置上添加一个“Material Dynamic”操作符,如图1-28所示。

\

图1-28

  29、单击“Event 02”中的“Material Dynamic”操作符操作符以显示其参数,单击Material Dynamic材质卷展栏上的None按钮,在弹出的材质编辑器窗口中,单击选择名为Reflection_Refmap的材质类型,如图1-29所示。

\

图1-29

  30、在“Event 02”事件中,单击高亮显示“Shape Facing”、“Spin”、“Scale”、“Material Dynamic”操作符,然后在其上按下鼠标右键,在弹出的菜单中选择COPY(复制)项,将它们作为实例粘贴到“Event 05”事件中,如图1-30所示。

\

图1-30

  31、场景最终渲染。单击激活摄影机视图,按下工具栏上的Quick Render钮对场景进行最终渲染,最终效果如图1-31所示。汽车在雨后的道路上飞驰,溅起一路水花。

\

图1-31

  32、本节小结:这节课我们学习了飞驰的汽车行驶在雨后的路面上所带起的水花飞溅的效果,通过本课的学习我们应该重点掌握以下几方面的内容:

  (1)如何把几何体作为粒子发射的对象;

  (2)如何为粒子系统的参数设置动画效果;

  (3)如何设置粒子的材质效果;

  (4);如何应用脚本MAXScript来修改粒子系统参数。

  好了本节课程就学到这里,下一节课我们将学习粒子流系统的最后一节课程如何制水管中流动的水的效果。

评论

相关下载

推荐下载