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 and Effects].

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

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


The name of the force effect


Toggles on/off the force effect.



Sets the strength of the vortex effect.


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



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).


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.


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


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


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)

Creative Commons License Except where otherwise noted, this work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License