3DS Max 7.0 PF Source粒子全攻略(8):模拟飞溅的水花
- 2022-03-23
- 来源/作者: 不详 / 佚名
- 15 次浏览
第八篇 模拟轮船航行时的水花效果
本课我们想要达到的效果是轮船在水中航行时产生的水花拖尾的效果。要想实现真实场景中的轮船拖尾的效果,首先,我们需要创建一个粒子流系统,只要轮船在运动,粒子就应该存在。我们需要对所有的粒子进行测试,来确定它是否与水面产生碰撞,如果它们与水面产生碰撞,则每一个测试的粒子将会继续发射出新的粒子,为了达到真实的效果,在实际制作过程中需要设置两种类型的粒子,也就是说刚开始时,轮船航行会产生较大体积的水花,还有一部分将会发射出较小的象薄雾一样的粒子,这种象薄雾一样的粒子将会随着风慢慢吹散,最终消亡,下面我们就来看一下实际的操作步骤。
1、打开范例场景。单击此处(37K, winzip压缩文件)打开我们提供的一个场景文件,在这个场景中,我们制作好了一个简易的小船模型,使用平面对象创建的水面,三个空间扭曲对象:风、阻力和重力,主要用来控制粒子也就是轮船航行时水花的效果。另外,场景中还有一个全导向器 (UDeflector01) 以及一个已经设置好了动画效果的用来跟随船船运动的摄影机,按下屏幕下方的播放动画按钮观察摄影机视图,我们会发现当小船随着波浪的运动上下起伏,如图1-1所示。
图1-1
2、创建粒子流。激活摄影机视图,然后按下键盘上的P键将摄影机视图切换至为透视图,选择场景中的小船,然后按下鼠标右键,在弹出的菜单中选择hide unselected(隐藏未选择对象),这样场景中除了小船以外其它的对象都被隐藏了。单击Create(建立)/Geometry(物体)钮,在其下拉列表中选择Particle Systems(粒子系统)选项,然后在命令面板上单击PF Source在视图中创建一个粒子流,其大小如图1-2所示。
图1-2
3、将粒子流系统的图标链接到小船。在工具栏上单击Select and Link(选择并链接)按钮,然后拖动粒子流图标到小船上释放,这样粒子流就会作为船的子对象,当我们把粒子流系统的图标与小船对齐后,它们将会一起运动,单击选择粒子流图标,然后使用工具栏上的“Align(对齐)”工具在所有三个轴上对齐图标和小船的对象的中心和方向,这样做的好处是粒子流中的大多数基于速度的控制都不依赖于粒子流发射器的几何体的位置,通过使粒子流图标居于小船中心,会为我们对粒子的控制提供非常大的灵活性和方便性,如图1-3所示。
图1-3
4、按下键盘上的6键或者是在Modify(修改)命令面板中单击Particle View(粒子视图)以打开粒子视图设置窗口,在名为“Event 01”的事件中,首先选择除“Birth”和“Display”操作符之外的其它的操作符,然后按下键盘上的删除键,如图1-4所示。
图1-4
5、在“Event 01”事件中,单击“Birth”操作符的名称使其高亮显示,然后在其右侧的命令面板上,我们将“发射停止”设置为 0,并将“数量”值设置为 300,这样就会使粒子流在动画的第一帧内同时发射 出300 个粒子,如图1-5所示。
图1-5
6、为事件添加新的操作符。为了创建粒子粘贴在船体上的效果,我们需要使用定义粒子最初位置的操作符,这里我们将使用“Position Object”操作符来实现这种效果,它的具体的含义请参看前面的文章。在粒子视图下方的仓库中,按下鼠标左键将“Position Object”操作符拖动到“Event 01”事件的下方,在光标位置出现蓝线的时候松开鼠标,这样我们就将新的操作符插入到了当前的位置,此操作符的作用可用来将网格对象用作发射器,在本例中我们将通过使用它把船体作为发射的对象。如图1-6所示。
图1-6
7、在“Event 01”事件中,单击“Position Object”操作符的名称使其高亮显示,在其右侧的命令面板上,在卷展栏中的控件分为两个主要组,即“发射器对象”和“位置”,在这里我们可以将多个网格对象定义为发射对象。“位置”组可用于定义对象上发射粒子的位置,因为我们要从船对象发射粒子,因此需要将其添加为发射器对象,在“发射器对象”列表下,单击“添加”按钮,然后选择小船对象,这样其名称将会出现在列表当中,如图1-7所示。
图1-7
8、设置粒子出现在小船上的位置。在模拟水花的时候,粒子不应该完全覆盖船体,而只需要从小船的底部发射即可,因此我们要把它们限制到小船的底面上,使用旋转工具旋转透视图,以便我们可以从小船的底部看到船,然后在Modify(修改)命令面板中单击进入Polygon(多边形)子对象层级中并选择船体的底部部分,如图1-8所示。
图1-8
9、按下键盘上的6键返回到粒子视图对话框当中,在“位置”组下拉列表中,选择“选定面”,此时我们如果向前拖动时间滑块,将会看到粒子会出现在我们选定的多边形上,但是它们并不会粘在船上,因为迄今为止只定义了粒子出生的位置,而没有定义粒子在其寿命期间如何移动,现在播放动画,我们会发现粒子将粘在船的底部随船一起移动,如图1-9所示。
图1-9
10、创建水花飞溅的效果。这里我们将使用“Collision”测试来实现,在“Event 01”底部添加“Collision Spawn”测试,从仓库中拖动此测试到Event 01的底部,如图1-10所示。
图1-10
11、在事件窗口中单击“Collision Spawn”测试以选择它,“Collision Spawn”是一种混合性的测试,它拥有“Spawn”测试和“Collision”测试的大部分功能。我们先来看一下“Collision Spawn”测试,“Event 01”事件定义了粒子的出生并且粘在了小船的底面的粒子,面且在每一帧都测试它是否与水发生碰撞。当粒子与水发生碰撞时,则测试为真,粒子有资格继续执行下一个事件,如果粒子没有与水发生碰撞,则测试为假,粒子将不会继续执行下一步的操作。使用“Collision Spawn”测试,我们可以选择只将原始的粒子发送至下一事件,或者只发送繁殖出的新粒子,或是两者同时发送,这里我们将使用默认选项,这种设置只会将繁殖的粒子发送到下一个事件当中,单击“Add(添加)”或“By List(按列表)”按钮将 UDeflector01 空间扭曲添加到导向器列表中,此时事件中的测试名称将会由“Collision Spawn 01 (无)”更改为“Collision Spawn 01 (UDeflector01)”,这是粒子流的动态名功能,即在事件中动作名称包括动作最重要的参数,如图1-11所示。
图1-11
12、在粒子视图右侧的命令面板上,在“Spawn Rate And Amount(繁殖速率和数量)”组中勾选“Spawn On Each Collision(每次碰撞时繁殖)”,这时“Until(次数上限)”参数将变为可用,它主要用来定义父粒子接受碰撞测试的最大次数,我们需要将默认值更改为任意较大数字,以确保每次船起伏时都发射粒子,这里我们将“Until(次数上限)”值设置为 100,同时,还要确保卷展栏顶部已勾选了为以下项测试真值>繁殖粒子的复选框,这样就会使繁殖的粒子在出生后立即有资格重定向到下一事件当中。将“Spawnable(可繁殖) %”设置为 25.0,它表示将实际繁殖粒子的现有粒子或父粒子的百分比,将“Offspring(子孙数)”设置为 15,它会会告知粒子流从与 WaterMover 对象碰撞的每个原始粒子发射15个粒子。将“Variation(变化) %”设置为 15.0,如图1-12所示。
图1-12
13、设置繁殖粒子的速度。在“Speed(速度)”组设置中可用于指定受测试影响或由测试创建的粒子的速度和方向。在其下拉列表中可用来设置父粒子和繁殖的粒子在碰撞时的反应。选项包括“Continue(继续)”和“Bounce(反弹)”。“Continue(继续)”将忽略导向器的效果,使粒子继续它们的运动,就像没有发生任何事情一样。在此场景中,父粒子将永远不会测试为真,因此此设置对它们没有任何影响。我们希望繁殖的粒子反弹离开导向器,因此可以保留“Offspring(子孙)”设置为“Bounce(反弹)”,我们还要考虑导向器的粒子反弹的参数,较高的数值将会使繁殖的粒子反弹得更远,“Collision Spawn”测试可用两种方法来控制繁殖粒子的初始速度,一种是“In Units(使用单位)”,另一种是“Inherited(继承)”,其中前者是粒子发射的绝对速度值,与父粒子的运动无关。在本例中我们将使用“Inherited(继承)”,也就是船在航行时,与水面接触得越剧烈,子孙粒子运动的速度就越快,“Inherited(继承)”是默认值,在实际使用过程中需要将其值减小至四分之一左右,这里我们设置“Inherited(继承) %”值为 25.0,将“Variation(变化) %”值设置为 15.0,将“Divergence(散度)”设置为 15.0,“Divergence(散度)”类似于“Variation(变化)”,但它并不能随机改变速度,而只影响方向,如图1-13所示。
图1-13
14、创建一个新事件到场景当中。在当在事件显示的空白区域添加“Speed”操作符,将它放在现有事件下面,此时粒子流将会创建一个包括“Speed”操作符和“Display”操作符的新事件,由于“Display”操作符可以用来控制粒子在视图中的显示方式,所以非常重要,当我们使用分支事件时,怎样判断测试结果何时为真?这就要通过更改分支事件中的“Display”操作符,便可以轻松地查看系统如何在视图中流动,我们还可以限制该事件中所显示粒子的百分比,以及显示每个粒子的 ID号,在新事件中,我们通过单击“Speed”操作符的图标禁用它,此时操作符变成灰色,表示其禁用状态。如图1-14所示。
图1-14
15、将“Collision Spawn”测试的输出连接到新事件的输入。使用鼠标拖动Collision Spawn测试到Event02事件上的小圆上,此时会在两个连接器之间出现一条蓝色连线,并带有显示流动方向的箭头。如图1-15所示。
图1-15
16、在创建的新事件中单击“Display”操作符,在其右侧的命令面板上更改其显示类型和颜色,单击操作符名称旁边的彩色圆点,也可以不进入操作符参数直接更改显示颜色,我们将它们变成绿色线,播放动画我们会发现,当船与水碰撞时,会发射粒子,由于我们已经为新粒子定义了不同于父粒子的显示方式,因此可以轻松识别这些新粒子,即视图中显示为绿色短线的即是,如图1-16所示。
图1-16
17、重新启用“Speed”操作符,方法是单击其图标即可,也可以使用鼠标右键单击操作符并从菜单中选择Turn On(启用),“Speed”操作符是根据粒子流的图标来创建速度,前面我们已经将图标与船对象对齐并链接到了船对象上,下面我们需要对其进行设置以创建径向力,此径向力将施加到粒子使其远离中心。单击“Speed”操作符,在其右侧的参数命令面板上,将“Direction(方向)”设置为“Along Icon Arrow(图标中心朝外)”,将“Speed(速度)”设置为 30.0,将“Variation(变化)”设置为 15.0 以使速度随机化,将“Divergence(散度)”设置为 45.0,如图1-17所示。
图1-17
18、添加外力作用。如果要添加像重力那样的力,我们需要使用“Force”操作符在事件中定义它们。但为获得更大的灵活性,我们将使用两个“Force”操作符,以便为每个“Force”操作符指定不同的强度,在“Speed”操作符下添加两个“Force”操作符,如图1-18所示。
图1-18
19、在第一个操作符中,使用“添加”按钮将 Gravity01 空间扭曲添加至其列表当中,将此“Force”操作符的“Influence(影响) %”值设置为 150.0,它表示此事件中的粒子将受到Gravity01 空间扭曲的影响,影响程度是其强度的 150%,这样设置以后将使这些飞溅粒子看起来比它后面的的薄雾具有更大的质量,而薄雾将会使用相同的“重力”空间扭曲,但是受到的影响确较小,如图1-19所示。
图1-19
20、向第二个“Force”操作符添加 Wind01 空间扭曲,并将其“Influence(影响) %”值设置为 5.0,设置较小的影响值是因为飞溅效果要模拟质量较大的水,所以它们受到的风的影响不应该像细微的海洋喷雾那么大,如图1-20所示。
图1-20
21、设置粒子寿命。此时如果播放动画,我们会看到正确形成的飞溅粒子,但是存在的问题是它们永远不会消失,只是受重力影响在水中持续下落,这是由于我们没有为粒子指定寿命。为粒子指定寿命我们可以使用“Delete”操作符,此操作符主要删除传递给它的粒子,我们在第二个“Force”操作符下面添加“Delete”操作符,并将其“Remove(移除)”选项设置为“By Particle Age(按粒子年龄)”,保持其默认的“Life Span(寿命)”值为60 帧以及“Variation(变化)”值为10帧,此时如果播放动画,我们会看到飞溅粒子在约 60 帧后消亡,如图1-21所示。
图1-21
22、创建水雾效果。下面我们来制作来自飞溅水花的水雾效果。在“Event02”事件的底部添加一个“Age Test”,保持其默认设置,即“Particle(粒子年龄)”和“Is Greater Than Test Value(大于测试值)”,将“Test Value(测试值)”设置为 10,将“Variation(变化)”设置为 4,如果“Event02”事件中的所有粒子年龄约为 10 帧,对于添加的随机性要加上或减去 4 帧,则此测试会将所有粒子传送至新事件,如图1-22所示。
图1-22
23、创建一个新事件。将“Spawn”测试拖动添加到事件显示的空白区域,将“Event02”事件中的“Age Test”关联到包含“Spawn”测试的新事件,此时,由于“Age Test”会在粒子达到其寿命被删除之前将其移至下一事件,因此,“EVENT02”事件中的“Delete”操作符不再具有任何作用,但中它可以减轻系统负担过多粒子,如图1-23所示。
图1-23
24、单击选择“Display”操作符,在其右侧的命令面板中将“Type(类型)”设置为“Geometry(几何体)”,粒子流将为自动添加的每个“Display”操作符指定随机的颜色,另外,我们也可以自己更改此颜色,如图1-24所示。
图1-24
25、单击选择“Spawn”测试,它的参数设置类似于“Collision Spawn”测试的参数。在默认的情况下,它设置为繁殖粒子一次,这表示其在流中不持续繁殖粒子。在这个场景中,我们不希望每个飞溅粒子都发射出水雾粒子,设置“Spawnable(可繁殖) %”值为 75.0,如图1-25所示。
图1-25
26、在参数命令面板上将“Offspring(子孙数)”值设置为3,将“Variation(变化) %”设置为 15.0,并保持默认的“Divergence(散度)”设置 20.0,如图1-26所示。
图1-26
27、在“Event03”事件中,在“Spawn”测试符后添加一个“Force”操作符,单击其右侧命令面板上的“Add(添加)”或“By List(按列表)”按钮,向列表中添加 Drag01 和 Wind01 空间扭曲,同时,将“Influence(影响) %”设置为 50.0。粒子流的重要功能之一就是可以将具有不同影响值的相同力应用到不同的操作符中,在此场景中我们不需要多余的空间扭曲,同前面一样,我们将使用“Delete”操作符使水雾粒子在特定时间后消亡,如图1-27所示。
图1-27
28、添加Delete操作符。在“Event02”事件中单击选择“Delete”操作符,然后右键单击它并从菜单中选择“Copy(复制)”项,然后将鼠标光标放在“Event03”事件的底部并单击鼠标右键,在弹出的菜单选项中单击“Paste(粘贴)”,这样我们就将“Delete”操作符粘贴到了“Event03”事件中,此操作符在事件中显示为“Delete 02”,如图1-28所示。
图1-28
29、为不同粒子类型定义几何体和材质。现在播放动画观看,我们会发现相当逼真的水花向上飞溅并从中喷射出水雾,但要让其成为生产实例,我们还需要进行一些设置,我们可以将每个事件的粒子描述为球体、长方体或实例几何体等,而且,当在不同事件之间移动粒子时,还可以更改它们的形状。这里我们将使用两种几何体类型即飞溅粒子和水雾。飞溅粒子需要模拟大量飞溅的数百万个微小粒子,我们将使用混合到一起且具有不透明度衰减的大型球体形状来进行模拟,这样就会生成类似由数百万个粒子组成的柔软的曲面,另一方面,水雾可以是很多小圆点。在“Event02”事件中的任意位置添加“Shape Instance”操作符,此操作符的功能非常强大,它允许我们在场景中将唯一的对象用作粒子几何体,并且更改此几何体的某些参数,而实际中不更改此几何体,如图1-29所示。
图1-29
30、单击选择“Shape Instance”操作符,在其右侧的命令面板上单击“粒子几何体对象”组中的按钮,此时鼠标将切换至拾取模式,然后在场景中选择Sphere01对象,如图1-30所示。
图1-30
31、在粒子视图中单击“Event02”事件中的“Display”操作符,在其右侧的命令面板上将其显示“类型”更改为“几何体”或“边界框”,如图1-31所示。
图1-31
32、设置粒子缩放动画。如果此时播放动画,我们会发现,当水花溅起的时候,也就是粒子出生时,它们最初是以实际大小出现的,这是因为它们在出生时参考的是具有固定比例的Sphere01几何体,如果要使效果更加逼真,我们需要进行随粒子年龄设置缩放的动画。依据粒子的年龄设置参数动画是一个非常有用的功能,因为在粒子年龄期间设置的动画都会在粒子自身的时间帧中被设置成动画。下面我们将根据粒子年龄按比例来设置水花的大小。在“Event02”事件的“Shape Instance”操作符下添加“Scale”操作符,如图1-32所示。
图1-32
33、单击选择“Scale”操作符,在其右侧的命令面板上的“Type(类型)”下拉列表中选择“Relative First(相对最初)”类型, 这种类型采用现有的缩放因子,在本教程中,来自“Shape Instance”操作符,并修改相对于该值的粒子缩放。如图1-33所示。
图1-33
34、将时间滑块拖动到第 0 帧,单击打开“Auto Key(自动关键点)”动画设置选项,然后将“Scale Factor(比例因子)”的“X %”值设置为 0.0,这样设置会将所有三个轴都设置为 0,并在第 0 帧处为每个轴创建关键点,我们可以在轨迹视图中访问这些关键点,也可以在选定粒子流图标时在轨迹栏中访问它们,如图1-34所示。
图1-34
35、拖动时间滑块到第 30 帧,然后将“Scale Factor(比例因子)”值设置为 100.0,关闭“Auto Key(自动关键点)”动画设置项,如图1-35所示。播放动画观看效果,粒子水花的缩放问题并没有得到解决,这是因为在默认的情况下“Scale”操作符使用“绝对时间”工作,即在第 0 帧至第 30 帧期间缩放粒子,因此,在这些粒子到第 58 帧首次出现时,缩放已经达到了100%。
图1-35
36、在右侧命令面板中,在“Animation Offset Keying(动画偏移关键点)”组中,将“Sync By(同步方式)”设置为“Particle Age(粒子年龄)”,然后播放动画观看效果,随着每个飞溅粒子的产生,它们将在 31 帧内从0% 逐渐增大到100%,如图1-36所示。
图1-36
37、为每个粒子设置不同的缩放效果。在“缩放变化”选项组中,将“X %”值设置为 20.0,每个粒子将增大到不同的量,此量为随机选定,范围在 80% 至 120% 之间,如图1-37所示。
图1-37
38、添加“Shape Facing”操作符。由于水雾粒子应该具有非常柔和的边缘,因此水雾效果略微不同于大的飞溅出来的粒子,我们将使用不透明度的径向渐变为这些粒子多边形设置贴图效果,使它们看起来像带有柔和边的几何体,这些效果的设置就是通过“Shape Facing”操作符来实现的,主要使用 Mist 材质设置贴图,将“Shape Facing”操作符从仓库中添加到“Event03”事件中的“Spawn”测试后面,然后单击该操作符以显示其参数,如图1-38所示。
图1-38
39、在其右侧的参数命令面板中,第一个组用于指定粒子将朝向的对象,在大多数情况下,我们都应该将该对象设置为摄影机,使这些粒子始终朝向摄影机的原因是为了虚设它们的形状,因为它们在实际上只是平面的片状。单击“Look At Camera/Object(注视摄影机/对象)”按钮,然后单击NONE按钮,然后用鼠标单击选择场景中的摄影机,如图1-39所示。
图1-39
40、设置粒子的大小比例。在参数命令面板中有三种方法可以用来进行设置粒子的大小和比例,即::In World Space(世界空间)、In Local Space(局部空间)或In Screen Space(屏幕空间)。In World Space(世界空间)可以用来以世界单位设置绝对大小,而使用In Local Space(局部空间)时,可以将大小设置为先前定义的大小的百分比。In Screen Space(屏幕空间)比较独特,这是由于它保持每个粒子的大小与屏幕的大小成比例,通过不断地调整粒子大小来保持所指定的比率,而不论其与摄影机的距离远近,这里我们选择了“In World Space(在世界空间中)”,然后将“Units(单位)”设置为 2.0,如图1-40所示。
图1-40
41、在实际制作过程中,我们希望产生的水雾粒子的缩放与飞溅出来的大多数的粒子的缩放相类似,所以我们将“Scale”操作符从“Event02”事件中复制到“Event03”事件中的“Shape Facing”操作符的下面,如图1-41所示。
图1-41
42、为飞溅的粒子和水雾指定材质。我们将使用“Material”操作符将材质指定给全局或局部事件中的粒子。需要说明的是在局部事件中,“Material”操作符只影响该事件中的粒子,但在全局事件中,它会影响系统中的每个粒子。材质操作符有三种形态即:静态、动态和频率。静态比较简单,它指定在事件期间不变的材质和 ID;而动态使粒子的材质 ID 在事件期间发生变化,并使用“粒子年龄”和类似贴图支持动画材质;频率直接使用子材质,可以创建材质列表,并根据百分比来确定对粒子的指定。从仓库中将“Material Dynamic”操作符添加到“Event02”事件中“Age Test”上面的任何位置,如图1-42所示。
图1-42
43、在材质编辑器中已包含了要用于飞溅粒子的材质,单击选择Material Dynamic操作符,在“Material Dynamic”右侧的参数命令面板中,单击“指定材质”按钮,然后在“材质/贴图浏览器”对话框中选择“浏览自”>“材质编辑器”,然后双击“Splash”材质,这种材质较简单,它使用带有轻微自发光的纯色,若要使边缘看起来柔和,我们将使用遮罩的衰减贴图,衰减贴图会使不透明度随着材质到达边缘而下降,然后使用随粒子年龄从白到黑变化的“粒子年龄”贴图对上述情况设置遮罩,从而有效地使粒子随其寿命而消失。现在,在“Event02”事件中的“Delete”操作符将重新起作用,这是因为设置了粒子寿命,使用“粒子年龄”贴图需要知道粒子在其整个寿命中的位置,以便确定要将范围内的哪种颜色应用到粒子,如图1-43所示。
图1-43
44、设置水雾材质。将“Material Dynamic”操作符添加到“Event03”事件中“Spawn”测试后面的任何位置,并为其指定“Mist”材质,这种材质与“Splash”材质有所不同,它使用带有微量自发光的纯色,但是由于它是面粒子,因此该材质使用径向渐变设置不透明度贴图,同时使用“粒子年龄”贴图设置遮罩,另外,由于材质的“面贴图”选项已经启用,所以使用径向渐变能正确的适配几何体,如图1-44所示。
图1-44
45、渲染动画场景。在进行动画渲染之前,我们还需要进行一些小的调整。首先,激活“透视”视口,然后按 C 键将其设置为摄影机视图,然后在“Event01”事件中的“Collision Spawn”测试中,将“Spawnable(可繁殖) %”设置回 100.0,最后对摄影机视图进行渲染,观看动画效果,小船在翻滚的波浪中上下起伏,每当小船前后运动时,在小船的底部就产生了大量的向上飞溅的水花,此外,水花还释放出吹散的水雾效果,最终效果如图1-45所示。
图1-45
46、本节小结:在这个实例中,我们学习了如何使用粒子流将对象用作发射器,如何将对象的一部分子对象用作发射器,通过使用碰撞测试事件,并作为最终结果而发射水花飞溅和薄雾的效果,同时,通过使用风力等外力作用来影响发射粒子的运动,最后通过应用材质使其看起来更加逼真。好了本节课的实例学习就到这里,下一节我们将通过模拟一辆轿车在雨后的路面上行驶所产生的水花和烟雾效果来更深入的学习粒子流系统,请大家继续关注PConline软件资讯的3DS Max栏目。