当开始学习使用粒子流来模拟粒子物理学时,系统附带的预设 mParticles 流将是一个良好的起点。在本教程中,您将使用 mParticles 流并结合其他技术来学习如何使用 mParticles 系统。
技能级别:中级
完成时间:1 小时
第 1 部分:了解预设 mParticles 流
注: 本教程假定您熟悉基本的
3ds Max 操作(如移动对象和操纵视口)。如果您之前从未使用过
3ds Max,请执行此操作前,查看更多的入门教程。此外,还应具备有关
粒子流的基本应用知识。
- 启动或重置 3ds Max,按 6 键打开“粒子视图”,然后从仓库中将“mParticles 流”拖至事件显示区。
此操作可一次性添加进行简单物理模拟所需的全部元素。
- 播放动画。
开始时长方体形状的粒子呈立方体排列悬浮在半空中。粒子快速落到地面并随机散布在碰撞点周围。
长方体形状的粒子在落地后不会执行太多操作,但您可以通过使其变圆来添加一些滚动操作。
- 单击“图形”操作符,然后将“图形”设置为“20 面球体”,并将“大小”设置为 5.0(默认大小为 10.0,但会使粒子在模拟开始时发生碰撞,从而立即散开)。然后,单击“mParticles 图形”操作符,并将“碰撞为”设置为“球体”。最后,由于向四外滚动需要花费一定时间,因此将动画长度设置为 200 帧。
“mParticles 图形”确定模拟过程中粒子的特性。
- 回放动画,并进行再次播放。
这一次粒子落下,然后向四外滚动而散开。
物理模拟引擎是“mParticles 世界”辅助对象,可以从“粒子视图”中访问该辅助对象。
- 在事件 001 中,单击“mParticles 世界”操作符,然后在其参数卷展栏中,单击 => 按钮。
此操作可选择辅助对象,并在“修改”面板中显示其“参数”卷展栏。
注: “应用重力”和“地面碰撞平面”均处于启用状态,但当您明确创建“mParticles 世界”辅助对象时(无论通过“创建”面板还是从“mParticles 世界”操作符创建),情况并非如此;默认情况下,这两个选项均处于禁用状态。
- 尝试将“加速度”(即重力加速度)值减少至 10.0。将动画长度增加到 500 帧。
这一次,播放动画时,球体下降速度将变慢,而且向四外滚动需要更长的时间。
第 2 部分:创建自己的模拟
在本部分中,您将创建一个简单砖墙,并使用虚拟粘合将砖用灰泥堆砌起来。
- 重置 3ds Max,并使用一个新的 mParticles 流重新开始。将动画长度设置为 300 帧。
- 从仓库中,将“出生组”操作符拖动到“出生栅格”操作符之上。
“出生组”将替换“出生栅格”且粒子会从视口中消失。但是,仍将保留大线框立方体。该立方体是“mParticles 世界”辅助对象。指向该立方体中心的向下箭头表示重力的方向,而底部的 X 表示地面碰撞平面的位置。默认情况下,该平面与 3ds Max 中的主栅格(即 Z=0 的 XY 平面)一致。
提示: 可能需要移动时间滑块以更新视口。完成后,返回到第 0 帧。
此场景中没有“出生组”的物理符号;但它可从您指定的网格对象中创建粒子,因为您很快就会看到。
- 从事件 001 中删除“自旋”操作符。
本教程不需要使用此操作符。
- 转至“创建”面板并添加一个长为 20、宽为 10 且高为 5 的长方体基本体。
- 激活“移动”工具,然后用鼠标右键单击坐标显示(程序窗口底部的 X、Y 和 Z 字段)的微调器,以使该长方体在主栅格上居中放置。
- 按住 Shift 键并沿其局部 Y 轴拖动该长方体对其进行克隆,当在原始长方体旁边出现一个克隆长方体时,松开鼠标按钮。使用“克隆选项”对话框创建 5 个副本,使砖的总数达到 6 块。将 6 块砖全部选中并对其定位,使这一行砖将以 X 轴 为中心、沿着 Y 轴进行排列。
- 在“左”视口中,按住 Shift 键选择砖,沿视图 Y 轴垂直向上移动砖,可使克隆副本正好位于原始行之上,并再次增加 5 个副本。
- 单击“出生组”操作符,然后在当前为空的“粒子对象”列表下,单击“添加”按钮旁边的“按列表”按钮。“选择对象”对话框打开,且文本光标位于“查找”字段中。按 B 键以高亮显示所有长方体对象,然后单击“选择”。
长方体对象名称将填充到此列表中,其粒子副本将显示在视口中。这些长方体均为粒子对象,一旦将其应用于操作符中,可以很容易获得它们。
- 单击列表下方的“隐藏”按钮。
此操作会隐藏列表中的对象,只保留其粒子副本。
- 删除“图形 001(立方体 3D)”操作符。
现在,“mParticles 图形 001(长方体)”操作符控制粒子的图形,以便它们的大小与原始砖块的大小相同。
- 粒子砖使用“显示”颜色,可根据个人喜好对其更改。
- 播放动画。
在重力的作用下,砖块会快速成堆倒下。
可以通过“mParticles 粘合”测试轻松地修复上述问题。
- 将“mParticles 粘合”测试添加至“事件 001”的结尾处。单击该测试,其参数将显示在“粒子视图”中。将“类型”设置为“刚性”。
“粘合”测试可创建粒子对之间的绑定,因此能够查看其正在进行的操作很重要。因此,关键选项为“可视化绑定”。
- 在“参数”卷展栏中,启用“可视化绑定”。
由于尚未进行任何绑定,因此无法查看。
- 确保可以在“左”视口中很清楚地看见砖块,然后使用“绑定距离”微调器增加值,直到在“左”视口中看见粒子间的蓝线。
绑定主要为垂直绑定,是因为这样粒子之间的距离最短。
- 一旦您能够看到绑定,即播放动画。
您将可能看到砖列移动到一起。可以在砖块的上方和下方(但不在两侧)使用虚拟灰泥。
首先,应该对不需要移动却移动的列进行处理。此问题是由于在模拟中缺乏稳定性,可以通过增加“子帧因子”值来解决该问题。
- 单击“mParticles 世界”操作符,然后在其参数卷展栏中,单击 => 按钮以在“修改”面板中打开“mParticles 世界”辅助对象的参数。在面板底部,展开“高级参数”卷展栏,再将“子帧因子”值设置为 10。
设置“子帧因子”值的一般规则是将“粘合”测试
“每个粒子的最大绑定数”值翻一倍并加 2。因此,如果“每个粒子的最大绑定数”值为 4,则“子帧因子”应设置为 (2 x 4) + 2=10。根据模拟的一般复杂性,有时可以使用较低的“子帧因子”值。但现在请使用值 10。
如果在列混乱的状态下设置此值,您将看到所有列跳回其原始位置。
重要: 增加“子帧因子”值通过对每帧的此设置进行多次应用,可提高模拟的精度;此操作会降低模拟的速度,但大部分情况下显示为透明。使用自己的模拟时,如果遇到任何不稳定的情况,请尝试增加“子帧因子”值,此操作可能会提高稳定性。
- 再次播放动画并确保操作更加稳定;如果不稳定,请进一步增加“子帧因子”值。
接下来,要允许列绑定在一起,需尽可能增加绑定数目。
- 单击以高亮显示“粘合”测试,然后将“每个粒子的最大绑定数”设置为 8。增加“绑定距离”直到您能够看到对角线:“绑定距离”值可能会在 20 和 30 之间。
您可能无法看到每对水平方向相邻砖之间的绑定,但只要每一列至少具备一个或两个水平绑定,则整面墙将连在一起。
- 播放动画。
理想情况下,不会发生异常。如果墙移动,则增加“子帧因子”值直到其不移动为止。
第 3 部分:用球碰撞墙
要创建粒子交互,您将添加一个“出生流”发射器。
- 从仓库中拖动“事件 001”旁边的“出生流”操作符,以便创建新事件。将“显示”操作符设置为“几何体”,然后在“出生流”后添加“图形”操作符和“mParticles 图形”操作符,两者操作符均设置为“球体”。并将此事件与粒子流源全局事件关联。
重要: 确保在此事件中“图形”操作符位于“mParticles 图形”操作符之前。由于按从上到下的顺序处理事件元素,图形数据必须可用于待处理的 mParticles 图形,否则将无法正常工作。
同时需要克隆“mParticles 世界”操作符,以便这两个事件可使用相同的“mParticles 世界”辅助对象和世界设置。执行上述操作可能需要一些时间。
- 单击“出生流”操作符,并将“发射停止”设置为 0,以便在启动动画时立即发射粒子。
只读“总”字段中应包含值 1。
如果现在播放动画,则应该可以看到单个粒子从墙下方射出。这是由于“出生流”图标的默认位置位于世界中心:(0,0,0)。此外,由于“出生流”速度具有一个内置的“速度”属性(默认情况下,设置为 300),因此无需其他“速度”操作符。
- 选择“出生流”图标,并在负 X 轴方向大约移动 80 个单位,然后向上移动,以使其垂直居于墙壁高度的中间位置。此位置大约在 (-80,0,15)。
- 将“出生流”图标沿着 Y 轴旋转 –90 度,使向量箭头指向墙。
- 单击“图形”操作符,并将“大小”设置为 20,以增加球体的大小。
- 播放动画。
在不与砖块发生碰撞的情况下球体穿过墙。这是由于其事件还未参与到物理模拟中。
“mParticles 世界”操作符需要位于粒子参与模拟的每个事件中。除显示和任意测试之外,它应始终是事件中的最后一个操作符。
- 在“事件 001”中,右键单击“mP 世界 01”事件,并选择“复制”。然后右键单击“事件 002”,并选择“粘帖”。
3ds Max 会将 “mParticles 世界”事件添加到球体事件。
- 如果新“mParticles 世界”事件不在“事件 002”的底部,而在“显示”操作符正上方,请拖放它以更正位置。
注: 您不需要使用“粘贴实例”,这是因为一个场景中永远不会多于一个“mParticles 世界”操作符的:使用此操作符的事件都属于同一模拟,更改一个事件的“mParticles 世界”参数将针对包含“mParticles 世界”的所有事件更新相同参数设置。
- 再次播放动画。
此时球体将撞倒墙。根据用户设置,还可以随着球体滚动来推动墙。当墙被球击中时,粒子仍紧紧绑定在一起。
如果球起先不撞倒墙,请尝试选择“mParticles 世界”并降低“应用重力”
“加速度”值;例如,降为 245。您也可以保存工作,并查看附带的文件
pflow_mparticles_tutorial.max
。检查其设置以查看与您的设置有何不同。
第 4 部分:打散物体
“mParticles 粘合”中一个重要的参数组为“可打破性”。当粒子遇到足够的力时,可以使用该设置删除粒子间的绑定。
- 单击“mParticles 粘合”测试,然后在“参数”卷展栏
“可打破性”组中,启用“可通过力断开”。在查看其中显示绑定的视口时单击时间滑块上的“>”按钮数次。 到第 2 帧时,所有绑定将消失。这是由于默认的“最大力”和“最大扭矩”的设置值低,因此重力的力度足够分解绑定。
“最大力”和“最大扭矩”定义了在打破前绑定可承受的最大力。若要创建一个逼真的模拟,通常需要增加这两选项的值。
- 在球击中墙之前的某一帧(比如,第 6 帧)中,增加“最大力”和“最大扭矩”值直到绑定再次可见。例如,可尝试将两者值均设置为 500。
- 继续尝试“最大力”和“最大扭矩”的设置,从而在播放动画时可尽可能地看到不同的效果。还可以尝试调整“出生流”
“速度”值来查看其如何影响模拟。
- 上述操作完成时,请将“最大力”和“最大扭矩”值均还原至 1.0,并将“出生流”
“速度”值还原至 300。
- 禁用“可通过力断开”。
第 5 部分:用木板代替砖块
另一个有用的“mParticles 粘合”选项为“仅绑定中心对齐”。这将创建基于粒子对齐和接近度的绑定。在粒子砖块的当前布局下,很难观察到这个现象,这是由于每块砖都与其相邻的砖对齐,因此需要稍微重新布局图层。
- 单击以高亮显示“事件 001”
“出生组”操作符,然后单击“取消隐藏”以显示所有用于生成粒子的网格图形。然后禁用“出生组”操作符,以便可以更容易看见长方体。
- 从底部行开始,选择长方体的每个交替行,然后将这些交替行向右移动大约 10 个单位,因此每块砖均会与其垂直相邻的砖偏移大约该砖一半的长度。
当然,这也是真实世界中砖墙的构造方式。此外,在真实世界中,半砖通常用于填充缝隙,但本教程不需要此操作。实际上,在本部分中您可以将砖当做木板进行操作,以便进一步证明在虚拟世界一切皆有可能。
-
启用“出生组”操作符。
粒子将仍位于其原始位置。如果要更改粒子对象(长方体),则需要手动更新“出生组”。
- 在“粒子对象”列表下,单击“从对象中更新粒子”,然后再次隐藏粒子对象。
- 单击“mParticles 粘合”测试,然后在“可视化绑定”处于启用状态的情况下,将“绑定距离”设置为 30。
现在您可以看到更多的连接,主要是由于偏移交替图层造成的。之前那里还有很多粒子,但现在这些粒子均沿对角线运动到水平位置发生偏移的最近的砖块。
- 启用“仅绑定中心对齐”。
此操作可通过允许“mParticles 粘合”以仅绑定到局部轴相互对齐的粒子来删除所有对角绑定。因此可以仅在直角进行绑定(根据轴的方式排列),而不是对角。
如果仔细观察,可以看到相邻粒子之间的水平绑定和交替图层中粒子之间的垂直绑定。要创建木板效果,可使用第三个设置删除后者。
- 启用“绑定间隙”。
绑定间隙可删除超出指定距离的绑定,因此交替垂直图层之间的长距离绑定(其距离比指定的绑定间隙值 1.0 长)将不再启用。仅剩下水平绑定,其可提供所需的木板效果。
启用“绑定间隙”后,如果看不到长方体之间的小水平绑定,请增加“绑定间隙”值直到绑定重新出现。
- 播放动画。
球如同打碎砖一样将木板打碎。
在进行最终过程前,请快速浏览一下启用柔性绑定的粘合设置。
- 回放动画,并将“mParticles 粘合”
“类型”参数设置为“距离”。 距离绑定类型可允许在绑定中具有更大弹性。
- 再次播放动画。
木板仍合在一起,但由于弯向球的冲击方向,使其看上去像成串连接在一起而不是绑在一起。“距离”选项可以产生有趣的模拟现象(比如布和珠帘),可以从附带的示例文件中找到这些例子。
- 设置绑定类型使其恢复为刚性。
第 6 部分:蒙皮粒子打破长方体
粒子蒙皮器是一个功能强大的修改器,可以让粒子在网格“蒙皮”内部起到“骨骼”的作用。如本简介中所描述,此操作可允许使用一些令人兴奋的快速又简单的方法来获得特殊效果。
在本课程中,需要先返回分散为列的粒子。
- 打开附带的示例场景文件
pflow_mparticles_tutorial.max
。
- 打开“粒子视图”。移动它,以便可以看到“左”视口,并将“左”视口更改为“线框”视图。
- 高亮显示“事件 001”
“mParticles 粘合”操作符,启用“可视化绑定”,然后将“绑定距离”设置为较低的值,只显示垂直绑定。将值设置为 10.0 即可。
- 播放动画并确保粒子分散到列中。
但问题是,由于只有一个球,因此冲击只能对位于中间的列产生影响。解决该问题的方法是应具有足够多的粒子。
- 单击“出生流”操作符,然后在“粒子流源图标”组中增加“宽度”值,以便该图标具有与墙相同的宽度,大约为 125 个单位。同样在“出生流”中将“发射停止”设置为 1。
现在总值为 3,但如果播放动画时,由于球与球之间距离太近,因此仍不会对所有列产生影响。可以通过“唯一性种子”值调整球的位置。
- 将“种子”值设置为 21150,并播放动画。
并不是所有的列均受到撞击,但它们所处的位置均发生不同的变化。
- 返回第 0 帧。
- 创建一个紧贴砖墙周围的长方体基本体。将“长度分段”和“高度分段”均设置为 20,并将“宽度分段”设置为 5。
在附带的示例场景
pflow_mparticles_tutorial.max
中,创建的长方体大小为 127 x 12 x 34,但在您的场景中可能会有些变化。
- 将“粒子蒙皮器”修改器应用于此长方体。
- 在修改器的“参数”卷展栏上,单击“粒子流系统”中的“按列表”。
在“选择粒子系统”对话框中,单击以选择“粒子流源 01”,然后单击“确定”。
“粒子流系统”列表现包含单个条目:粒子流源 001。但是,本系统中并不是所有粒子均会对长方体“蒙皮”产生影响,而是只有“事件 001”中的粒子。
- 在“粒子流系统”组中,禁用“所有粒子流事件”。然后单击“按列表添加”,并选择“事件 01”。
粒子蒙皮器通过粒子运动对附近网格点产生影响的方式进行工作。理想情况下,粒子会影响修改对象中的所有网格点,否则粒子移动时而网格点滞后,会导致网格产生不美观的拉伸现象。因此,需要一个具有检查未受影响的网格点功能的选项,从而帮助您将影响距离设置设为合适的值。
- 展开“粒子蒙皮器”修改器堆栈,可以看到控制粒子子对象层级,然后单击“控制粒子”以高亮显示。
- 启用“参数”卷展栏顶部的“激活蒙皮”,然后向下滚动至“显示参数”卷展栏,将其展开并启用“显示未指定的点”。
- 返回“参数”卷展栏,请注意在“距离影响”组中,“绝对”选项为激活状态。使用微调器来降低“绝对”值直到在长方体中看到红色小方块,如下图所示(这些方块表示网格点未受任何粒子影响),然后再增加“绝对”值直到从任何角度均看不到红色小方块。将值设为 7 应该是合适的。
提示: 可以在“激活蒙皮信息”对话框中看到未指定点的数目,可通过单击“激活蒙皮”按钮旁边的“?”将其打开。
- 同样,在“接缝曲面分离”组中(仅在“距离影响”组下方),将“类型”设置为“距离更改”。
现在基本设置已完成,无需再查看“砖”粒子。
- 单击“事件 001”中的“显示”操作符,并将“类型”设置为“无”。
- 播放动画。
随着这些构成球的粒子撞向当前不可见的粒子时,粒子将打散且附着蒙皮长方体状的网格,其裂口大小与粒子的飞行距离相关。但是,若接缝不完美,则一些网格将会拉伸出去,在某种程度上将影响效果。
补救方法很简单:只需要让裂口对粒子间距离的更改更加敏感即可。
- “距离更改”
“相对 %”当前设置为 50.0(默认值)。将其更改为 1.0。 在距离中这样一个相对较小的更改会导致网格破裂。
- 播放动画。
此时物体将完全打散,且出现具有真实感的锯齿状边缘。
如果您喜欢直边,请尝试减小“边分割精度”
“相对 %”值。
您可能会注意到这些物体看起来并非实体状,可以看见其内表面。该问题可以使用标准修改器解决。
- 将“壳”修改器应用于该长方体,在“粒子蒙皮器”修改器中,设置“内部量”值为 2.0,“外部量”值为 1.0。
现在再播放动画时,这些物体看起来将非常逼真。
提示: 如果要渲染动画,首先在“粒子流源”事件中将“渲染”操作符中的“类型”设置为“幻影”,这样将不会渲染粒子。
小结
此教程(只要其作为教程)可以让您初步体验粒子流模拟工具的一些功能。我们建议在您创建的场景中进行试验,以便更改参数、使用不同类型和数量的粒子等。