Crease (but not sharp)
Defining the Crease output in the modifier stack to be a
crease attribute sets the crease. However this doesn't work by defining Sharp as
crease attribute exists at the beginning, which can be seen in the spreadsheet.
The specific situation described in my question could be solved entirely by geonoodles:
Setting Edge sharpness
This post is a third in the series of:
How do I use an existing modifier to create a bridge between geometry nodes and a property the geonodes setups can't access?
- Assign vertex group in Geometry Nodes (v3.3)
- How to apply Geometry Nodes with UV maps?
- This technique.
This time rather than splitting edges, storing their positions, moving each near a sharp or normal edge, transferring data by positions, restoring positions and merging by distance (where information on split edges would be lost, as it is in the UV technique), I decided to transfer by topology:
Take object named
Main, duplicate it as
Main.stage.2 (⎇ AltD is fine, Mesh data doesn't need to be duplicated) and disable
Main visibility (at least for renders) as it's just a first stage that's not supposed to be visible anymore.
Create a custom group Sharp Mapping, which checks runs through provided edges, and for each either creates a plain simple edge, or imports the sharp edge provided as an object wrapper:
Obviously you need to create the abovementioned sharp edge wrapper: just create a new cube primitive, delete all edges but one, select the remaining edge, right click, Mark Sharp. Name the object
Add a new geonodes modifier to
Main object to store the edge sharpness information using the Sharp Mapping node. For example, if you want to set all "horizontal" edges sharp:
- Remember to link the
Sharp Edge object in the geonodes modifier, as well as an attribute name (any available name will work):
- Finally, add Data Transfer modifier to the
Main.stage.2 object; non-default settings marked yellow: