Vortex Property Editor

 
 
 

To create a vortex control object: Choose Get Force Vortex from the Simulate toolbar, Get Primitive Control Object Vortex from the other toolbars, or Create Force Vortex from the Hair toolbar.

To redisplay this property editor: Select the vortex object and press Enter.

The Vortex force simulates the swirling movement of a vortex on ICE particles, rigid bodies, and hair.

Vortex has no effect on Soft body or Cloth simulations.

For more information on forces in general, see Forces [ Simulation].

To use this force in an ICE tree, see Creating and Applying ICE Forces to ICE Simulations [ICE Fundamentals].

Length of the arrow is determined by the Amplitude value. Radius of the sphere is determined by the Range value when Local is selected.

Name

The name of the force effect

Mute

Toggles on/off the force effect.

Strength

Amplitude

Sets the strength of the vortex effect.

Radial

Defines the amount of force along the radial direction; negative values attract objects toward the cylinder axis, positive values make objects escape from it.

Influence

Local

Select this option to have the vortex force affect only simulated objects that fall within the Range that you specify (see below).

If you don't select this option, all simulated objects are affected by the vortex force (global).

Range

Sets the range in Softimage units within which the vortex force has an effect on the simulated objects. This control is available only when Local is selected.

Decay

Allows you to have the maximum force at the center and minimum at the edges, or the reverse (with negative values) with minimum force at the center and maximum at the edges.

Vortex Calculations

Inputs:

vPos = particle's position vector
vVel = particle's velocity vector

Outputs:

vForce = the new force

If Local is selected:

length = vPos.length
// two steps
1. radialDecay = length / range
2. radialDecay = (decay >= 0) ? (1 - radialDecay) ^ decay : radialDecay ^ -decay
intensity = amplitude * radialDecay
vIntensity = (intensity, 0, 0)
vDirection = crossProduct(vVel, vIntensity) vRadialDir = (5 * radial) * ( normalize(0, vPos.Y, vPos.X) )
vForce = vRadialDir + vDirection

If Local is not selected (global):

length = intensity / (1 + vPos.length ^ 3) vDirection = cross(vVel, vPos) vRadialDir = radial * ( normalize (vPos) )
vForce = intensity * (vRadialDir + vDirection)