Geometry Nodes in Blender

When version 2.92 of Blender was released, it included a new feature: Geometry Nodes. It is the first feature of the “everything nodes” initiative for the software, and it allows manipulation and creation of geometry through a node graph attached to a mesh. Version 2.93 added more geometry nodes, and I presume that subsequent versions will continue to expand this feature.

I decided to learn the basics of Geometry Nodes by creating a simple animation. Of course, the “simple scene” became more complicated than I expected, but I am very happy with the result.

Here is the final video. Note: you can right-click on the video and select “Loop” to view it continuously.

There is only one gear mesh, which is instanced over a deformed cylinder using Geometry Nodes.

Single gear geometry
The one gear mesh defined in the scene.
Base cylinder for the geometry nodes
Originally a cylinder, I rotated each segment by 45 degrees down the line.
Instanced cylinder using geometry nodes
The same cylinder, but with geometry nodes applied to instance the gear at each point of the mesh.

Blender has built-in instancing that allows creating one mesh at all of the points of another mesh, as I am doing here. However, each instance will be aligned in the same direction; in this case, all of the gears would point straight up, instead of radiating out from the cylinder’s central axis.

Using geometry nodes allowed me to instance the gears and adjust the rotation, using a long series of nodes to perform some vector math.

Geometry nodes on the cylinder
The full geometry node graph that instances the gears over the cylinder.

I also had to create a very simple geometry node on the gear, so that I could rotate the gear around it’s Z (up/down) axis over time. The purple field in the Transform node indicates a driver (similar to a Set Driven Key in Maya, or an Expression in LightWave).

Geometry node that rotates the gear
Geometry node that rotates the gear over time.

Apart from the cylinder and gear, I also added the sphere in the center of the scene, two volumetric containers for atmosphere, and two area lights.

The sphere added a little challenge. I originally created the sphere using a simple shader that rendered quickly:

Original central sphere render
Original render with an uninteresting central sphere.

But when I decided to try a more advanced shader on the sphere, my render time shot up dramatically: from about two minutes per frame to over 15 minutes. The sphere is emissive, so it adds light to the scene. The new shader also used volumetrics, and the combination was very noisy unless I turned up the render samples significantly.

So I rendered out the frames using the simple sphere as my base render. Then I rendered out the scene with the new sphere, with a much higher sample rate, but used the “Render region” feature in Blender to only render the central section (the sphere and a little surrounding area that fits into a rectangle), which only took about two minutes per frame even with the high sample rate. Finally, I composited the two together in DaVinci Resolve for the final render!