“缓存”操作符记录粒子状态并将其存储到内存中。这对于大型的或复杂的粒子系统尤其有用,这些系统因为需要处理大量的计算,在播放时(特别是后退时)很慢。
当缓存有效时,如果您第一次播放或转到某帧,则缓存将计算和记录到该帧(包括该帧)为止的粒子运动。之后,播放该帧或之前的任意帧就使用缓存中的数据,而不是重新计算粒子操作。启用了缓存后,每一帧仅须计算一次粒子系统,而之后播放和在帧之间移动就会明显快得多。
要将整个流存入缓存,请将“缓存”操作符添加到全局事件中。要将单个的局部事件存入缓存,请将“缓存”操作符添加到其中。
要确定如何才能最好地在粒子系统中实现缓存,请启用“粒子视图”“轨迹更新”
“更新进度”,然后播放动画或转至离当前帧相对较远的帧。观察粒子图表,并注意观察操作高亮显示超过几分之一秒的事件,或比其他事件有更多活动的事件。任何这样的事件都能从缓存中获益。
示例:使用“缓存”操作符:
当系统执行操作时会将其高亮显示,这让您可以监视粒子系统的计算。
“保持分离”是计算量相当大的操作符。
当系统计算第 0 帧和第 100 帧之间的所有粒子运动时会有一个延迟。此延迟非常必要,因为“粒子流”是一个历史依赖型系统。同时,当在每一帧中执行系统中的操作时,它们会在“粒子视图”中暂时高亮显示。
当系统计算第 0 帧和第 50 帧之间的所有粒子运动时会有另一个延迟。
当您松开鼠标按钮后,“缓存”操作符将从动画开始到当前帧的粒子运动自动存入缓存,这时会有延迟。同时,每个操作在每一帧中暂时高亮显示。
高亮显示的操作符仅有“缓存”(非常快)和“显示”,计算时没有延迟。软件将第 0 帧和第 50 帧之间的所有帧都存入缓存。
这一次延迟是将第 50 帧到第 100 帧的粒子运动存入缓存的结果。
所有的粒子运动都已存入缓存,所以没有任何延迟发生。但是如果您更改设置值,则“缓存”操作符会自动重新计算并存储粒子运动。
默认情况下,当您更改缓存所存储的任意参数时,“缓存”操作符会自动更新缓存。因此,当您更改第 100 帧的“衰减区域”值时,它会重新计算动画并重新将整个动画存入缓存。
下面,您将简要地浏览手动缓存是如何工作的。
当您更改参数时,“缓存”操作符不再自动更新存储的数据。
没有任何延迟,因为动画仍然从缓存数据中播放。然而,缓存数据现在是无效的,因为您更改了粒子系统中的参数。
3ds Max 会关闭“粒子视图”,更新活动段的缓存,然后重新打开“粒子视图”。缓存数据现在是准确的。
其他手动更新选项允许您更新整个动画或自定义帧范围的缓存。
如您所见,“缓存”操作符的功能相当强大。当其存在和活动时,默认情况下它会覆盖粒子系统的重新计算,除非您更改所有操作参数,它才会自动更新缓存数据。如果使用恰当的话,它可以为设置和测试粒子系统节约大量的时间。
该用户界面出现在“粒子视图”对话框右侧的“参数”面板中。
例如,当 N 设置为默认值 5 时,缓存为每 5 帧存储动画数据。
当“缓存”用作局部操作符,且下一个事件没有“缓存”操作符时,这很重要。为了使下一个事件工作正常,它应该从当前事件接收粒子。这些粒子由测试操作活动产生。“缓存”操作符可以记录测试活动以便在以后播放它。
如果将“缓存”操作符用作全局操作符,则无需将测试结果存入缓存。这是因为系统有每个事件的缓存数据,并且无需测试结果就能跳至任意帧。
通常,缓存数据仅会保存在您用“保存”或“另存为”命令创建的磁盘文件中。您也可以使用下列两个选项来指示 3ds Max 将缓存数据包括到其他类型的文件中。
这些控件让您可以在帧范围内手动更新或清除缓存,或清除整个缓存。
在更新过程中,3ds Max 会暂时关闭“粒子视图”,并且当在缓存范围内移动时间滑块时显示“缓存更新进度”条。同时,在默认情况下,动画在视口中播放。要防止这种情况出现,并加快计算的速度,请禁用“更新视口”。
如果在手动更新过程中缓存用完了内存,“粒子流”会停止更新操作并显示警告。单击“确定”以继续,然后,如果可能的话,在下一次更新缓存之前增加“限制”值。
当您清除了缓存之后,即使“更新”设置为“手动”,如果您转至不同的帧或更改任意操作参数,“粒子流”也会自动将粒子运动存入缓存。
要更新整个动画,请将活动段或自定义范围设置为包含所有帧,然后使用相应的选项并单击“更新”。
启用时,在手动更新缓存的过程中,动画会在视口中播放。禁用该项可以禁止在手动执行缓存过程中在视口中播放动画,这能提高缓存进程的速度,特别是大型的或复杂的粒子系统。默认设置为启用。
“缓存”操作符将数据存储到系统内存中,您可以指定其使用的内存数量的上限。如果“限制”设置和缓存数据的数量超过了可用内存,计算机系统可能会改用基于硬盘的虚拟内存,而虚拟内存会降低执行缓存的速度。如果“粒子流”充满了缓存,则不会计算任何剩余的帧。
该组也让您可以监视用于缓存数据的内存数量。