Random Thoughts #1: Blender Geometry Nodes

With Blender 2.92 now released, there are a number of new features available. Most of them are adjustments on existing features which are either irrelevant or unimportant to my work flow. However there are a few that may enable so interesting content in the future. Today I want to talk Geometry Nodes.

What Are They?

Over the last decade node-based scripting systems have become increasing popular in the DCC space. Originally used in audio tools for things such as "simulating" the the physical layout of synthesizers and effects loops, they are now used for everything from game scripting to video compositing. Nearly every 3D modeling and rendering tools that still receives updates at least has a node-based materials definition systems. Tools like Substance Designer and Houdini are both tools whose workflows are based heavily on nodes and they are industry standards. And Unreal Engine 4, a popular real-time engine for games and other things, use nodes for behavior trees, materials, animation graphs, game scripting, and even automating the editor. Unity is likewise introducing more node-based features.

A typical Blender Material

With this in mind, it's unsurprising that Blender has committed to making nodes a cornerstone feature, called the Everything Nodes project. Already in use in materials and compositing, with Geometry Nodes, they introduce node-based scripting for Blender Modifiers.

Blender modifiers are essentially the means by which Blender enables effects on meshes non-destructively. You can add a Subdivision Modifier to subdivide the mesh while keeping the original geometry intact. You can use an array modifier to create instances of the mesh in regular formations. Even things like cloth and particle hair are applied as modifiers, though those are special modifiers whose properties are edited in a separate tab. And now with geometry nodes, it is much simpler to create your own custom modifier.

What State Is It In?

This is the first release of the geometry nodes, and while you can already do a lot with it, it's still fairly early. Primarily, you can use them in place of the particle system modifier, array modifier, and displacement modifiers to make more nuanced effects than were possible. Here, I made a Geometry node graph with cause glowing green mushrooms to scale based on the proximity of an invisible point animating through the scene:

To top it off, each of those warts as a fuzzy hair particle system applied to it. This all functions in realtime (except that I rendered in Cycles so the glowing aspect worked). In the old system, this wouldn't be possible without hand scripting it all in python, which has a lot of boilerplate and is generally unintuitive. Even if I am comfortable as a coder, it's much simpler to iterate with these node graphs which makes it more fun to experiment with interesting things. It's similar to the fact that I am fine coding shaders, but still prefer to edit materials in a graph. (maybe I should make a tutorial of a node based material versus a text shader?).

What Will You Use This For?

Although it's fun, I don't imagine I'll be using it too much in SD development. There might be more opportunities in SOTF, but we'll have to see. If I do any extended animations, I might be able to use the effects to apply "flourishes" to the visuals, like spawning physical sweat and having it move along with the motion of the actors.

But as I said, this is all still new. The feature will continue to mature and will be able to accomplish yet more things. Furthermore, existing add-ons and libraries will evolve to take advantage of this and I could see this making many aspects of environment building much simpler.

For now, it's just fun. I have some thoughts for how I can use this for a splash screen or the menu screen. Still just noodling, but that's a large part of the creative process.