Notes on Building ICE Trees

 
 
 

This section contains some miscellaneous notes and advice about building trees in ICE.

Using Constant Nodes

The nodes in the Constant category can be useful for forcing a value to have a specific data type. They do not need to have the same value for every member of a data set, nor are they necessarily constant over time. For example, you can animate their value or drive them with an input connection.

Using Expressions in ICE Trees

It is recommended that you avoid using expressions to control values inside ICE trees and compounds. Instead, you should use ICE nodes to perform the equivalent calculations. This is for a number of reasons:

  • ICE nodes usually execute faster than expressions because they can be multithreaded.

  • Expressions cannot be analyzed in the same way as trees, and therefore may not be optimized. In addition, dependency cycles will not be detected.

  • Expressions are not stored in compounds. This is because the referenced objects may not be present in other scenes.

There is no problem with using expressions on values exposed on top-level compounds, such as operators applied as described in Applying ICE Compounds.

Performance and Custom ICE Operators

Custom ICE operators may not be faster than the equivalent trees built from ICE nodes. This is because the native ICE nodes make extensive use of multithreading and other optimizations where possible. Don't write a custom operator simply because you think it will automatically perform better. For more information, see Custom ICE Nodes [SDK Guide].