- 在“首选项”(Preferences)窗口(“编辑器 > 设置/首选项 > 首选项 > 动画”(Editors > Settings/Preferences > Preferences > Animation) > “求值”(Evaluation))中切换求值模式。
求值管理器 (EM) 确定如何对场景求值,在可用的 CPU 和 GPU 计算资源之间分配工作以加快性能。它在后台工作,使用现有的脏传播机制将场景的定向图 (DG) 表示转化为正向求值图 (FG)。构建 FG 后,就会禁用脏传播并构建求值计划 (ES)。ES 按正确的顺序对场景节点求值;这样,场景就会生成与基于定向图的“经典”求值相同的结果。
您可以在此处观看概述求值管理器功能的简短影片。
FG 确定场景元素之间的依存关系;如果场景中的两个节点是独立的,则对于在不同处理器上的平行求值,它们是良好的候选。
注: 虽然场景中的节点是独立的,但是有时这些节点无法在平行模式下求值,这是由于节点的实现所致。在这些情况下,会按照其不同的“线程安全”级别对节点进行分类。
注: 使用 FBIK 的动画将还原为串行求值,因为 FBIK 将在求值管理器中创建缺少的依存关系。由于 FBIK 已弃用,请将 HIK 用于整体反向运动学和重新设定目标。
求值模式
从
“编辑器 > 设置/首选项 > 首选项 > 动画”(Editors > Settings/Preferences > Preferences > Animation) >
“求值”(Evaluation)部分中选择适当的求值模式:
-
DG
- 对您的场景使用基于依存关系图的求值模式。(另请参见依存关系图。)在 Maya 2016 之前,这是默认的求值模式。
-
串行(Serial)
- 使用求值管理器,但是将求值限制到单个核心(串行求值)。使用“串行”(Serial)可排除场景故障,因为它使场景保真度优先于性能,以便您可以找出求值错误。
注: 与
“DG”模式相比,有时场景在
“串行”(Serial)模式下运行得更慢。这是因为与
“DG”模式相比,
“串行”(Serial)模式对更多的节点求值。由于此详细求值,如果场景在
“串行”(Serial)模式下看起来不正确,则它不大可能在
“平行”(Parallel)模式下正常工作。
有时“串行”(Serial)模式下的不正确求值是由自定义插件导致的。
-
并行(Parallel)
- 并行求值并使用所有可用的核心对场景求值。如果此模式导致场景问题,则禁用它并返回到上一标准:DG 求值模式。
请参见分析场景以提高性能。
此模式在默认情况下处于活动状态。
- GPU 覆盖(GPU Override)
- 与求值管理器一起在“串行”(Serial)或“平行”(Parallel)求值模式下加速变形。如果场景具有标准 Maya 变形器并且网格几何体是密集的,则这可以提高性能。结果将基于场景中的变形器和网格密度而变化。
注: “GPU 覆盖”(GPU override)仅适用于 Viewport 2.0,对 OSX 上的 Quadro 4000 显卡不起作用。
- 您可以在使用并行 Maya 中找到有关 GPU 覆盖的技术说明。
- 在求值图中包括控制器(Include Controllers in Evaluation Graph)
- 构建时在求值管理器中激活/禁用预填充控制器机制。
求值模式之间的差异
在“DG”、“串行”(Serial)和“平行”(Parallel)模式下,占用大量资源的任务需要大致相同的时间。例如,如果使用需要 0.5 秒使网格变形的变形器,则在“平行”(Parallel)模式下对此变形器求值不会对性能产生任何更改。
如果所有的 EM/DG 模式显示相同的瓶颈,则解决此问题将提高性能增益。使用分析器在图表中演示每个进程消耗的时间量。
但是,如果遇到的问题仅在“平行”(Parallel)模式下出现,则这可能指示您的场景中有线程争用问题,其中多个线程正尝试立即工作,同时争相控制共享资源。
限制
在使用求值管理器时,一些 Maya 功能可能会产生不正确的结果。这包括诸如启用 Viewport 2.0
运动模糊或者场景包含特定
经典动力学(例如,粒子、布料、刚体)时的情况。
如果执行大量的 Python 命令,这些命令可能会出现性能问题。如果发生这种情况,请在环境中定义 MAYA_RETAIN_PYTHON_GIL。(MAYA_RELEASE_PYTHON_GIL 已弃用。它默认为 true,并且可被 MAYA_RETAIN_PYTHON_GIL 覆盖。)
此外,使用自定义 Python 节点对其他线程求值时,也有可能会出现 Python 性能问题。
有关已知限制的完整列表,请参考发行说明。