当开始学习使用粒子流来模拟粒子物理学时,系统附带的预设 mParticles 流将是一个良好的起点。在本教程中,您将使用 mParticles 流并结合其他技术来学习如何使用 mParticles 系统。
技能级别:中级
完成时间:1 小时

在本教程的开头部分,您将从头开始,但在最后部分,则使用已准备好的 .max 场景文件。
此操作可一次性添加进行简单物理模拟所需的全部元素。

开始时长方体形状的粒子呈立方体排列悬浮在半空中。粒子快速落到地面并随机散布在碰撞点周围。

长方体形状的粒子在落地后不会执行太多操作,但您可以通过使其变圆来添加一些滚动操作。
“mParticles 图形”确定模拟过程中粒子的特性。
这一次粒子落下,然后向四外滚动而散开。

物理模拟引擎是“mParticles 世界”辅助对象,可以从“粒子视图”中访问该辅助对象。
此操作可选择辅助对象,并在“修改”面板中显示其“参数”卷展栏。

这一次,播放动画时,球体下降速度将变慢,而且向四外滚动需要更长的时间。
在本部分中,您将创建一个简单砖墙,并使用虚拟粘合将砖用灰泥堆砌起来。
“出生组”将替换“出生栅格”且粒子会从视口中消失。但是,仍将保留大线框立方体。该立方体是“mParticles 世界”辅助对象。指向该立方体中心的向下箭头表示重力的方向,而底部的 X 表示地面碰撞平面的位置。默认情况下,该平面与 3ds Max 中的主栅格(即 Z=0 的 XY 平面)一致。

此场景中没有“出生组”的物理符号;但它可从您指定的网格对象中创建粒子,因为您很快就会看到。
本教程不需要使用此操作符。


长方体对象名称将填充到此列表中,其粒子副本将显示在视口中。这些长方体均为粒子对象,一旦将其应用于操作符中,可以很容易获得它们。
此操作会隐藏列表中的对象,只保留其粒子副本。
现在,“mParticles 图形 001(长方体)”操作符控制粒子的图形,以便它们的大小与原始砖块的大小相同。
在重力的作用下,砖块会快速成堆倒下。

可以通过“mParticles 粘合”测试轻松地修复上述问题。
“粘合”测试可创建粒子对之间的绑定,因此能够查看其正在进行的操作很重要。因此,关键选项为“可视化绑定”。
由于尚未进行任何绑定,因此无法查看。

绑定主要为垂直绑定,是因为这样粒子之间的距离最短。
您将可能看到砖列移动到一起。可以在砖块的上方和下方(但不在两侧)使用虚拟灰泥。

首先,应该对不需要移动却移动的列进行处理。此问题是由于在模拟中缺乏稳定性,可以通过增加“子帧因子”值来解决该问题。
设置“子帧因子”值的一般规则是将“粘合”测试
“每个粒子的最大绑定数”值翻一倍并加 2。因此,如果“每个粒子的最大绑定数”值为 4,则“子帧因子”应设置为 (2 x 4) + 2=10。根据模拟的一般复杂性,有时可以使用较低的“子帧因子”值。但现在请使用值 10。
如果在列混乱的状态下设置此值,您将看到所有列跳回其原始位置。
接下来,要允许列绑定在一起,需尽可能增加绑定数目。

您可能无法看到每对水平方向相邻砖之间的绑定,但只要每一列至少具备一个或两个水平绑定,则整面墙将连在一起。
理想情况下,不会发生异常。如果墙移动,则增加“子帧因子”值直到其不移动为止。
要创建粒子交互,您将添加一个“出生流”发射器。

同时需要克隆“mParticles 世界”操作符,以便这两个事件可使用相同的“mParticles 世界”辅助对象和世界设置。执行上述操作可能需要一些时间。
只读“总”字段中应包含值 1。

如果现在播放动画,则应该可以看到单个粒子从墙下方射出。这是由于“出生流”图标的默认位置位于世界中心:(0,0,0)。此外,由于“出生流”速度具有一个内置的“速度”属性(默认情况下,设置为 300),因此无需其他“速度”操作符。

在不与砖块发生碰撞的情况下球体穿过墙。这是由于其事件还未参与到物理模拟中。
“mParticles 世界”操作符需要位于粒子参与模拟的每个事件中。除显示和任意测试之外,它应始终是事件中的最后一个操作符。
3ds Max 会将 “mParticles 世界”事件添加到球体事件。
此时球体将撞倒墙。根据用户设置,还可以随着球体滚动来推动墙。当墙被球击中时,粒子仍紧紧绑定在一起。

如果球起先不撞倒墙,请尝试选择“mParticles 世界”并降低“应用重力”
“加速度”值;例如,降为 245。您也可以保存工作,并查看附带的文件
pflow_mparticles_tutorial.max
。检查其设置以查看与您的设置有何不同。
“mParticles 粘合”中一个重要的参数组为“可打破性”。当粒子遇到足够的力时,可以使用该设置删除粒子间的绑定。

“可打破性”组中,启用“可通过力断开”。在查看其中显示绑定的视口时单击时间滑块上的“>”按钮数次。 到第 2 帧时,所有绑定将消失。这是由于默认的“最大力”和“最大扭矩”的设置值低,因此重力的力度足够分解绑定。
“最大力”和“最大扭矩”定义了在打破前绑定可承受的最大力。若要创建一个逼真的模拟,通常需要增加这两选项的值。
“速度”值来查看其如何影响模拟。
“速度”值还原至 300。 另一个有用的“mParticles 粘合”选项为“仅绑定中心对齐”。这将创建基于粒子对齐和接近度的绑定。在粒子砖块的当前布局下,很难观察到这个现象,这是由于每块砖都与其相邻的砖对齐,因此需要稍微重新布局图层。
“出生组”操作符,然后单击“取消隐藏”以显示所有用于生成粒子的网格图形。然后禁用“出生组”操作符,以便可以更容易看见长方体。 
当然,这也是真实世界中砖墙的构造方式。此外,在真实世界中,半砖通常用于填充缝隙,但本教程不需要此操作。实际上,在本部分中您可以将砖当做木板进行操作,以便进一步证明在虚拟世界一切皆有可能。
启用“出生组”操作符。
粒子将仍位于其原始位置。如果要更改粒子对象(长方体),则需要手动更新“出生组”。

现在您可以看到更多的连接,主要是由于偏移交替图层造成的。之前那里还有很多粒子,但现在这些粒子均沿对角线运动到水平位置发生偏移的最近的砖块。
此操作可通过允许“mParticles 粘合”以仅绑定到局部轴相互对齐的粒子来删除所有对角绑定。因此可以仅在直角进行绑定(根据轴的方式排列),而不是对角。
如果仔细观察,可以看到相邻粒子之间的水平绑定和交替图层中粒子之间的垂直绑定。要创建木板效果,可使用第三个设置删除后者。

绑定间隙可删除超出指定距离的绑定,因此交替垂直图层之间的长距离绑定(其距离比指定的绑定间隙值 1.0 长)将不再启用。仅剩下水平绑定,其可提供所需的木板效果。

启用“绑定间隙”后,如果看不到长方体之间的小水平绑定,请增加“绑定间隙”值直到绑定重新出现。
球如同打碎砖一样将木板打碎。

在进行最终过程前,请快速浏览一下启用柔性绑定的粘合设置。
“类型”参数设置为“距离”。 距离绑定类型可允许在绑定中具有更大弹性。
木板仍合在一起,但由于弯向球的冲击方向,使其看上去像成串连接在一起而不是绑在一起。“距离”选项可以产生有趣的模拟现象(比如布和珠帘),可以从附带的示例文件中找到这些例子。

粒子蒙皮器是一个功能强大的修改器,可以让粒子在网格“蒙皮”内部起到“骨骼”的作用。如本简介中所描述,此操作可允许使用一些令人兴奋的快速又简单的方法来获得特殊效果。
在本课程中,需要先返回分散为列的粒子。
“mParticles 粘合”操作符,启用“可视化绑定”,然后将“绑定距离”设置为较低的值,只显示垂直绑定。将值设置为 10.0 即可。 但问题是,由于只有一个球,因此冲击只能对位于中间的列产生影响。解决该问题的方法是应具有足够多的粒子。
现在总值为 3,但如果播放动画时,由于球与球之间距离太近,因此仍不会对所有列产生影响。可以通过“唯一性种子”值调整球的位置。
并不是所有的列均受到撞击,但它们所处的位置均发生不同的变化。
在附带的示例场景 pflow_mparticles_tutorial.max 中,创建的长方体大小为 127 x 12 x 34,但在您的场景中可能会有些变化。


在“选择粒子系统”对话框中,单击以选择“粒子流源 01”,然后单击“确定”。
“粒子流系统”列表现包含单个条目:粒子流源 001。但是,本系统中并不是所有粒子均会对长方体“蒙皮”产生影响,而是只有“事件 001”中的粒子。
粒子蒙皮器通过粒子运动对附近网格点产生影响的方式进行工作。理想情况下,粒子会影响修改对象中的所有网格点,否则粒子移动时而网格点滞后,会导致网格产生不美观的拉伸现象。因此,需要一个具有检查未受影响的网格点功能的选项,从而帮助您将影响距离设置设为合适的值。

现在基本设置已完成,无需再查看“砖”粒子。
随着这些构成球的粒子撞向当前不可见的粒子时,粒子将打散且附着蒙皮长方体状的网格,其裂口大小与粒子的飞行距离相关。但是,若接缝不完美,则一些网格将会拉伸出去,在某种程度上将影响效果。
补救方法很简单:只需要让裂口对粒子间距离的更改更加敏感即可。
“相对 %”当前设置为 50.0(默认值)。将其更改为 1.0。 在距离中这样一个相对较小的更改会导致网格破裂。
此时物体将完全打散,且出现具有真实感的锯齿状边缘。

如果您喜欢直边,请尝试减小“边分割精度”
“相对 %”值。
您可能会注意到这些物体看起来并非实体状,可以看见其内表面。该问题可以使用标准修改器解决。
现在再播放动画时,这些物体看起来将非常逼真。
此教程(只要其作为教程)可以让您初步体验粒子流模拟工具的一些功能。我们建议在您创建的场景中进行试验,以便更改参数、使用不同类型和数量的粒子等。