Note: This is an archived version of the Blender Developer Wiki (archived 2024). The current developer documentation is available on developer.blender.org/docs.

User:Fabian Schempp/FinalReport

Porting popular modifiers to Geometry Nodes - Final Report

Summary

In this Summer of Code project, I ported multiple modifiers to nodes like described in the proposal (see link below). I ported all proposed modifies (see Changes and Additions), uploaded patches to developer.blender.org and worked over them in multiple cleanup passes. The developed nodes create precedences for porting other existing modifiers and operators and add additional support for attributes. The Mesh Inset node (formerly Extrude) was already showcased in the geometry nodes attribute workshop.

Project Links

Branches

Merged for testing

  • All - soc-2021-porting-modifiers-to-nodes-all

Single

  • Solidify (Solidify) - gsoc-2021-porting-modifiers-to-nodes-solidify
  • Collapse, Unsubdivide, Dissolve (Decimate) - soc-2021-porting-modifiers-to-nodes-decimate
  • Remesh Voxel (Remesh) - soc-2021-porting-modifiers-to-nodes-remesh-voxel
  • Remesh Blocks (Remesh) - soc-2021-porting-modifiers-to-nodes-remesh-blocks
  • Merge by Distance (Weld) - soc-2021-porting-modifiers-to-nodes-merge-by-distance
  • Mesh Extrude - soc-2021-porting-modifiers-to-nodes-extrude-and-move
  • Mesh Inset - soc-2021-porting-modifiers-to-nodes-extrude

Patches

  • Solidify (Solidify) - D11575
  • Collapse, Unsubdivide, Dissolve (decimate) - D11791
  • Remesh-voxel (remesh) - D11907
  • Remesh-blocks (remesh) - D11905
  • Merge by Distance (Weld) - D12019
  • Mesh Extrude - D12224
  • Mesh Inset - D12108

Completed Nodes

Solidify (Solidify)

The solidify node adds thickness to input geometry. You can supply the distances of extrusion as attribute to get uneven thickness. As output attribute you can get the selection for newly created side and top faces. Shell and Top output are optional.

Mesh solidify node.png Selection for example of solidify node.png
 Mesh solidify node result.png

Collapse, Unsubdivide, Dissolve (decimate)

Collapse, Unsubdivide and Dissolve Nodes originate in the three nodes of the decimate modifier.

Collapse and Subdivide got additional selection support.

Dissolve Limit modes are ported to use Attributes with different modes. You can use Selection mode to just dissolve selected faces, limit mode to dissolve unselected faces or edge attributes to limit dissolve. Border mode can be used to limit dissolve around the border of the selection.

Collapse node.png Collapse node result.png
Unsubdivide Node Unsubdivide node result
Limit Mode with edge selection Edge crease
 Result with limit mode
Dissolve mode selection Face selection
 Result with selection mode
Dissolve mode border of selection Face selection
 Result with border mode

Remesh-voxel (remesh)

This is a direct port of the Voxel mode from Remesh modifier.

Voxel Remesh Node Voxel Remesh Node

Remesh-blocks (remesh)

This is a Port of the three original modes of the remesh modifier.

Block remesh node Blocks Remesh result
 Blocks Remesh result smooth
 Block remesh node result sharp

Merge by Distance (Weld)

This is a port of the Weld modifier, with additional support for merging point cloud data. Selection attribute can be supplied to limit the merge operation.

Merge by Distance node Merge by Distance result

Mesh Extrude

This node mimics the corresponding bmesh operator. It can extrude selected Vertices, Edges and Faces along a given vector. Selection can be supplied as attributes. You can get the top of the extrusion as output. NOTE: this node relies on a patch for attributes interpolation, that is not yet in master.

Mesh Extrude node Mesh Extrude node result faces
 Mesh extrude node result edges

Mesh Inset

This node mimics the edit mode inset operation, with additional support for attributes. Attributes can be used to control selection, extrusion distance and inset. You can get the side and top faces of the inset as output selection.

Mesh Inset node selection for individual
 Mesh Inset node individual result
 selection
 Mesh inset node region result

Further Work

  • Make edge cases with solidify modifier, that uses shared code, work again.
  • Collect more feedback from artists. (download experimental build)
  • Some nodes e.g. Extrude rely on an updated attribute interpolation, which is not yet in master.
  • Bring nodes to master, which probably means, porting all the nodes to the fields system.
  • Write documentation with examples as soon as the nodes are in master.