Bifröst Foam properties attributes

The Bifröst foam properties node contains the controls for the foam particle simulation.


Toggles the foam simulation on and off.



Sets the number of emission points generated per voxel per second. Increasing this value generates more foam particles.

Min Liquid Speed

Threshold value that triggers foam emission, in m/s, based on the liquid's velocity vectors. Lower values generate more foam particles. Faster moving areas of the liquid emit more particles.

Min Liquid Churn

Threshold value that triggers foam emission, in m/s, based on the rotational and angular momentum in the liquid. Set Min Liquid Churn to values between 0 and 2 with lower values emitting more foam.

In Bifröst, churning is liquid rotating orthogonal to the surface normal. For example, churn can result from the rotating curvature of a cresting wave or from the turbulence of a washing machine agitator. Areas of the liquid with more churn emit the largest number of particles.

Min Liquid Curvature

Threshold value that triggers foam emission based on the formation of curvature on the surface of the liquid. Lower values generate more foam particles.

Liquid curvature refers to shapes on the liquid surface, such as those generated by rolling and cresting waves. Areas of the liquid with the steepest curves emit the largest number of particles.

Min Liquid Depth

Sets the top of the voxel region in the liquid, in voxels, that emits foam particles. A value of 0 sets the liquid surface as the top of the emission region.

Max Liquid Depth

Sets the bottom of the voxel region in the liquid, in voxels, that emits foam particles. Positive non-zeros values set the bottom of the emission region below the surface of the liquid. Use a value of 3 for typical foam effects.

Max Solid Depth

Sets the distance, in voxels, between foam emission points and closed boundaries such as collision objects.

Use values between 0 and 1 to maintain a boundary between voxel emission points and collision objects. To emit foam under the liquid surface (bubbles), set Max Solid Depth to a negative value and Max Liquid Depth to a high value such as 10 or greater.

Emit Flatness to Surface

Snaps particles to the surface of the liquid at the time of emission. This prevents particles from being emitted under the surface of the liquid.

When set to 1.0, particles snap to the liquid surface. When set to 0 the particles are not affected, which allows buoyancy to direct the particles' upward motion.

Micro Vortices

Creates fine structure in the foam when it is emitted by pushing the particles using vortices that are a few voxels in size.

Emit Motion Streak

Randomizes the particle positions along the velocity vector when they are emitted. Higher values may help to reduce banding but also may result in a noisier appearance.


Evaluate Neighbor Tile

When on, self-collision and volume preservation calculations use foam particles in neighboring tiles. This increases simulation accuracy and eliminates visible boundary artifacts between tiles especially in thick, static foam.

You must set Preserve Volume to a non-zero value to compute Evaluate Neighbor Tile. Turning on Evaluate Neighbor Tile increases simulation time.

Compression Model

Solver method, similar to smoothed-particle hydrodynamics (SPH), that uses incompressibility calculations to resolve overlapping foam particles. This method increases accuracy and realism of foam simulations in small-scale liquids.

When the combined particle overlap density is less than the set Target Density value, particles attract each other. When the particle overlap density is greater than the set Target Density, foam particles repel each other.

Target Density

Controls how the Compression Model method computations are applied to the foam simulation. Increasing this value allows more particles to overlap before they repel each other.

For typical foam simulations, use values between 0 and 2. Higher values, such as 10, can provide smoother distribution of particles. When you use higher values, the Point Radius needs to be increased to compensate for the higher particle overlap density. This results in greater accuracy at the cost of longer computations.

Inherit Liquid Velocity

Applies acceleration to the emitted foam particles based on the liquid velocity.

When set to 1, foam particles emit with a velocity equal to the liquid velocity vector. At values greater than 1, foam can shoot off the surface as spray, while values less than 1 dampen the particle velocity.

Gravity Mult

A value that scales the liquid container's Gravity Magnitude and applies it to the foam particles.

Mask Falloff Distance

Sets a falloff region, in scene units, around the input mesh of a foam mask. Increase this value to soften the emission boundaries around mask.

Dissipation Rate

Rate, per-second, that foam particles lose density. Foam particles at and above the liquid surface dissipate. Particles under the liquid surface do not dissipate.

Kill Density Threshold

Threshold Density value that triggers foam particles to be eliminated.

Particles below the surface of the liquid have a density of 1 plus the Max Liquid Depth. At the surface, particles have a density of 1, while above the surface they have a density less than 1.

Upward acceleration of foam particles in m/s2.

In turbulent, fast moving liquids, you can increase Buoyancy to force particles to the surface. This stops the particles from remaining under the surface as bubbles, which do not dissipate.

Collide Kill Depth

Sets the distance from collision objects, in voxels, that triggers an additional dissipation effect on colliding particles. This is useful for eliminating particles that are trapped by collision objects and cannot rise to the liquid surface and dissipate.

When set to 1, colliding particles dissipate at the set Dissipation Rate. When set to 0 or a negative value, particles dissipate at a rate greater than the Dissipation Rate.

The relation between Collide Kill Depth and dissipation rate is non-linear. For example, when set to -0.5, dissipation increases by a factor of 10. Values greater than 1 do not noticeably affect dissipation as collisions stop particles from penetrating more that 1 voxel inside the collision object.

Surface Tension

Amount of surface tension applied to the foam particles. The attractive force pulling particles together works within the region set by Tension Radius. Use values between 0 and 0.1, and more typically in the 0.01 to 0.02 range. Values higher than 0.1 can cause foam particles to ball together.

You must set Preserve Volume to a non-zero value for Surface Tension to have any effect, which is most noticeable in small-scale non-turbulent liquids. Foam Surface Tension works best with Compression Model and Evaluate Neighbor Tile turned on.

Tension Radius

Sets the active distance of Surface Tension in voxels. This distance is computed as a multiple of Point Radius, where a value of 2 corresponds to a distance that is two times the Point Radius.


Wind only acts on foam particles that are above the liquid surface. This effect is relative to the particle's density. Wind has a greater affect on lower density particles, which tend to hang in the air, than newly emitted particles with higher density. Increasing Air Drag also influences how particles behave when Wind is present in the simulation.

To get more spray effects, increase the amount of Wind along the Z-axis as well as increasing Air Drag.

Air Drag

Applies a drag force to foam particles above the liquid surface, which slows down falling particles at a rate relative to their density.

Lower density particles are most affected by drag, which causes them to hang in the air longer and behave like mist. Higher density particles are still affected by drag, but tend to be more affected by gravity and behave like spray.

Boundary Drag

Applies a drag force that is strongest where foam particles are not colliding with each other and weakest where they are. This can help to break up clumps of foam above the liquid surface because particles on the outside of the clump experience more drag than particles on the inside. For this attribute to be effective, set Preserve Volume to a non-zero value and make sure Point Radius is large enough for particles to collide.

Wind X, Wind Z

The strength of a wind force along the X and Z vectors in scene grid units/s. Use wind to direct foam particles that are above the liquid surface (spray).

Air Turbulence

Air Turbulence

The magnitude of a turbulence field that is applied to the air velocity, and affects particles above the liquid surface. Note that this controls the speed of the air, while Air Drag and Boundary Drag control how strongly particles are affected by the air velocity based on their density.

Air Turbulence Frequency

The granularity of the turbulence. Higher values produce smaller, denser vortices.

Air Turbulence Speed

The rate at which the turbulence pattern evolves over time.

Volume Behavior

Snap to Surface

When on, particles snap back to the surface each frame. Use this to keep foam on the surface of the liquid.

Surface Offset

Sets a distance, in voxels, between the liquid surface and the foam particles that are emitted at the liquid surface.

When set to a non-zero value, the solver uses Surface Offset to determine whether foam particles are below or above the liquid surface.

Preserve Volume

Applies a repulsive force to particles when the distance between them is equal to Point Radius.

Increase this value if you notice foam collapsing rather than dissipating as expected, or if particles are piling up and making the foam too thick.

Point Radius

The radius, in voxels, used by the repulsive force applied by Preserve Volume. Point Radius does not determine the size of simulated or rendered foam particles.

Overlap Pruning

Deletes overlapping particles without affecting the overall density of the foam simulation. Use Overlap Pruning to reduce excessive foam particle counts in highly turbid liquids, such as at the bottom of a waterfall, where bursts of foam emission can occur.

When set to 0, no particles are deleted. Values closer to 0 allow more particles to overlap before they are deleted. At a value of 1, one out of every two overlapping particles is deleted. The effect of Overlap Pruning intensifies with increasing Point Radius values.

The density of the deleted particles is transferred to the remaining foam particles. This means that the foam object's emission and dissipation rates do need to change to maintain overall density of the simulation. Overlap Pruning does not apply when the Compression Model is on.



Toggles camera adaptivity on and off and sets the particle emission rate drop-off based on the distance from the camera. Increasing this value emits more particles closer to the camera, while culling particles further away.

Set Camera Adaptivity to a positive non-zero value to turn on adaptivity. When set to 0, Camera Adaptivity is off and all the camera-related attributes are ignored. At a value of 1.0 and greater, emission drops off as 1/distance 2.

Clip To Camera Frustum

Restricts foam emission to an area defined by the adaptive camera's field of view. This is on by default.

Angle of View

Narrows and expands the adaptive camera's field of view. By default, this value comes from the Angle of View attribute of the last selected camera.

This value is not locked to the camera object, so it can be edited.


Sets the aspect ratio of the adaptive camera frustum. When set to 1.0, the aspect ratio is square (length equal to width).

This lets you control the adaptive camera aspect ratio independently of the render settings if desired.


Creates a region, in scene units, of emitted particles behind and around the edges of the camera frustum. This is useful if the camera is pulling back in an animated shot.

Increase this value to create a larger buffer region of particles, which is especially important for fast moving cameras. Otherwise, the foam may appear too thin in the newly exposed regions.

Foam Caching

Allows Bifröst to use the user cache files. Normally, this gets set automatically when you generate a user cache, but you can activate it manually if you want to load a cache into an empty simulation. See Bifrost Caching attributes and Work with Bifröst user caches.

Related Topics