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.
- 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 either a Field 2D Root or a Field 3D Root, 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.
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.
This node affects a field's velocities by attracting or repelling it using a procedural's surface.
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.
Applies turbulent velocities to a field.
Applies a directional velocity to a field.
Applies a rotational velocity to a field.
Collision
TODO Section Description
Allows fields to collide with 3D Meshes.
Allows fields to collide with primitive shapes.
This node allows fields to collide with procedurals.
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.
This node emits a particle system into a 3D field.
Emits ink into a field using a primitive shape.
Emits ink into a field from procedurals.
Generates a reaction-diffusion simulation for a field.
Materials
TODO Section Description
A 3D field material suitable for smoke and cloud volumes, which shades solely based on density.
A 3D field material suitable for fire / flames.
A 3D field material suitable for pyro / explosions.
Rendering
Rendering nodes visualise the field or control how it is rendered and shaded.
Renders a field system as a volume.
Renders a 3D field via path tracing.
Apply the field to the surface of geometry.
Nodes
TBC
TBC
Caches a Field system to disk for consistent results.