Delete any existing preferences and use new defaults when launching.
To test evaluation modes:
DG mode was the previous default evaluation mode.
When analyzing speed:
Parallel scene evaluation takes advantage of all available computational resources to evaluate scenes more quickly. This is done by building an evaluation graph from the scene description using the dirty propagation mechanism.
For the evaluation graph to generate correct results, dependencies must be accurately expressed in the DG. If node dependencies are incorrect for your scene, parallel evaluation will produce wrong results, or Maya may crash.
A Safe Mode performs sanity tests when parallel evaluation is activated. This Safe Mode prevents the most common types of errors from invalid dependencies. If the Safe Mode detects errors, the Evaluation Manager reverts to Serial evaluation mode, as indicated in the HUD. One reason Safe Mode may revert to serial evaluation is if a node instance is evaluated by multiple threads simultaneously.
While Safe Mode catches many problems, it does not catch them all. Therefore, there is a new analysis mode to perform more thorough (and costly) checks of your scene to detect problems.
Also, Python performance issues can occur when evaluating other threads with custom Python nodes.
Analysis mode is not meant for use by animators when playing back or manipulating the rig. Rather, it is designed for riggers and Technical Directors to troubleshoot evaluation problems when creating new rigs.
Analysis mode:
Activate Analysis mode with the following command while in Serial mode:
dbtrace -k evalMgrGraphValid;To disable Analysis mode, type:
dbtrace -k evalMgrGraphValid -off;
Once activated, error detection occurs each time an evaluation is performed. Detected missing dependencies are then saved to a file in your machine's temporary folder. For example, on Windows, you would find results in %TEMP%\_MayaEvaluationGraphValidation.txt.
The following is an example report that shows missing dependencies between two nodes:
Detected missing dependencies on frame 56
{
NodeA.output <-x- NodeB
NodeA.output <-x- NodeC [cluster]
}
Detected missing dependencies on frame 57
{
NodeA.output <-x- NodeB
NodeA.output <-x- NodeC [cluster]
}
The "<-x-" symbol indicates the direction of the dependency. The "[cluster]" term indicates that the node is inside of a cycle cluster, which means that any of nodes from the cycles could be responsible for attribute access outside of evaluation order
In the above example, NodeB accesses the "output" attribute of NodeA, which is incorrect. These types of dependency do not appear in the Evaluation graph and could cause a crash when running an evaluation in Parallel mode.
There are many reasons that missing dependencies occur, and how you handle them depends on the cause of the problem. If Analysis mode discovers errors in your scene from bad dependencies due to user plug-ins, revisit your strategy for managing dirty propagation in your node. Make sure that any attempts to use "clever" dirty propagation dirty the same attributes every time. Avoid using different notification messages to trigger pulling on attributes for recomputation.
See Locate animation bottlenecks with the Profiler for information on identifying problematic areas in animated scenes.