返回介绍

3ds Max 帮助

3ds Max 帮助归档

mParticles 粒子间碰撞测试深入介绍

发布于 2022-07-23 00:46:09 字数 3899 浏览 0 评论 0 收藏 0

本主题介绍了有关在粒子流中使用 mParticles 粒子间碰撞测试的其他信息。

首先,我们将介绍 mParticles 粒子间碰撞不会执行的操作:它不会控制粒子间彼此是否发生碰撞。默认情况下,如果粒子参与 MassFX 模拟,并且其碰撞图形由“mParticles 图形”操作符定义,则它们会互相碰撞。这是模拟必不可少的一部分。

mParticles 粒子碰撞测试会注册粒子碰撞,然后将粒子重定向(根据碰撞信息)到其他事件。

将 mParticles 粒子碰撞测试添加到事件类似于在 mParticles 碰撞测试中启用“测试真值的粒子条件”选项:粒子流开始收集有关碰撞的信息。与 mParticles 碰撞测试一样,收集此信息的作业会消耗 CPU 资源,因此,如果不需要根据粒子彼此碰撞的信息将粒子重定向到其他事件,则不要添加此测试。

使用“碰撞注册方式”组可定义要为特定粒子组注册哪些碰撞。默认情况下,它将设置为“当前事件中的粒子”。这意味着,如果当前事件中的某一粒子与当前事件中的其他粒子碰撞,则会注册并处理该碰撞。根据其他选项(“测试真值的粒子条件”),此碰撞可能会使粒子测试为真值,也可能不会使粒子测试为真值。无论结果如何,只要此选项设置为“当前事件中的粒子”,就会仅处理当前事件中的粒子间碰撞。

另一个选项是“事件中的粒子”。此时,可以根据碰撞注册定义您感兴趣的其他事件。默认情况下,此列表将显示当前粒子系统中的所有事件(这些事件位于同一个“粒子流源”全局事件中,因为模拟只能按“粒子流”粒子系统运行)。请记住,此列表还包含当前事件输入。因此,如果需要向一组事件(包括当前事件)注册碰撞,则您可以这样做。由于所有事件都已列出,因此您需要高亮显示这些事件(将其标记为深蓝色),以确定所需的碰撞事件。

为说明有关碰撞注册范围的信息,请参见以下示例: MassFXInterCollision01.max

在此示例中,首先所有粒子形成一个长方体,然后落到一个环形导向器上。第一个事件(即事件 01)包含两个测试:用于定义与环形导向器碰撞的“mParticles 碰撞”,以及用于定义在粒子彼此碰撞之后跳到下一个事件的“mParticles 粒子间碰撞”。请记住,“碰撞注册”范围设置为“当前事件中的粒子”。因此,在所有相邻粒子均已彼此碰撞并传输到下一个事件之前,某些粒子可能还未与任何其他粒子碰撞。在此配置下,会存在某些“落后”的粒子,这些粒子将显示为绿色(如第一个事件所示)。

若要最终使所有粒子过渡到下一个事件,请将“碰撞注册”范围更改为“事件中的粒子”并高亮显示列表中的所有三个事件:事件 001、事件 002 和事件 003。现在,当播放动画时,每个粒子都会收到一个碰撞通知,并从绿色变为黄色,然后变为蓝色。

另请注意示例 MassFXInterCollision01.max :在粒子到达最后一个事件后,它们就会通过禁用模拟而变为静态(请参见最后一个事件中的“mParticles 切换”操作符)。这些粒子的静态特征会使某些“落后”的粒子(即显示为绿色的粒子)处于一种不可能的状态中:它们会挤在静态粒子之间,并且没有足够的空间来容纳它们。这就是可以看到绿色粒子发生抖动的原因。

可以通过调整最后一个事件中的“mParticles 切换”操作符来避免此抖动。无需禁用模拟,只需启用“匹配位置”。这样,最后一个事件和第一个事件中的粒子都会参与模拟。从某种意义上说,对于模拟而言,它们都是平等的:所有粒子都是动态的。因此,某些“备用空间”可供绿色粒子使用,并可实现均衡放置。

为说明“测试真值的粒子条件”组中“碰撞”和“多次碰撞”选项之间的差异,请参见另一个示例: MassFXInterCollision02.max。 此示例包含两个事件,如果根据“次数”选项粒子彼此碰撞 15 次,则粒子将重定向到第二个事件。在下一个事件中,粒子将设置为静态:“速度”和“自旋”都等于 0。“速度”和“自旋”值由常规的“粒子流”操作符(“速度 01”和“自旋 01”)来设置,但为使粒子处于静态,需要使用“mParticles 切换”操作符。

如果播放动画,您可以看到并非所有粒子都能到达第二个事件。这是因为某些粒子在动画期间未至少碰撞 15 次。作为试验,请减小“次数”值,以便查看可以将该值设为多大才能确保所有粒子均传输到下一个事件。该值是在动画期间粒子彼此碰撞的最小次数。此外,请注意将“碰撞注册”范围设置为“事件中的粒子”,并高亮显示所有事件。在此示例中,这意味着我们将计算所有粒子碰撞。

最后一个示例 MassFXInterCollision03.max 说明了“报告至数据操作符”和“相加计数”选项的用法。此处,这两个选项都已启用。这意味着,在根据“碰撞注册”范围定义注册所有碰撞时,此测试将通过一个整数数据通道报告这些碰撞,该通道将由“数据操作符”使用。请注意,mParticles 粒子间碰撞测试未关联到任何事件,但在该测试下方有一个“数据”操作符。此操作符的数据流(如下图左侧所示)的顶部包括“输入 mParticles ”子操作符。其中一个子操作符将计算与导向器的所有碰撞(此时,该导向器为环形导向器),而其他子操作则计算所有粒子碰撞。这些值将进行汇总,并用作具有纹理渐变的贴图的相对偏移。这样,粒子碰撞次数越多,其颜色就会越浅。

有关“报告至数据操作符”用法的注意事项:在此示例中,由于此测试未关联到任意位置,因此“测试真值的粒子条件”选项将设置为“碰撞多次”。与其他选项相比,此选项在计算碰撞时的结果最准确。而“次数”参数值并不会对准确性有所帮助。

有关此示例的其他说明:与前两个示例相比,视口中的播放速度较慢,主要原因是视口需要一定时间来更新不断更改的粒子颜色。如果将“显示”操作符更改为“滴答”,则会看到动画期间播放速度显著提高,但看不到粒子更改颜色。

“碰撞后速度慢”和“碰撞后速度快”选项与“mParticles 碰撞”和常规“碰撞”测试中的同名选项类似。

注意:由于 mParticles 粒子间碰撞测试不会控制粒子是否彼此发生碰撞,而当粒子处于一个模拟中时,它们彼此间又确实会发生碰撞,这样就会出现一个问题:如何强制不同事件中的粒子彼此不发生碰撞?为此,可以在相应的“mParticles 图形”操作符中恰当使用“碰撞组”参数,并在“mParticles 世界”辅助对象中添加排除对。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文