Skip to content

Geometry Nodes

Geometry nodes has been extended with large performance improvements, more possibilities with many new mesh nodes, and various other utilities and features.

In bold you can find the names of 19 newly added nodes.

Performance Improvements

  • The Set Position node has been optimized for meshes, with up to a 4x improvement for a simple field (602ecbdf9a).
  • The evaluation system used for fields has been improved in many ways
    • In large fields with many nested values, memory usage can be reduced by up to 100x, which can also improve performance by 3-4x (1686979747).
    • Improvements to multi-threading with medium loads (around 10,000 elements) can improve field evaluation performance by up to 10x (658fd8df0b).
    • Memory use and performance have been improved, especially when few elements are processed by many nodes, up to a 20% improvement in some cases (92237f11eb).
    • Processing single values with field nodes is more efficient now, which can make a 2-3x difference in very extreme situations (47276b8470).
  • The Realize Instances node is now multi-threaded, which can give at least a 4x improvement in some common cases (f5ce243a56).
  • Mesh vertex and face normals have been refactored, improving access speed in geometry nodes by up to 40% (cfa53e0fbe).
    • Other areas like normal calculation, primitive nodes, and more complex files also have significant improvements.
  • Domain interpolation now only calculates necessary values, for some interpolations to faces and face corners (796e9d442c).
    • When selections are used, the improvements can be significant; a 6x improvement was measured using the position attribute to a single face.
  • Displaying large node trees with many nodes in the node editor can be almost twice as fast (0129178376).
  • The Set Spline Type node is now multi-threaded, making it faster when there are many splines (d2f4fb68f5).
  • The Cube mesh primitive node can be about 75% faster at high resolutions (aa6c922d99).
  • The Grid mesh primitive is now multi-threaded, with a 2.5x performance improvement observed on a 4096x4096 vertex grid (cb96435047).
  • The internals of the Bounding Box node have been multi-threaded for meshes and point clouds, with observed 4.4x and 5x performance improvements (6a71b2af66, 6d7dbdbb44).
  • The overhead for multi-threading a series of nodes has been lowered, for a few percent improvement in some cases (e206a0ae96).

All of the new geometry nodes added in Blender 3.1

General

  • The result of a field at a certain index can be calculated with the Field at Index node (b88a37a490).
  • The new Accumulate Field node is useful as a building block for more complex setups, building sums of values inside multiple groups (a836ded990).
  • It's no longer necessary to add a #frame driver to get the scene's current animation time, the Scene Time node does that instead (bd3bd776c8).
  • The Compare Floats node has been upgraded to a generalized Compare node (1757840843).
    • The new node can compare most data types, not just floats, even strings.
    • Special modes are included for 3D Vectors, to compare directions dot products, lengths, and more.
  • Close points on meshes and point clouds can be merged with the Merge by Distance node (ec1b0c2014, 0ec94d5359).
  • The Map Range node now has a vector data type option (5b61737a8f).
  • The Boolean Math node has been expanded with more operations (14f6afb090).

Attributes

  • The Domain Size node gives the size of any attribute domain, like the number of vertices in a mesh (35124acd19).
  • The Attribute Statistic node now has a selection input (1a833dbdb9).
  • To make naming more intuitive, the Transfer Attribute node geometry input has been renamed from "Target" to "Source" (6a16a9e661).
  • An new operator on meshes allows converting generic attributes to UV layers or vertex groups, or other generic data types (f6888b530a).
    • The operator also makes it possible to change the domain of an attribute on original geometry.
    • The operator only works on original geometry, so the geometry nodes modifier must be applied

Instances

  • Instances now support dynamic attributes (97533eede4, 15ecd47b96, ba8dd0f24f).
    • Attributes are propagated in the Realize instances node, including special handling for the id attribute (f5ce243a56).
    • Instances attributes are propagated in the Instance on Points and Instances to Points nodes (221b7b27fc, 386b112f76).
    • Geometry Nodes instance attributes are not usable in shader nodes in 3.1.
  • Real geometry can be converted to an instance with the Geometry to Instance node (565b33c0ad).
  • Instances can be removed directly in the Delete Geometry node (a94d80716e).

Abandoned House Generator by Sozap

Meshes

  • The Dual Mesh node transforms a mesh's faces into vertices and vertices into faces (d54a08c8af).
  • The Extrude Mesh node makes it possible to extrude vertices, edges, and faces (95981c9876).
  • Various nodes have been added to give basic access to mesh topology information.
    • Vertex Neighbors gives access to the number of vertices and faces connected to each vertex (2814740f5b).
    • Face Neighbors gives access to each face's vertex count and the number of faces connected by an edge (2814740f5b).
    • Edge Vertices gives access to edge vertex indices and their positions (2814740f5b).
    • Edge Neighbors tells how many faces use each edge (c4cee2e221).
  • More new nodes give useful data derived from meshes.
    • The Face Area node provides access to the surface area of each of a mesh's faces (2814740f5b).
    • The Mesh Island node outputs a separate index for each piece of connected vertices in a mesh (069d63561a, 4251455dcd).
      • There is also an "Island Count" output for the total number of islands in the mesh (87c5423c5e).
    • The Edge Angle node gives the angle between the normals of two manifold faces (b7ad58b945).
      • The node can output the signed angle, to tell when an edge is convex or concave (4d5c08b938).
  • The Flip Faces node reverses the normals of selected faces by reversing the winding order of their vertices and edges (c39d514a4e).
  • The Scale Elements node changes the size of selected groups of faces or edges (d034b85f33).
  • The Triangulate node now has a selection input to limit the operation to only some faces (abf30007ab).

Curves

  • The String to Curves node has two new outputs (0e86c60c28):
    • "Line" contains the index of the line in the text layout for every character instance.
    • "Pivot Point" gives a position relative to the bounding box of each character.
  • The Resample Curve node now has a selection input for only affecting certain splines (a7672caeb2).
  • The Curve Parameter node is renamed to Spline Parameter and now has a length output in addition to "Factor" (0c6b815855).
  • The Set Handle Position node has a new "Offset" input like the Set Position node (3fe735d371).
  • The number of control points in a spline is now included in the Spline Length node (88e9e97ee9).
  • The Set Spline Type node has a better conversion from NURBS to Bézier splines (a84621347d).
  • The Curve Handle Positions node now has a toggle to output the position relative to the corresponding control point (38c7378949).

Primitives

  • A new Arc curve primitive is similar to the Curve Circle primitive, but can create an incomplete circle (cc1a48e395).
  • The Cone and Cylinder mesh primitives now have selection outputs for the top, side, and bottom sections (431524aebc).
  • The Star curve primitive node has a selection output for the outer points (3fe735d371).

Spreadsheet Editor

  • Volume grids are now listed in the spreadsheet, including the grid name, data type, and class (ccead2ed9c).

Node Editor

The nodes editor has a new context-aware search menu when dragging links, and significant performance improvements for large node trees, with fewer unnecessary updates than before.

The node timings overlay shows approximately how long each node took to execute.

  • When dragging a node link over empty space, a new search menu allows quickly connecting a node with a compatible socket (11be151d58).
  • The execution time for nodes can be displayed above nodes (Geometry nodes only) (e4986f92f3).
  • Performance for large node trees has been improved, and unnecessary updates have been removed.
    • Editing a node tree causes fewer unnecessary updates than before (7e712b2d6a).
      • Inserting reroutes and changing nodes that aren't connected to the output don't trigger updates.
      • Some unnecessary updates still happen when a driver is used.
    • Displaying large node trees with many nodes in the node editor can be almost twice as fast (0129178376).
    • Editing and undo with large node trees should be generally faster (dbbf0e7f66, bdbd0cffda).
  • Node selection inside Frame nodes has been fixed/improved (1995aae6e3).