A Week of Blender: Geometry Nodes Workshop 2024
May 26, 2024I recently had the opportunity to spend a week at Blender HQ for a Geometry Nodes design workshop. I expected the focus to be on new features and high-level nodes for various workflows, but we were often slipping into foundational topics like data types and socket shapes. Even as a power user, I found it surprising that some of the features we want to add still have fairly major design implications (For-Each zones, anyone?).
The fact that I expected more feature discussions than foundational ones is a testament to the developers' commitment to pushing Geometry Nodes in a “production-ready” state for every release, even if not yet feature-complete. This is no mean feat for such a capable toolset, and I applaud the development team for their impressive progress in just a few years.
One reassuring takeaway is that there are no major paradigm shifts planned, especially after the Great Attributes to Fields change of Blender 3.0. Instead, we can look forward to new data types (such as lists and voxel grids) and a more refined user experience with various node graph and operator improvements.
Over the five days, we tackled around 20 topics—some were straightforward, while others needed extensive discussion.
Here are my top 5 takeaways:
1. Usability
I feel that this was really the main goal of the workshop - how do we make it easier for people to build complexity? How can we make Geometry Nodes more accessible for both new and experienced users?
- Gizmos: Having interactable gizmos that are fully procedurally configurable will be a game changer for tool building and creating accessible node assets.
- Field Context Visualisation: Currently it’s extremely difficult to understand where data is flowing around the node graph so we had some conversations around ways that this could be exposed to the user visually via overlays, hover-help, etc.
- Custom Viewer Nodes: The default viewer node is not always up to the task, especially with more complex geometry interactions and data-types. Custom Viewers are a proposal for groups that can be assigned and invoked as viewers with bundled custom logic inside.
- Node Graph Structuring: There were a lot of smaller topics covered under this umbrella that address a range of usability papercuts and potential new operators for manipulating nodes. Check out the meeting nodes linked at the bottom of this article for a run down.
2. Professional Production Workflows
Blender often faces criticism for lacking certain quality-of-life features that are crucial for professional production. During the workshop, we discussed several impactful topics that aim to address some of these issues (though not strictly related Geometry Nodes).
- Asset Embedding: Linking and appending do not always work nicely with larger productions and can result in complex overrides, duplicate data-blocks, and can cause issues if linking to assets from addons (or Blender’s Essentials pack). Asset Embedding aims to retain a reference to the original asset while embedding the entire asset in the current file. This allows for updates when needed while treating the asset as local and properly managing de-duplication. The goal is to complement, not replace, linking and appending by introducing a more versatile and often more suitable option.
- Projects: In large-scale projects, setting global configurations such as render paths, colour management settings, bake directories, and whether files should be linked or embedded based on their project status can significantly streamline workflows. This reduces setup time for artists and technical directors, promoting better organization and planning.
- Path Variables: Again more useful for larger productions, path variables allow certain paths (e.g., a bake directory) to be defined relative to a higher-level path configuration, which could be on the modifier, the scene or even project-wide . The syntax for these variables needs further design, especially for integration with the Python API, but an example could be something like
${OBJECT_NAME}-${MODIFIER_NAME}
3. For-Each Loops are Complex
Since we’ve had the Repeat Zone, we’ve been able to replicate the functionality of a For Each loop but at the cost of performance. For one, the Repeat Zone runs in series, not parallel, and second, always pulling the entire geometry through every loop can result in quadratic complexity. A true For Each Zone will run each loop in parallel and will better handle the processing of attributes on the mesh.
There are actually several types of For Each Zone needed with Geometry Nodes due to the way we interact with different data types and geometry. The most common type for now will be a “For Each Geometry Element” (name TBD) but we’ll also need For Each zones to iterate over list indices and other data structures.
- For Each Geometry Element: This loop would iterate over each geometry element from the input geometry based on its domain (and potentially, eventually, Group ID). Within the loop, fields would be sampled down to single values, allowing for various processing tasks. The difficulty comes with actually modifying geometry as working on each element individually will break connectivity. The zone output would pass out a complete geometry with updated attributes from the loop logic. Additionally, creation of new geometry would be possible by adding extra output sockets.
While the detailed design is still being finalized and will evolve as list data types become available, I am extremely excited about the possibilities of these nodes. They promise significant performance improvements over Repeat Zones in like-for-like use cases.
4. Lists are Coming!
I’ve mentioned lists a few times so far and they must also be one of the most requested features since the dawn of Geometry Nodes. Anyone coming from coding or Grasshopper (or Sverchok) will be most used to dealing with standalone data. If anything, Geometry Nodes is the odd one for tying all computation to geometry. While this will remain the central workflow, we will be seeing lists added in various places. I am really excited for what this will mean for larger scale workflows - especially when we have things like file import nodes for CSV / JSON etc.
There are a lot of implications of adding this kind of data type into Geometry Nodes so it’s definitely going to take some more design before we see anything landing in Main but the possibilities are huge! In theory, we could create meshes entirely from lists of vectors and associated lists of face connectivity, enabling ultra low-level mesh generation — a huge +1 for Geometry Nodes and open source procedural workflows in general.
This is not imminently being added to Blender but know that it is on the books!
5. Grease Pencil v3 is going to be a Game Changer!
The GPv3 project has made significant progress over the past year, with Falk refactoring the data structure and updating the tools. The goal is to have feature parity for the Blender 4.3 release with some minor geo node support (although I’m not sure how deep that Geo Nodes access will be for the initial release).
Many of our discussions centred around how artists would handle breaking and reconstructing layers and strokes during Geometry Nodes processing, particularly important for completely procedural creation of Grease Pencil objects. This topic is incredibly exciting, as fully procedural drawing creation has huge ramifications for non-photorealistic rendering (NPR) and technical drawing workflows in Blender. I’m really happy to see the different aspects of Blender really start to talk to each other and provide low level access to procedural tools.
Reflecting on my experience at the Geometry Nodes workshop, I'm reminded of the collaborative spirit of the Blender community. It's inspiring to see developers and users come together to shape the future of Blender. While the conversations often dipped into more granular and foundational elements, it's clear that these are essential for the long-term success of Geometry Nodes.
I'm grateful for the opportunity to have been part of this workshop and look forward to seeing how these discussions shape the future of Blender. Until next time, happy blending!
For more details covering more topics, check out the official blog post from Jacques: https://code.blender.org/2024/05/geometry-nodes-workshop-may-2024/
For the complete meeting notes, try this one: https://devtalk.blender.org/t/2024-05-13-geometry-nodes-workshop-notes/34760