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

 * Project Proposal
 * Weekly Reports
 * Build Windows
 * Build MacOS (intel)
 * Build MacOS (Arm)
 * Build Linux

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`


 * Geometry Module - `D11942`

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.

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.

Remesh-voxel (remesh)
This is a direct port of the Voxel mode from Remesh modifier.

Remesh-blocks (remesh)
This is a Port of the three original modes of the remesh modifier.

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.

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 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.

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.