We are getting close to the end of Blender 3.0 bcon2 and I would like to share the current status of the geometry nodes and what is still expected for this release.
Fields
If you are not yet familiar with the concept of field (and the function flow) please first read this blog post.
Fields Visualization
In order to clearly communicate the difference between the existing flows (data and function), sockets and noodles are drawn differently.
- Data flow is represented by a thick continuous line.
- Function flow is a dimmed dashed line.
- Data sockets are a circle (and can have its value inspected).
- Field sockets are a diamond (and upon inspection show what they depend on).
- Unlinked sockets that can receive either a field or data are a diamond with a circle.
Nodes and Noodles Design
Pablo Vazquez is working on a proposal that changes how all the nodes are visualized. It also includes alternative ways to visualize the different noodles. It is not clear when the design will be finalized, approved and committed. So for the scope of geometry nodes, testing, and get things ready for 3.0, those changes are not considered to be blocking.
Built-in Attributes
Built-in attributes always exist, and cannot be removed. Their data type and domain can not be changed. - User Manual
The built-in attributes can be accessed directly inside the node-tree. At the moment only the Position is available, but other attributes will be added shortly (e.g, shade_smooth, material_index, …).
The plan is to expose most of the built-in attributes this way. However, all the attributes can already be accessed using the Group Input and Output, and typing their name in the modifier.
Custom Attributes and Shareability
Vertex groups, UV maps and vertex colors are available as attributes in geometry nodes. However, while in 2.93 they were accessible from inside the node-tree with hardcoded get/set nodes, in 3.0 they are exposed via the Group Input/Output node.
This is part of a fundamental design of the geometry nodes which is the idea of shareability. You should be able to create a geometry nodes node group, share it with the world, and let people use that functionality in their own projects, with their own models. In order to guarantee that, there is a separation between the functionality (the nodes) and the data this operates on (the attributes). The data is mapped outside the nodegroup, as part of the modifier interface.
This also prevents invisible data being created deep inside a node group that is required in a different part of the node tree (or even outside, like in a material). This way, a node group works locally as a black box.
The exception are the object and collection info nodes that allows artists to define datablocks that are shared with the nodegroup. Although they still create “invisible data”, the behaviour is self-contained (the data they depend on, is shipped with them) and the node groups and modifier panel can be used to indicate the data it is creating.
This design principle comes with a cost. It hinders flexibility of artists who are not concerned with shareability. In 2.93 even artists sharing node groups would often start by hardcoding all the attributes inside the node group before exposing a few hand-picked ones.
Stable ID
To make sure the distribution of points is locally stable we need something called “stable id”. In 2.93 this was mostly hidden from the users. In master at the moment, this is explicitly exposed in the “Distribute Points on Faces” node.
Stable distribution are so important, that for a simple setup of distributing random collection children with random scale and random rotation you need to connect the Stable ID at least four times.
In Blender 3.0 this will be the default fallback for the sockets that can have an ID as input. That means that users won’t have to worry about that unless they really need. To read more about this follow this task.
Nodes
There is a lot of activity going on around porting the old nodes to fields. Most of the nodes already have a patch, where artists can help testing and providing feedback. Some worthy mentions:
- Object Info node is ported, but still needs to output the object attributes.
- The Volume to Mesh node still has the hardcoded “density” input.
- The primitive nodes will still have more outputs for UV and selections (if not in 3.0, for later).
- The Texture node is being replaced by individual Texture nodes like the Image Texture node.
Documentation
The user manual is still getting updated. A lot of the new nodes are already there, but there is still work to be done on updating the old nodes and present the new concepts.
For the nodes that have no official documentation yet, check the Release Notes.
Test Files
The original Geometry Nodes demo files is vastly mildly out of date. Those files are useful not only to demo the system, but for developers to test and develop new features. I started porting the initial files:
Updates and new files from the community:
New files (or the converted version of the original suite) are welcome. If you have a work that you can share as creative-common feel free to post the art here in this thread with a link to the file and the full credit. Even if it doesn’t make into the final suite it can help testing.
If your artwork is not fully ported, feel free to share work in progress and which nodes are missing for the final conversion.