Erindale Woodford talked about the Fire Loop project, created for this year's Nodevember challenge, demonstrating how the procedural clay-like flame was made with Geometry Nodes.
Introduction
My name is Erindale, and I'm a Blender Technical Director and tutor. I have been a Blender user since 2009 (when I was 14), and I have been teaching procedural workflows with Blender since 2021 through my YouTube Channel, online courses, and Discord server.
Each year, we celebrate procedural workflows with a month-long art challenge called Nodevember. 30 days, 30 prompts, 30 procedural artworks. While the official Nodevember organisers took a break this year, I decided to release a prompt list, and I've been blown away by the volume and quality of work from the community.
Be sure to check out the #Nodevember tag across social media. In this article, I want to share my workflow for building a claymation fire loop with Geometry Nodes in Blender 5.0.
Fire Loop
To start, the general volume of the flame is created with primitives, an icosphere, and a cone. These are transformed into place and made thin in the Y-axis to allow for holes to start appearing in them later on.
This basic shape is displaced using a noise texture. I knew that I wanted to create a looping animation, and while there are a few options to do this, the simplest in this case was simply to rotate the noise texture one full revolution per frame range.
Setting the rotation centre closer or further from the geometry changes the speed at which the noise would move through the geometry. The distance we're displacing is defined by a gradient from the bottom of the flame to ensure that it remains attached to the base.
At this point, we have the general animation of the file complete. Next, we can start manipulating the animation from a more volumetric angle. In Geometry Nodes, we have a node called Volume Cube, essentially an even distribution of points within a cuboid grid that samples incoming data, and if the data between two points straddles our threshold, a face is created. Essentially a Marching Cubes algorithm.
Using this node, we can combine a volumetric sampling of our basic geometry shape (using the new SDF nodes) with procedural textures and maths to add or remove parts of the mesh. Once that's done, we simply use the Volume to Mesh node to create our new geometry at the other end.
In this case, we can create holes and voids in the flame by combining in a Voronoi distance field, again, this texture will need to be mapped to loop across the animation. We can also be more prescriptive about expanding or contracting the volume.
For the proper claymation look, I didn't want to have color gradients across the mesh, and so I split the flame into an inner and outer part. This can be done simply by adding a spherical gradient to the density field. One to remove the sphere, and one to remove everything but the sphere. I also added the original noise displacement to the sphere's mapping to ensure that it animated naturally with the flame.
When working with distance fields in this way, we can perform our boolean operations using the Minimum and Maximum functions. In this case, I am using a Smooth Maximum function to smooth the geometry around the cut, rather than it being a sharp intersection.
Lastly, we need to add a shader. I created a Boolean attribute on the inner section of flame to use as a shader mask and then used this to switch between colors. I went very simple on the material for this model, but further work could be done to add fingerprints and other things that would help sell the claymation look.
Conclusion
If you're interested in looking more into my process, you can take a look at the time-lapse on YouTube:
You can also download my project file for free from Patreon. If you're a node-based artist, be sure to look out for more Nodevember posts from the community and get involved!