ICE

ICE destruction

Whether it’s alien lasers, judgment day prophecies or just that really cool thingy that will self-destruct messages in five seconds, having a tool that can turn an object into dust for whatever reason can certainly become handy in the VFX demanding times of today. Anyone who has ever worked on a VFX shot knows that the second you start relaying on key framing the effect by hand the chances of the director all of a sudden changing his mind and want it to go in another direction is one hundred percent. And that is if we’re being optimistic. So the goal is to design a tool that is flexible enough to change the object getting disintegrated and the factor setting of the effect without relying on you manually setting keyframes.

Read more →

Create dimples when particles collide with the surface

Just a few years ago (or versions of Softimage if you will) this type of effect would require a fair amount of time and patience and certainly wasn’t something you would whisk together in three little steps. By using ICE there’s actually very little information you need to extract from the scene in order to create the dimples. You obviously need to find the whereabouts of the particles and the points on the geometry you want to dent but that’s about it.
Read more →

How to offset point position in ICE

Start a fresh scene and from the Get > Primitive > Polygon Mesh menu choose icosahedron (any dummy object will do) and set the Geodesic Frequency to 4 to make it a bit smoother. With the icosahedron still selected, press [4] to switch to the Simulate toolbar and from the ICE > Create menu choose Emit Particles from Selection. With the pointcloud selected, press [Alt]+[9] to open an ICE Tree.

Open the Emit from Surface PPG and change the Rate type from Number of Particle per Second to Total Number of Particles and Size to 0.5 or so. By default, the shapes of the points are set to (which may not be totally unexpected) just points. While this is sufficient to determine their position, there’s no way to tell their size or in which direction they’re oriented. So for clarity, change the Shape to Cone. In the Orientation section of the PPG, check the Align to Surface Normal checkbox.

Read more →

Stretchy bones in ICE

Open the scene Stretchy_Bones from this issues DVD. Select the Stretchy_Bones null object and press [Alt] + [9] to open an ICE Tree. From the Create menu choose ICE Tree to create an empty ICE Tree. The idea of stretchy bones or limb stretching is quite simple. If the distance between the root and the effector is greater than the sum of the bones, the bones should stretch. But if the distance is less, the bones should stay unaffected at their default length.

Get a Get Data node and double-click on it to open its PPG. Click the Explorer button and expand the tree root > Kinematics > Global Transform and select the Pos. Get a second Get Data node and type eff.kine.global.pos in the Get Data textbox to get the position for the effector as well. The next step is to calculate the distance between the two objects, so get a Get Distance Between node. Connect the root.kine.global.pos node to the First input of the Get Distance Between node and the eff.kine.global.pos node to the Second input.

Read more →

Assigning different task based on condition

Select the particle_emitter and Simulate > ICE > Create menu choose Emit Particles from Selection… With the PointCloud still selected, press [Alt] + [9] to open an ICE Tree. Before you can assign any goal or paths for the particles you have to choose a criterion to use to separate the particles. In this example you’ll be using three different objects so it makes sense to divide the particles into three groups, one for each goal/curve. As each particle is born it’s also assigned a unique identification or ID. By feeding this ID into a Modulo operation and set the devisor to the same value as the number of groups you want to create, you’ve efficiently created the 3 collections.

Read more →

Painting weights in ICE

While the weights in the weight map will be controlled from within the ICE Tree, you have to create the actual weight map manually. Select the Grid object and from the Get > Property menu choose Weight Map. Select the Grid object and press [Alt]+[9] to open an ICE Tree and from the Create menu choose Simulated ICE Tree. Press [8] to open an Explorer and drag and drop the Sphere object to your ICE Tree. Continue by getting a Pass Trough node, a Get Point Position node and a Get Closest Location node. The Get Point Position node returns the position of each of the points of the grid which is then used by the Get Closest Location node to determine whether the Sphere touches any of the vertices of the grid object (or is within a specified distance). If the Sphere is within this value the corresponding points’ weight should be set 1. If it’s not, the weight should stay unaffected (the default value is zero). Open its PPG. Check the Enable Cutoff Distance checkbox and set the Cutoff Distance to 0.1 and close the PPG.

Read more →

How to fill a volume using rigid body dynamics in ICE

The standalone or default rigid body dynamics engine is the preferred solution if you’re simulating few or a fixed number of objects and need high precision. If you’re on the other hand are set to take on a large number or are adding new objects to the simulation over time then ICE would most likely be the one to choose. Even as booth engine uses the physX as the dynamics engine, ICE still isn’t the answer to all your upcoming simulation struggles. And the reason for this is quite simple. Kinematics isn’t officially supported within the ICE framework yet (though it can be activated manually) and the actual shape isn’t available as a collision type.

Read more →

Assigning different textures to the same geometry-instances in ICE

While you can’t assign different materials to the same geometry instances per se, you can use attributes from the pointclod to achieve the same result. Start by open the scene multiple_textures.scn from this issues CD. Select the PointCloud and press [Alt] + [9] to open an ICE Tree. With the pointcloud and the instanced geometry already in place, the only thing left to add is a random color. Get a Randomize Color by Gradient node and connect it to the Color input of the Emit from Surface node. Open the Randomize Color by Gradient PPG and change gradient to match the screenshot.

Read more →

Water Condensation using ICE

On planet earth matter can traditionally exist in three physical states or forms; solid, liquid and gas. There are in fact a couple of more states such as plasma and liquid crystal, but let’s not get too technical. Condensation is essentially water changing it physical state of aggregation from gaseous into liquid (guess you’re glad we didn’t get in to the technical parts). One of the most common examples of this is the creation of clouds. As warm air rises to the atmosphere it cools and loses its ability to hold water vapor. The water molecules will then clump together to form cloud droplets, which then of course fall as rain (a phenomenon anyone who has visit England is far too familiar with).

Read more →