Motion Control and Surface Interaction Behavior for ICE Particles
You can control particle behavior in many different ways, but the most common ways include controlling the particle’s motion and the way in which it interacts with object surfaces.
There are several particle compounds that let you control the particle’s behavior. These compounds are fairly complex and complete within themselves, but you can also use them in conjunction with State systems as part of a larger effect. Within a State system, you can choose one of these compounds to create the effect that happens when trigger compound’s value is reached: example, new particles can be spawned when they collide with an obstacle.
Most of these behavioral compounds are described in this section, but there are a few others that are described elsewhere:
• Collision (surface interaction) compounds—see About ICE Particle Collisions for a list.
• You can also use particles as rigid bodies in collisions—see ICE Rigid Bodies for information.
• Attracting particles to goals and other objects—ICE Particle Goals and Surface Force
• Moving particles along a curve—see ICE Particles Flowing Along a Curve
• Moving particles around an obstacle, which is especially useful for crowds and flocking simulations—see ICE Particles Flowing Around an Object
• Making particles orbit around an object—see ICE Particles Orbiting Around an Object
• Making particles flutter and fall in the way leaves do—see ICE Particles Falling Like Leaves
• Coagulating and clumping particles together to create liquid or swarming effects—see Coagulate Force and Neighboring Particles Force
You can create different types of particle collisions depending on what type of behavior you want to happen upon impact. Collisions are often used to change the particle’s behavior in a State system, but you can create collisions without using State compounds.
When particles collide with an obstacle’s geometry, the collision geometry type that is used for the obstacles is its actual shape. As well, the particle’s size is taken into account upon collision. However, if you’re using instances as the particle geometry, an approximated bounding sphere is created around it: its actual shape is not used.
One thing you may notice when particles collide with objects is that their rotation doesn’t change after a collision. That is, if a rotated particle collides with an object, it doesn’t change its rotation as might happen in real life (such as with faster rotation or changed rotational direction upon impact).
These are the types of behavior you can make the particles have upon collision with obstacles:
• Particles bounce off obstacles—see ICE Particles Bouncing Off Obstacles
• Particles stick to (and unstick from) obstacles—see ICE Particles Sticking to Obstacles
• Particles slide off obstacles—see ICE Particles Sliding on Obstacles
• Particle splashes are emitted upon collision with obstacles—see Emitting ICE Particle Splashes Upon Collision with Obstacles
• Particle trails are emitted upon intersection with obstacle—see Emitting Particle Trails at Object Intersections
• Particles are spawned upon collision—see Spawning Particles Upon Collision
The different collision compounds on the Task > Particle tab are based on the Basic Collide node. If you want to create your own collision compound, you can use this all-purpose node to serve as a base. Click the Tool tab, and choose the Basic Collide node from the Geometry Queries group.
Particle Surface Interaction Attributes
There are several particle attributes that are used to define particle interactions with obstacles and particles moving toward goals. These attributes are used in several compounds, but you can also use them on their own in an ICE tree by specifying them in the Get Data and Set Data nodes, as described in Using ICE Particle Attributes.
For more information on attributes in general and a list of all available ICE attributes, see ICE Attributes.
|
CollisionLocation |
Allows you to store the location of a collision. This attribute is used by the Bounce Off Surface, Spawn on Collision, Slide on Surface, Stick to Surface, Stick to Location, and Test Collision with Surface compounds to determine the point at which particles hit the collision object. You can use the CollisionLocation attribute with the Get Particle Collision Location compound, which uses the CollisionLocation attribute under the hood. You need to plug a collision object’s Out Name output into this compound’s In Name port to give it a reference. |
|
isStuck |
Whether a particle is stuck (true) or not. This attribute is used by the Stick to Location, Stick to Surface, and Unstick from Surface compounds. You can also get this attribute in a Get Data node and use it to do other things based on the condition of whether a particle is stuck or has been unstuck. See ICE Particles Sticking to Obstacles for more information. |
|
GoalLocation |
Allows you to store a location on a surface towards which you want a particle to move. This attribute is used by the Move Towards Goal, Test Distance to Goal, Get Distance to Goal, and Multi Goal Sequencer compounds. Note that this attribute is not considered by the Simulate Particles node: there must be other nodes in a tree to set the Force or PointVelocity to get a point moving toward its goal. You can get and set the GoalLocation attribute with the Get Particle Goal and Set Particle Goal compounds. The Get Particle Goal compound is simply the Get Data node with the GoalLocation attribute already specified. The Set Particle Goal compound is similar, but also lets you choose the location on the goal object where you want the particles to be attracted. See ICE Particle Goals for more information. |
|
GoalPosition |
A position towards which you want a particle to move. This attribute is used by the Move Towards Goal, Test Distance to Goal, Get Distance to Goal, and Multi Goal Sequencer compounds as an alternative to the GoalLocation attribute. Unlike GoalLocation, it does not move with an animated or deformed geometry (although it might appear that way if it gets reset every frame as it does in a simulation). See ICE Particle Goals for more information. |
|
SlideLocation |
Used internally by the Slide on Surface compound. This attribute determines where on an input object the particles will slide. You can get the SlideLocation attribute with the Get Particle Slide Location compound, which is simply the Get Data node with the SlideLocation attribute already specified. See ICE Particles Sliding on Obstacles for more information. |
|
SplashCollisionForce |
Used internally by certain compounds, such as Emit Splash from Surface Collision. See Emitting ICE Particle Splashes Upon Collision with Obstacles for more information. |
|
SplashIntersection |
Used internally by certain compounds, such as Emit Splash from Surface Collision. |
|
StickLocation |
The location to which a particle sticks. This attribute is set by the Stick to Location, Stick to Surface, and Emit Trail at Surface Intersection compounds when a particle initially sticks to a location. You can get and set the StickLocation attribute with the Get Particle Stick Location and Set Particle Stick Location compounds, which are simply the Get Data and Set Data nodes with the StickLocation attribute already specified. See ICE Particles Sliding on Obstacles for more information. |
|
StickOffsetMatrix |
The offset matrix of a particle from its StickLocation. The Stick to Location and Stick to Surface compounds apply this matrix to set the particle's final position and orientation at each frame. |
Autodesk Softimage v.7.5