Animation Performance improvements

This release contains significant animation performance improvements, especially when playing back animation on complex rigs.

This release includes enhancements to the GPU deformation workflow. One of them addresses the issue of frequent rebuilding (or repartitioning) of the graph for GPU evaluation which was sometimes disruptive on large scenes when changes occur. Now, creating and deleting keys no longer causes unnecessary repartitioning. Also, a new scheduling mode greatly reduces repartitioning when using Display Layers or Isolate Select to hide or show objects.

Another major change is that the Evaluation Manager now schedules the nodes for the GPU in more granular fashion instead of as a few large clusters. This allows for better pruning of the graph.

The Evaluator now claims nodes that potentially go on the GPU instead of only nodes that have been fully checked and verified to be evaluated on the GPU. When GPU evaluation is turned on, the evaluator now dynamically decides which nodes are evaluated on the GPU or on the CPU after repartitioning, making it more responsive to dynamic changes and greatly reducing the need for repartitioning.

GPU Download

GPU Download/Rebuild Optimization: approx 250k vert character with 3 layer facial rig + 115 joints

For example, the character in the above illustration has a necklace which has a uvPin node that attaches the rigid pendant to the ribbon. The ribbon itself is deformed by the body geometry. Previously, because a uvPin or follicle could not be on the GPU, the entire character could not be on the GPU.

In this particular case, the pendant prohibited the necklace from going on the GPU, which in turn, blocked the character's entire body from going on the GPU. Work-arounds often included introducing Parallel deformation structures at lower resolutions.

Now, GPU downloads or readbacks are supported. The ribbon geometry is automatically converted after GPU deformation to a CPU mesh. This way, the constraint is calculated on the CPU. (It can be seen in the visualization graph as an arrow that changes from green to blue.)

GPU Download Example: Top is with GPU Download disabled. Bottom is enabled with more green nodes now running on GPU

Note: GPU Download is a new capability within the Evaluation Manager. This feature is always on, but you can turn it off temporarily as a debug option from the Evaluation Toolkit. Alternatively, you can block GPU Download per group of connected nodes in the GPU Outliner as a blocking policy.

Evaluation Toolkit

Several UI and debugging tools have been added to the Evaluation Toolkit to provide insight into evaluation. For example, now you can see in the Viewport how many nodes are claimed by the evaluator and which of these are evaluated on the GPU.

For example, the below image shows "351k [46/184]", meaning the scene has approximately 351 000 vertices, and that 46 out of 184 nodes in the deformerEvaluator are on the GPU.
Further enhancements show more information in the Visualization Graph generated from the Evaluation Toolkit: Nodes in green are evaluated on the GPU, while nodes in blue on the CPU. Gray nodes are the nodes external inputs and outputs of the evaluator.
There is also a new Outliner that shows all the nodes in the evaluator, how they are evaluated, the reasons why they might not be on the GPU, and how they are grouped.

GPU Outliner

You can also use this to generate a partial visualization of the deformation graph to focus on just a small part of the scene.

Note:

Since the efficiency of the GPU evaluation heavily depends on the available hardware, sometimes you might need manual control to prohibit nodes from going on the GPU.

Use the Outliner to set various modes to block nodes (or sets of nodes) from going on the GPU.

New Graphical Output options
When working with large scenes with many nodes, the generated graph becomes difficult unwieldy to read. Now there are options in the Evaluation Toolkit Graphical Output area in 6) GPU Override to let you choose what output you want.

The new Graphical Output section in the GPU Outliner section of the Evaluation Toolkit

GPU Graph Building improvements
  • Passthrough nodes only on the GPU when neighboring nodes are on the GPU

  • Download policy only allows downloads when there are sufficient vertices and nodes, preventing slowdowns

  • Graph built from all claimable nodes and not just meshes.

  • A groupDownload blocking policy that blocks downloads in a specific group

  • Omit passthrough nodes (not just groupParts)

Download Rejection

Two new debugging options, Allow Downloads and Allow Download Rejections have been added to the Evaluation Toolkit Debug area of the 6) GPU Override section to let you disable or ignore the download rejection policy.

New GPU Outliner

An Outliner widget has been added to the Evaluation Toolkit 6) GPU Override section to show which nodes are in the deformerEvaluator.

The GPU Outliner has the following functionality:
  • Shows which nodes are in the evaluator and how they are grouped.
  • Shows which nodes evaluate on the GPU, cause a download to CPU, and which evaluate on the CPU.
  • Has a filter so you can limit the view of nodes that, for example:
    • Match a wildcard name
    • Belong only to meshes
    • Evaluate only on the GPU
    • Filter for passthrough nodes
    • Display both upload/download status
    • Have a blocking policy set
    • Use the name of the target mesh for the group
    • Update when you open, create new, reference, or import a file.
A right-click menu lets you select nodes, visualize them as a graph, or set blocking policies.

HUD updates

Work has been done to increase the accuracy of GPU Override information on the Heads Up Display (HUD), which now shows how many nodes in the deformerEvaluator are on the GPU. Previously, the HUD only showed the number of vertices in the scene.

In addition to the GPU Override entry showing how many vertices are in the scene, a new data point uses a slash (/) to separate the number of nodes on the GPU from the total number of nodes in the scene. For example, the above image shows "351k [46/184]", meaning the scene has approximately 351 000 vertices, and that 46 out of 184 nodes in the deformerEvaluator are on the GPU.

Updated Parallel Evaluation Mode behavior

Problems where muting Channel Box attributes triggered a scene graph rebuild have been addressed.

Frozen option removed from the Attribute Editor

Frozen is no longer part of the Node Behavior options in the Attribute Editor. For tools on troubleshooting and testing node evaluation, see the Evaluation Toolkit.