Introduction #
A field is a grid of voxels, which simulation smoke effects using a mixture of ink a motion vectors. A voxel is a 3D pixel that contains the following data:
- “Ink” - RGBA Colour information
- “Movement Vector” - XYZ Vector to drive the ink
By holding colour / “ink” information in the voxel, we can render it like a drop of ink suspended in a liquid or a puff of cloud. By holding a vector of movement we can simulate complex fluid-like motions through the grid.
With every newly rendered frame, the simulation of the field is stepped forward. During this simulation step, each voxel calculates it’s movement vector by understanding how the movement of the surrounding voxels are affecting it. For example, if a voxel to the left has a movement vector pushing to the right it will transfer some of its movement into the voxels to it’s right. In this way, it simulates the real world of motion in liquids or gases.
Likewise, in each step of the simulation, a portion of the ink follows the direction of the movement vector.
The way voxels are rendered can vary greatly, allowing smoke, clouds or more solid forms.
There are four primary types of field nodes:
- Emitters, these emit colour / “ink” into voxels in the grid.
- Affectors, these add movement to the “movement vector” of voxels in the grid.
- Deformers, these deform the motion of the field after the fact, allowing for extra detail without contributing to simulation times.
- Rendering, these nodes visualise the voxels of the field controlling both their rendering and lighting.
You can also use the Movement Vector data from the field to affect particle systems using the Particle -> Affectors -> Field Affector node. This is very useful for fluid-like particle simulations.
Method #
Field systems starts with a Field Root node, and are built up with Emitter and Affector nodes, before finally being rendered to the camera with a Rendering node.
Fields are generally hooked into the Root node, although they can be applied to any node - they will still appear in the scene as long as there is a path to a Root node; they will inherit the transformation values of parent nodes.
Affectors
Affector nodes modify the velocities of voxels in a field.
Allows fields to collide with 3D Meshes.
Applies curl noise velocities to a field.
Applies a feedback effect to a 2D field.
Applies a different field's velocities to a field.
Blends the ink of a Field over time.
Applies a fluid simulation to a field.
Uses an image to affect a field.
Use points to disturb a field.
Use basic primitives to affect the field.
Allows fields to collide with primitive shapes.
Applies turbulent velocities to a field.
Applies a directional velocity to a field.
Applies a rotational velocity to a field.
Deformers
These nodes deform the entire field system at render time, without changing the underlying simulation.
Deforms the field based on 3D noise.
Deform a field based on a sine wave.
Emitters
Emitter nodes spawn the colour/Ink that can be manipulated in a field system.
Emits ink into a field based on an input Mesh.
Emits ink into a field from another input field.
Emits ink into a field from an input image.
Emits ink into a field from particles.
Emits ink into a field using a primitive shape.
Emits ink into a field from procedurals.
Generates a reaction-diffusion simulation for a field.
Rendering
Rendering nodes visualise the field or control how it is rendered and shaded.
Adds lighting and self shadowing to fields from light nodes.
Renders a field system as a volume.
Adds lighting to a field from an axis.
Apply the field to the surface of geometry.
Nodes
Caches a Field system to disk for consistent results.
Field System which uses distance fields instead of densities, better for Liquid effects.
Root node for setting up and controlling a Field system