ICE kinematics


Sticking an ICE tree on a mesh and then getting the kine.global, updating it, and setting the kine.global doesn’t really work. And I’m not sure it should. Between ICE optimizations and the way the XSI evaluation model works, I don’t think you’ll get consistent updates. SCOPs are similar, but they have that Always Evaluate flag to force evaluations.

Second attempt. I also have an ICE Tree in the Modeling region that initializes self.tmp.

ICE: Looping over group members and setting data


You can get data from the members of a group, and even loop over that data, but you cannot set data on individual group members. I’ve seen this question come up on several forums, mailing lists, and beta lists. You can’t store a reference in an attribute (so you can get it later and plug it into Set Data). You can store a string (eg the object name) in a string, but you cannot convert a string into a reference. And you can’t plug your Get Group into a Set Data.

Things like references and execute ports are part of the pre-evaluation stage. They must be resolved before the ICE tree is evaluated. Everything else in the ICE tree is the stuff that has to be constantly re-evaluated. So driving a reference port with another ICE node doesn’t really fit into the way ICE was designed to work.

For something like (resolving connections), you’re better off using a script to set up your ICE trees.

PS – Looping itself doesn’t seem that hard to figure out.

Sprite sequences on ICE particles


You can display sprites (an image sequence) on ICE particles.

Just set up a render tree on the point cloud that uses an image sequence, and then use an ICE attribute to drive the Time Source of the image sequence.

First, here’s a basic render tree for the point cloud:

In the ICE Tree for the point cloud, you can set up an attribute that will be used as the Time Source for the image sequence. For example, suppose you wanted to randomly display a sprite from a sequence. In the ICE Tree, you could put a random number in an attribute for each particle.

Then you could use that attribute to drive the Time Source of the image sequence:

Visualizing with ICE: drawing vectors and lines


To visualize vectors, I added some points to an empty point cloud, and in Show Values, I set Display As to Vector + Length:

Another way to visualize the vectors you are working with is to use an ICE array with Display As=Line. This ICE tree draws a line from the global origin to the camera interest, from the camera interest to the camera, and finally from the camera back to the global origin.