命令条目: “粒子视图” 单击事件中的“缓存”,或将“缓存”操作符添加到粒子系统中然后将其选中。

“缓存”操作符记录粒子状态并将其存储到内存中。这对于大型的或复杂的粒子系统尤其有用,这些系统因为需要处理大量的计算,在播放时(特别是后退时)很慢。

当缓存有效时,如果您第一次播放或转到某帧,则缓存将计算和记录到该帧(包括该帧)为止的粒子运动。之后,播放该帧或之前的任意帧就使用缓存中的数据,而不是重新计算粒子操作。启用了缓存后,每一帧仅须计算一次粒子系统,而之后播放和在帧之间移动就会明显快得多。                    

要将整个流存入缓存,请将“缓存”操作符添加到全局事件中。要将单个的局部事件存入缓存,请将“缓存”操作符添加到其中。          

要确定如何才能最好地在粒子系统中实现缓存,请启用“粒子视图”“轨迹更新”“更新进度”,然后播放动画或转至离当前帧相对较远的帧。观察粒子图表,并注意观察操作高亮显示超过几分之一秒的事件,或比其他事件有更多活动的事件。任何这样的事件都能从缓存中获益。          

注意每事件只使用一个“缓存”操作符,除非您将一个用于视口,另一个用于渲染。同样,除非设置一个用于视口,设置另一个用于渲染,否则不要在同一流中使用全局和局部“缓存”操作符。

提示  使用实时播放时,如果播放不够快,您可以使用“缓存”操作符来加快其速度。为获得最佳结果,请将“视口”积分步长与实时播放速度设置为相同的值,并将缓存采样参数设置为“积分步长”。例如,如果实时播放速度设置为 1/4x,则视口的“视口积分步长”也应设置为“四分之一帧”,并将“缓存”操作符“采样”参数设置为“积分步长”。这样,因为实时播放每秒钟将帧显示四次,而“缓存”操作符每秒钟将帧存储四次,所以两者达到同步。如果实时播放速度设置为2x 或 4x,请将“视口积分步长”设置为“帧”。

过程

示例:使用“缓存”操作符:

  1. 启动或重置 3ds Max,然后添加粒子流系统。                

  2. 打开“粒子视图”。

  3. 在“粒子视图”中,转至“选项”菜单 “轨迹更新”并启用“更新进度”。                  

    当系统执行操作时会将其高亮显示,这让您可以监视粒子系统的计算。        

  4. 在“粒子视图”中,将“保持分离”操作符添加到“事件 01”中。                  

    “保持分离”是计算量相当大的操作符。                  

  5. 单击时间滑轨的右端,转至第 100 帧。                  

    当系统计算第 0 帧和第 100 帧之间的所有粒子运动时会有一个延迟。此延迟非常必要,因为“粒子流”是一个历史依赖型系统。同时,当在每一帧中执行系统中的操作时,它们会在“粒子视图”中暂时高亮显示。                  

  6. 单击时间滑轨的中心,转至第 50 帧。                  

    当系统计算第 0 帧和第 50 帧之间的所有粒子运动时会有另一个延迟。      

  7. 在“粒子视图”中,将“缓存”操作符从仓库拖动至“事件 01”中。将该操作符插入到该事件的任意位置。                  

    当您松开鼠标按钮后,“缓存”操作符将从动画开始到当前帧的粒子运动自动存入缓存,这时会有延迟。同时,每个操作在每一帧中暂时高亮显示。                  

  8. 转至大约第 20 帧。                  

    高亮显示的操作符仅有“缓存”(非常快)和“显示”,计算时没有延迟。软件将第 0 帧和第 50 帧之间的所有帧都存入缓存。                  

  9. 转至第 100 帧。                  

    这一次延迟是将第 50 帧到第 100 帧的粒子运动存入缓存的结果。        

  10. 跳至不同的帧,拖动时间滑块。                  

    所有的粒子运动都已存入缓存,所以没有任何延迟发生。但是如果您更改设置值,则“缓存”操作符会自动重新计算并存储粒子运动。                  

  11. 转至第 100 帧,然后在“粒子视图”中单击“保持分离”操作符并使用键盘将“衰减区域”值更改为 8.0。                  

    默认情况下,当您更改缓存所存储的任意参数时,“缓存”操作符会自动更新缓存。因此,当您更改第 100 帧的“衰减区域”值时,它会重新计算动画并重新将整个动画存入缓存。                  

    下面,您将简要地浏览手动缓存是如何工作的。                  

  12. 单击“缓存”操作符并将“更新”设置为“手动”。                  

    当您更改参数时,“缓存”操作符不再自动更新存储的数据。              

  13. 单击“保持分离”操作符,将“衰减区域”值更改为 9.0,然后拖动时间滑块。                  

    没有任何延迟,因为动画仍然从缓存数据中播放。然而,缓存数据现在是无效的,因为您更改了粒子系统中的参数。                  

  14. 单击“缓存”操作符,并在“手动更新”组中单击“更新”。                  

    3ds Max 会关闭“粒子视图”,更新活动段的缓存,然后重新打开“粒子视图”。缓存数据现在是准确的。                  

    其他手动更新选项允许您更新整个动画或自定义帧范围的缓存。                  

    如您所见,“缓存”操作符的功能相当强大。当其存在和活动时,默认情况下它会覆盖粒子系统的重新计算,除非您更改所有操作参数,它才会自动更新缓存数据。如果使用恰当的话,它可以为设置和测试粒子系统节约大量的时间。                  

界面

该用户界面出现在“粒子视图”对话框右侧的“参数”面板中。  

使用位置

在视口中播放时,或在渲染时,或在这两种情况下,将粒子运动存入缓存。默认设置为“视口”。                      

重要信息仅当在视口中和在渲染时使用相同数量的粒子时,才选择“视口/渲染”选项。换句话说,全局事件(或粒子流源)的“发射”卷展栏上的两个“数量倍增”设置必须相同。否则,会发生不可预测的结果。

更新

如果您更改粒子系统中的参数,缓存数据可能会变为无效。该设置确定是由“粒子流”自动更新缓存,还是由您手动更新。默认设置为“始终”。                    

  • 始终在“缓存”操作符范围内更改任意参数会导致其从当前范围(请参见下一个参数)的起点开始到当前帧为止自动更新存储的数据。

  • 手动 仅当您单击了“更新”按钮,或清除了缓存并移动到另外的帧时才更新。

范围

设置“缓存”操作符所作用的帧范围。默认设置为“活动段”。                  

  • 完成粒子流将整个动画存入缓存。

  • 活动段“粒子流”仅将活动段中的帧存入缓存,活动段由“时间配置”对话框上的“开始时间”和“结束时间”设置来定义。这是在轨迹栏上显示的帧范围。您也可以按住 AltCtrl,并用鼠标的左、中或右按钮拖动轨迹栏来更改活动段。

  • 自定义“粒子流”仅将自定义范围中的帧存入缓存,该范围由“缓存”操作符的“开始时间”和“结束时间”设置来定义(请参见以下说明)。                            

    注意如果您仅将部分动画存入缓存,“粒子流”会按顺序计算粒子行为,没有缓存的帧则使用已缓存的数据。例如,如果您将第 0 帧到第 50 帧存入缓存,然后跳至第 60 帧,则“粒子流”会基于缓存数据计算第 51 帧,而第 52 到第 60 帧则基于前面的每一个帧。                                      

开始/结束时间

当“范围”设置为“自定义”时(请参见上述说明),则为缓存时帧范围的开始帧和结束帧。默认设置为 0、30。                      

注意帧范围时间是绝对时间,也就是说,对整个动画而言。如果您在局部使用“缓存”操作符,并且在您指定的帧范围内没有粒子在事件中出现,则“粒子流”不会使用缓存。

采样

确定“缓存”操作符采样和缓存动画的频率。默认设置为“每帧”。              

  • 每帧“粒子流”将动画数据存入缓存的频率为每帧一次。

  • 积分步长“粒子流”使用“使用位置”设置中指定的“积分步长”设置(请参见以上说明),在每一个积分步长将动画数据存入缓存。如果“使用位置”设置为“视口/渲染”,则它会使用两个“积分步长”值中较小的那一个。例如,如果“视口”设置为“半帧”,“渲染”为“八分之一帧”,则采样率为每帧八次。                          

  • 每 N 帧“粒子流”将动画数据存入缓存的帧间隔,该间隔由 N 值指定,请参见下面的说明。

N

当“采样”(请参见以上说明)设置为“每 N 帧”时,确定执行缓存的帧间隔。默认设置为 5。                      

例如,当 N 设置为默认值 5 时,缓存为每 5 帧存储动画数据。                      

缓存测试结果

当将粒子数据存入缓存时,该项也将测试操作的结果存入缓存。默认设置为启用。                      

当“缓存”用作局部操作符,且下一个事件没有“缓存”操作符时,这很重要。为了使下一个事件工作正常,它应该从当前事件接收粒子。这些粒子由测试操作活动产生。“缓存”操作符可以记录测试活动以便在以后播放它。                      

如果将“缓存”操作符用作全局操作符,则无需将测试结果存入缓存。这是因为系统有每个事件的缓存数据,并且无需测试结果就能跳至任意帧。                      

用“文件”保存缓存

启用该项后,“粒子流”会将缓存数据包括在您保存到磁盘的场景中。这会大大地增加保存文件的大小,但在重新加载文件时能节省重新计算粒子运动的时间。默认设置为禁用状态。                      

通常,缓存数据仅会保存在您用“保存”或“另存为”命令创建的磁盘文件中。您也可以使用下列两个选项来指示 3ds Max 将缓存数据包括到其他类型的文件中。                      

用“暂存”保存缓存

将缓存数据保存到用“编辑”菜单 “暂存”命令创建的“暂存”文件中。默认设置为禁用状态。                      

“手动更新”组              

这些控件让您可以在帧范围内手动更新或清除缓存,或清除整个缓存。                

更新

在当前范围(请参见下面的定义)内计算粒子运动并将其存入缓存,替换任何已有的缓存数据。仅当“范围”设置为“活动段”或“自定义”时才可用。

在更新过程中,3ds Max 会暂时关闭“粒子视图”,并且当在缓存范围内移动时间滑块时显示“缓存更新进度”条。同时,在默认情况下,动画在视口中播放。要防止这种情况出现,并加快计算的速度,请禁用“更新视口”。

如果在手动更新过程中缓存用完了内存,“粒子流”会停止更新操作并显示警告。单击“确定”以继续,然后,如果可能的话,在下一次更新缓存之前增加“限制”值。

清除

删除任何缓存数据。

当您清除了缓存之后,即使“更新”设置为“手动”,如果您转至不同的帧或更改任意操作参数,“粒子流”也会自动将粒子运动存入缓存。

范围

设置当您单击“更新”时“缓存”操作符重新计算数据的帧范围。默认设置为“活动段”。  

  • 完成“粒子流”将清除整个动画的缓存。选择“完成”将使“更新”按钮不可用,该选项仅用于清除缓存。                              

    要更新整个动画,请将活动段或自定义范围设置为包含所有帧,然后使用相应的选项并单击“更新”。                              

  • 活动段“粒子流”仅更新活动段中的帧的缓存,活动段由“时间配置”对话框上的“开始时间”和“结束时间”设置来定义。这是在轨迹栏上显示的帧范围。您也可以按住 Alt+Ctrl,并用鼠标的左、中或右按钮拖动轨迹栏来更改活动段。                            

  • 自定义“粒子流”仅更新自定义范围中的帧的缓存,该范围由“缓存”操作符的“开始时间”和“结束时间”设置来定义(请参见下列说明)。                            

开始/结束时间

当“范围”设置为“自定义”时(请参见上述说明),更新范围的开始帧和结束帧。默认设置为 0、30。

更新视口

启用该项时,在手动更新缓存的过程中,动画会在视口中播放。禁用该项可以禁止在手动执行缓存过程中在视口中播放动画,这能提高缓存进程的速度,特别是大型的或复杂的粒子系统。默认设置为启用。

“已用内存 (K)”组              

“缓存”操作符将数据存储到系统内存中,您可以指定其使用的内存数量的上限。如果“限制”设置和缓存数据的数量超过了可用内存,计算机系统可能会改用基于硬盘的虚拟内存,而虚拟内存会降低执行缓存的速度。如果“粒子流”充满了缓存,则不会计算任何剩余的帧。                                

该组也让您可以监视用于缓存数据的内存数量。                

限制

可用于缓存粒子数据的系统内存的最大数量,以 KB 为单位。默认设置为 100,000,即 97.6 MB。

总计

当前用于缓存数据的内存数量,以 KB 为单位。其属性为只读。

注意即使没有粒子的动画帧也可能消耗一定量的缓存。原因是缓存同时保存随机计算值的状态,例如“变化”,从而确保粒子活动在渲染网络上的一致性,并且确保其与不经常访问所有帧的机器保持一致。                            

当前帧

由为当前帧缓存的数据使用的内存数量,以 KB 为单位。其属性为只读。

,