Notes on ICE Attributes

 
 
 

This section explains some of the information that is presented in the attribute descriptions that follow.

Belongs To

In ICE, attributes are always associated with elements, either objects or one of their component types such as points, polygons, edges, and so on. For example, NbPoints and NbPolygons are attributes of objects, while PointPosition is an attribute of points and PolygonPosition is an attribute of polygons.

Geometry Types

Some attributes are common to many different geometry types, like PointPosition. Other attributes are specific to particular object types, for example, PolygonPosition is available only on polygon meshes, PointU is available only on curves, ID is available only on point clouds, and so on. Some other attributes are available on specific elements or properties, for example, IsElement is available on clusters, Weights is available on weight maps, Colors is available on vertex color properties (CAVs), and so on.

Note that some attributes that are specific to point clouds appear in the explorers of the Get Data and Set Data property editors when dealing with other types of geometry. For example, BlobBlend appears to be available for polygon meshes, NURBS surfaces, curves, and even lattices. While it is possible to get and set these attributes on other geometry types, they have no effect except on point clouds.

Attribute Type

Attributes can be inherent, predefined, or custom.

Inherent

Inherent attributes represent data that is always available in the scene. For example, PointPosition represents the XYZ coordinates of the points of a geometric object. Some inherent attributes can be set, like PointPosition, but others are read-only, like PolygonArea.

Predefined

Predefined attributes are recognized and used by certain basic nodes. However, unlike inherent attributes they are dynamic, meaning that they do not exist until they are set.

For example, PointVelocity is used by the Simulation nodes to update PointPosition, but the PointVelocity attribute does not exist in the scene if has not been set by something in an ICE tree. The factory compounds in the Emitters task typically set the initial velocity, and in addition the Simulation nodes update the current velocity based on Force and Mass.

If you get a dynamic attribute before it has been set, you get the default values: these are zero for most data types, false for Booleans, identity for matrices, black for color, etc. However, the Simulation nodes may use different default values when calculating motion if attributes have never been set.

All predefined nodes can be set, except for ID which is read-only.

Custom

Custom attributes are also dynamic and can always be set. For example, AgeLimit is a custom attribute that is set by some of the Emitter compounds and used by Modulate Value by Age Percentage and Delete Particle at Age Limit, among others. However, there is nothing in the underlying ICE framework that recognizes AgeLimit by name — your ICE tree needs to use a compound that explicitly gets this attribute and uses it in some way.

You can set your own custom attributes and use them for any purpose. See Controlling Execution in ICE Trees [ICE Fundamentals].

Some custom attributes may appear to be per object until you drive them using a per point attribute, such as by randomizing them based on particle ID, after which they become per point attributes.