Tips and Notes for Using ICE Kinematics

 
 
 

Using Geometry Queries

Remember that when you get data at a location, such as the locations returned by geometry queries, the data is in the local reference frame of the "self" object, that is, the object with the ICE tree. Similarly, the input values for geometry queries should also be in the local reference frame of the self object.

If all the evaluations are performed in an ICE tree on a null at the center of the scene, then the local reference frame is the same as the global reference frame. However if this is not the case and, for example, you want to find a global position by raycasting from the self object, then you need to use (0, 0, 0) as the input position for the Raycast node, get PointPosition at the returned location, and multiply the value by the self's global transformation matrix.

Applying Static KineState Properties

Static KineState properties provide a snapshot of an object's global transformations at a specific moment. They are automatically applied to geometric objects and deformers when applying envelopes, as well as cage and spine deformations, but you can also apply them manually. This is useful with ICE kinematics because it allows you to store initial transformations and calculate initial offsets. See also Initializing Rig Data.

Static KineState properties are not propagated by branches, groups, layers, and partitions. You can apply multiple Static KineState properties, but only the last one applied can be updated automatically using Set Reference Poses.

To apply a Static KineState property

  1. Select one or more objects.

  2. Choose Get Property Static KineState from any toolbar (except Hair or FaceRobot).

    The default property is a 4x4 identity matrix representing no transformation, so you must set its value in the next step.

  3. Choose Deform Envelope Set Reference Poses from the Animate toolbar.

    The Static KineState property is updated with the objects' current global transformations.

    You can apply this command again to update the objects' Static KineState at any time.