Blender 4.3: Geometry Nodes¶
For Each Element¶
A new For Each Element zone has been added (6e5e01e630). It allows evaluating the nodes in the zone for every element (e.g. point or face) of a geometry. The output of the evaluation for each element is then joined into either new geometries or new attributes.
Using this zone is great for many use-cases that were impossible or very complex before. However, performance of simple field evaluation is way superior compared to evaluating the same math nodes inside of the zone. Also see the commit message for more performance considerations.
Grease Pencil¶
Geometry Nodes supports working with Grease Pencil data now. From the perspective of Geometry Nodes, a Grease Pencil geometry is made up of a flat list of layers where each layer has curves. Layers, curves and curve control points can have custom attributes.
Many nodes that already work with curves have been updated to implicitly work on Grease Pencil data too. In these cases, each layer is processed independently.
To make use of all the curves editing features, Grease Pencil can be converted to curves and back using the corresponding conversion nodes. The conversion is not fully lossless yet but all general attributes and materials are propagated. The conversion nodes can also be used to use Grease Pencil as input for generating other geometry types and to generate Grease Pencil data from scratch in Geometry Nodes. Note that Grease Pencil and other geometries use incompatible types of materials, but both kinds of materials use the material socket.
When converting Grease Pencil to curves, each layer is turned into a separate curves instance.
This allows processing each layer as curves separately. When disabling the Layers as Instances
input the output will be a single curves geometry that contains the strokes of all layers.
Similarly, instances are turned into layers when converting curves to Grease Pencil.
While layer names have to be unique on original Grease Pencil data, that is not true in Geometry Nodes. This is surprisingly important for performance, because making layer names unique can be quite costly. However, when applying a Grease Pencil modifier, all layers with the same name are merged into one. This can also be done in geometry nodes explicitly with the new Merge Layers node (53b9594ee2). Layers can be merged either by name or by a custom group id.
Packed Bakes¶
Bakes created with the Bake node or Simulation zone can now be packed into the .blend
file
(3ccfa65245). Previously, the baked data was always
stored in separate files. Packing them into the .blend
file improves shareability and simplifies
getting started with baking. For very large bakes, it's still recommended to store them separately
though, because then they can be loaded on demand.
Bakes are packed by default, but the bake target can be customized per geometry nodes modifier or
even per individual bake. Once baked, the data can be losslessly packed and unpacked. This is also
integrated with the more general Pack/Unpack Resources
operators.
It's also possible to see how large a bake is now.
Gizmos¶
It's now possible to add gizmos to node groups (24dc9a21b1). This allows editing the inputs to a node tree directly in the 3D viewport without having to go into the node editor or even modifier stack.
In this initial version, there are three kinds of gizmos that one can use:
- Linear Gizmo: Allows controlling a scalar value with a linear movement in the viewport. This works well for setting dimensions, counts, etc.
- Dial Gizmo: Allows controlling a scale value with dial movement. This is great for inputting angles.
- Transform Gizmo: Allows controlling a transform matrix value. This is actually a combination of multiple gizmos for translation, rotation and scale. It also takes the Global/Local transform orientation in the 3D viewport into account.
When using those nodes, it's important to understand that they are not input values by themselves. Instead they are just attached to other already existing input values and control those.
One only has to use these nodes when authoring node groups with gizmos, but not when using gizmos added by someone else.
Built-in nodes like the Transform Geometry node do not have gizmos yet, but that will be added in a later release.
Warnings¶
A new Warning node has been added that allows adding custom warnings to node groups (e8b81065bc).
By default, all warning types are propagated to the parent node groups. However, there is a new Warning Propagation node setting that allows disabling that certain warnings are propagated further up (1ee6a8fad5). This can be used by assets which may where internal nodes may have warnings, which are not relevant to the end user.
The display of warnings in the Geometry Nodes modifier has been reorganized. They are now in a panel and ordered by severity and alphabetically.
Warnings generated by nodes in a geometry nodes modifier are also accessible with Python.
Geometry Names¶
Geometries can be named with the new Set Geometry Name node (dc8e9678e1). Some nodes also initialize names based on object and collection names. Names are propagated through most nodes. The main purpose of giving geometries names is to simplify debugging of more complex instance hierarchies. For that purpose, the spreadsheet can now also display the data if nested instances.
Utility Nodes¶
There are a couple smaller new nodes which are useful for some setups:
- New Hash Value node (294994e4b9).
- New Integer Math node (bf04513dec).
- New Matrix Determinant node (22d78c5a8e).
- The Value to String node supports converting integers without floating point precision issues now (44fbd69317).
Other¶
- Node timings are more accurate now (8af75d2fcc).
- The Skip checkbox in the simulation zone is now hidden to avoid accidentally clicking it (af0d417450).
- Sculpt mask is now accessible in node tools (98f0926825).