Node Tools Overview #101778
With node group assets becoming more prevalent and geometry nodes becoming essential
for manipulating geometry in Blender, we want to add the ability to implement operators
with geometry node groups.
Relevant node groups would need a geometry input and output, and could have other inputs (and possibly outputs), with similar mappings as the geometry nodes modifier.
Additionally, specific inputs could be marked as editable modally, for example, a "Factor" input could be controlled by moving the mouse cursor left or right.
The specific data design still needs to be settled on (i.e. is the node group an operator, or does an operator reference a node group?).
- The node group itself is the operator asset
- Geometry nodes gets new input nodes
- Mouse coordinates
- View transform
- 3D cursor location
- Geometry node groups with these input nodes can only be used as operators
- This design is similar to the shared node groups between shader and geometry nodes, for example.
- The group outputs are used to adjust the output geometry
- The geometry output will adjust the "active" geometry
- We might need to store a specific mapping for outputs, but relying on the name is a start
- The project is "completely finished" when any existing edit mode operator could be implemented with nodes, though realistically that won't be achieved any time soon.
Organized by priority in each category
Changes needed to move the feature out of experimental and enable it in the release
- Initial basic feature for curves sculpt mode
- Allow controlling which modes assets are available in
- Update 3D view menus dynamically (avoid need to restart Blender)
- #114102 Make object info node geometry output work properly
- #111529 Show menus for unassigned node group assets
- Tool specific nodes
- Node group inputs displayed in the redo panel
- #111523 Improved default traits
- #111524 Finalize trait popover locations
- Shortcut support
- Quick favorite support
- #111526 Filter data-block selector based on tool/modifier option
- Publish the user manual
Not necessarily required for a release in main
- Show visual difference for tool nodes in modifier context
- Show visual difference for viewer and simulation nodes in tool context
- Resolve flickering in asset browser when using redo panel
- Support for node warnings
- Add support for evaluating output attributes
The second phase of the project, after the fundamentals are working well
- Object mode support
- Data-block inputs in redo panel
- Use session_uid properties instead of pointer properties
- Add UI for data-block pickers backed by session_uid
- Option to show settings in popup before operation starts
- Tool specific nodes
- Sculpt "soft selection" input and set
- View transform
- Mouse position
- Deformed ("cage") positions
- Modal operator support
- "Wait for cursor" option
- Store operator properties for the next execution
Use Cases and Ideas
- Mesh sculpt "face set extract"
- Mesh sculpt "mask extract"
- Lasso selection operator
It would be useful to provide a module for converting custom panel settings to input sockets as part of the input sockets signature.
Some issues I currently still have with Node Tools:
I cannot add custom shortcuts
- Go to Context Menu > Assign Shortcut, set e.g., "A"
- Nothing happens (A doesn't show as the shortcut for this menu entry).
- Repeat that will get a crash
bpy.data.window_managers["WinMan"].(null) = 'A' # Property
Tool popover layout always "inactive", regardless of the checkbox value:
- Cannot add tools to "sub-menus", for example to
Mesh > Delete:
- I still run into
No asset found at path "NodeTree/Tool"in some cases.
Not a bug, but nonetheless:
- No way to make a tool input to take only values (not be a field) - and "values" should be the default I think, at least for tools:
I think the warnings only displayed in modifier panels (like the one below) should be visible when making tools.
Maybe the warnings should have displayed somewhere inside the node editor to begin with? (Like in header as other warnings?)
No due date set.
No dependencies set.
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?