CurlNoise Framework

 
 
 

This compound provides a framework for generating divergent-free velocity fields. This means that particles will move turbulently without accumulating in any location (no "sinks" or "sources"). Curl noise allows you to create all sorts of groovy turbulence effects, from streams of water flowing around rocks to flames flickering around burning logs or buildings.

You can set the main direction flow of the particles using the Directional Factor and Direction parameters. On this main motion, you can add some turbulence using the Perlin Factor parameter. This works in a way that is similar to math nodes in a 2D compositing application. You can add as many noises as you want to this noise field, plugging them into the Potential ports.

You can also add some boundary objects (obstacles) to the simulation, and the vector field is set to react accordingly in those areas.

TipThis compound is used in the Basic Fire compounds to give the particles some turbulent motion.

When this compound is used, the particle's Initial Direction and Speed (usually set in the Emit node) are overridden.

As well, when you use this compound in conjunction with other forces, such as Wind, you will need to increase that force's strength significantly because the curl noise is a very powerful force.

Plug this compound's Execute output into the Execute output of the Simulation Root node. You can also plug its output into the Force or Simulate ports, depending on the Mode you choose below.

You can also select a point cloud with an ICE tree and choose Particles After Emission Add Curl Noise from the ICE toolbar to automatically plug this compound into the Execute output of the Simulation Root node.

Tasks: Particles/Curl-Noise

Output Ports: Execute

Curl

Offset

Offsets the positions in space in which to sample the noise field in order to calculate the noise according to the scale of the particle emitter. This value is in Softimage units.

If the particles are emitted from an object with a bounding box size of about 10 units, you don't need to change this offset. However, if the emitter is very small, you should decrease the offset (like 0.001); and if the emitter is very large (closer to 100 units), you should increase the offset (0.5 or more).

Mode

The way in which you want to use the curl noise to set particle data:

  • Set Force: Allows you to use the curl noise purely as a force. Plug the compound's output into any Execute port of the Simulation Root node, with a Simulate Particles node plugged into its Simulate port. This way, you can use other forces in conjunction with the CurlNoise compound.

You can also plug the CurlNoise compound's output into the Force port of the Simulation Root node to use only this compound's force.

  • Set Position: Allows you to use the curl noise purely to set the point position. You can plug this compound's output into the Simulate port of the Simulation Root node (it sets the point position instead of the Simulate Particles node doing the work). This is the best way to keep the vector field incompressible.

  • Set Velocity: Allows you to use the Curl noise purely to set the point velocity. Plug this compound's output into the Execute port of the Simulation Root node.

Main Flow Direction

Directional Factor

Sets the speed of the noise. The initial speed of the particles is overridden by this value.

Boundary Drag

Adds a drag force to particles that are within the Cutoff distance for the Boundary object (below). The Cutoff value must be above zero for this drag to have any effect. It affects both the direction and speed of the particles.

This drag gives the effect of particles slowing down or stopping as they get close to the boundary, while particles that are farther away keep or increase their speed.

Direction

Direction of the noise flow in XYZ global coordinates. The initial direction of the particles is overridden by this value.

Use Object

Select this option if you are using a controller object to affect the particle flow's main direction.

Controller Name

Plug in the Out Name output of a controller object to use as an obstacle around which the particles flow.

Mode

If you are using a controller object, you can select which space is used for that object:

  • Local space: the object's local XZY coordinates.

  • Global space: the object's global XYZ coordinates (if the controller object is parented).

Perlin Noise Base Layer

This is controlled under the hood by the Perlin Turbulences compound.

Perlin Factor

Perlin noise has spatial coherence, meaning that several different points in roughly the same location in space tend to have similar noise added to them. It interpolates between the random values. This allows for the creation of particle "streams" within a noise field.

Perlin noise can help make objects more natural-looking by imitating the controlled random appearance of elements found in nature; that is, there is structure to the noise while still appearing fairly random.

Boundary Drag

Similar to the Boundary Drag parameter above, this parameter adds a drag force to particles that are within the Cutoff distance for the Boundary object, but affects only the movement of the noise field.

Seed

Defines the sequence of random numbers used. If you require that two nodes generate different sets of values with the same parameters, simply assign them different seeds.

Time Varying

Allows the noise to evolve over time in a continuous manner. This allows for more variation in the noise pattern. If this is off, the same noise pattern is repeated throughout the simulation.

Time Frequency

The speed at which the noise evolves over time (how often the noise pattern is repeated). You must select the Time Varying option for this parameter to have an effect.

Space Frequency

The granularity of the noise pattern, meaning how often the noise pattern is repeated in this space. The greater the space frequency XYZ values, the finer the noise.

Complexity

Defines the number of octaves to be added to the noise. This basically adds a fractal-like complexity to the noise which increases the level of detail of the noise pattern. This is useful for adding small-scale complexity to a large-scale noise field.

The value of the turbulence is calculated such that for each octave, a noise of half the amplitude and twice the frequency is added. A complexity of 1 is simple noise with no fractal pattern.

Complexity has an impact on performance. Noise with 2 octaves takes twice as long to calculate than noise with only 1 octave.

Boundaries

You can use an object to act as a boundary (obstacle) for the particle flow.

Boundary

Plug in the Value output from a surface object to act as the boundary.

Cutoff

The distance in Softimage units at which the particles are affected by the boundary object. For example, if you set this to 2, a "buffer" of 2 units is set around the object. Particles that are at this boundary are affected by any Boundary Drag values that you set above.

For example, if you want particles to slow down or even stick as they get closer to the boundary, you can set the Boundary Drag value. The Cutoff value must be above zero to use Boundary Drag.

Profile Curve

Controls the falloff of the Cutoff value.

Potential

The gradient potential for more noise fields. You can plug in the Perlin Turbulence node here in which you can define an additional noise field to be combined with the existing one. You can add as many noises as you want to this noise field.

For example, if you have a large-scale noise field created with the Curl-Noise Framework compound, you can create several smaller-scale noises with the Perlin Turbulence node to add further complexity to the large-scale noise.

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