Check the overview thread for more information about the meeting.
Present
- Dalai Felinto
- Falk David
- Hans Goudey
- Iliya Katueshenock
- Jacques Lucke
- Lukas Tonne
- Nikolaos Stroubos
- Octave Crespel
- Peter Noble
Since the Last Meeting
- Hans continued work on node tools. Most todos for the 4.0 release have been resolved.
- The 3D viewport menus update dynamically when changing catalogs and assets
- Uncategorized assets show as “No Catalog” in the add modifier menu, 3D viewport menus, and add node menu.
- The redo panel now shows the node group name and isn’t displayed when there are no inputs.
- Defaults when creating a new tool are improved to include the active mode and object type as well.
- Lukas continued work on node panels, mainly fixing various bugs, and making progress on showing the panels in the modifier stack. But support for inline sockets with an input and output on the same row also landed.
- The team also worked on various UI tweaks and polishing.
- Lukas continued his WIP branch with volume attributes integration, and presented an update in the design task.
- There has been some performance improvement work in the last couple weeks too, with Jacques reducing overhead and memory usage in the geometry nodes evaluator, and Hans committing an optimization for mesh topology maps and the line primitive node.
- Based on a design from Simon, Jacques added a “Skip” input to Simulation Output node that just passes through the data from the corresponding input node.
- Jacques continued work on baking, with a pull request almost finished to make baking more flexible.
- As part of the work improving the geometry nodes normals workflow, the sharp edge status is now exposed with builtin nodes.
Meeting Topics
- Baking
- Jacques presented the current state of the baking branch.
- By default everything is the same as before, but nodes can be baked individually, and each simulation can have a custom bake path and frame range.
- An overall simulation frame range can be specified on the scene as well.
- The most complex part of the change is the simulation bake timeline drawing, since the bake status of multiple simulations must be displayed. Feedback in the design task would be helpful.
- The immediate plan is to commit the custom bake path and custom frame range, without the “Play with Preroll” button for now, because UI design is needed.
- Hans advocated putting the “Play with Preroll” button in the simulation panel in the scene properties.
- It might be helpful to play with preroll but not bake the first frames. That may require more options exposed in the future.
- The work relies on feedback from Simon Thommes, but the plan is to finish that up next week.
- Jacques presented the current state of the baking branch.
- Python evaluation of node groups
- The Blender Studio recently requested support for some geometry node operations in Python as part of their asset pipeline work.
- Using the existing “run node group” operator from node tools doesn’t work because of limitations of the operator system.
- Exposing every node to Python or even a limited set is a substantial amount of work that raises plenty of design discussions.
- Instead, executing node groups could be added to Python, so only geometry nodes inputs and outputs would have to be exposed.
- For example:
mesh = node_group.execute([mesh, strength, distance])["output_identifier"].mesh
- Requires exposing geometry sets to Python API, at least partially.
- Self object and tool nodes wouldn’t work, unless there was some “context” passed into the
execute
function.
- The Blender Studio recently requested support for some geometry node operations in Python as part of their asset pipeline work.
- Triangulate overlapping faces removal
- Hans presented a decision from the triangulate node rewrite. The question was whether behavior could change for overlapping “bad quality” meshes in favor of better performance.
- In the end, the behavior change might not be helpful anyway.
- Material reusability and fields (#112547)
- High level UI for materials (similar to modifiers for Geometry Nodes)
- The implementation would likely be separated into a few parts, like tweaking the UI with the existing features first.
- Grease Pencil
- Some curve nodes don’t work with the grease pencil integration design we settled on. Those should have a warning (See the next topic for node breakdown).
- Attribute fields will need interpolation from the layer domain all the way to points.
- Inline sockets
- For years the node editor has used the “inputs on bottom, outputs on top” design.
- With inline sockets, node design could become a bit less uniform. The rules for whether or not to inline sockets have to be clearly defined.
- Postponed for later. The current problem it was trying to solve (compact nodes) is still valid, but a new solution needs to be found.
- There was disagreement about whether to remove this feature for node groups, but that will be done to force consistency with builtin nodes.
Grease Pencil
This is the list of the existing Nodes that should work with Grease Pencil geometry.
Nodes
Attributes
- Attribute Statistic
- Start by only supporting layer domain
- Domain Size
- Only layer domain → output number of layers
- Capture Attribute
- Remove/Store Named Attribure
Geometry
- Geometry to Instance
- Join Geometry
- Combine layers of individual grease pencil objects (geometries):
- Object A has 5 layers.
- Object B has 7 layers.
- Joined geometry has 12 layers (first all of object A, then all of object B).
- Combine layers of individual grease pencil objects (geometries):
Geometry Read
- ID
- Index
- Indices are local to each layer.
- Named Attribute
Geometry Write
- Set ID
- Set Position
Geometry Operations
- Bounding Box
- Convex Hull
- Delete Geometry
- Duplicate Elements
- Domain Curves/Points: Expected to duplicate curves inside layers.
- Domain Layers: Duplicate layers themselves.
- Transform
- It can transform the layers instead of the individual curves.
- Seperate Geometry
- Might be trickier because we need to split the grease pencil layer tree
- Separate Components
Curve Read
- Curve Length
- Total length of all splines across all layers
- Curve Tangent
- Endpoint Selection
- Is Spline Cyclic
- Spline Length/Parameter/Resolution
Curve Sample
- Sample Curve
- Not supported for grease pencil, because we can’t have a curve index field across layers.
Curve Write
- Set Curve Radius
- Selection: propagate layer selection down to points
- Set Spline Cyclic
- Set Spline Resolution
Curve Operations
- Curve to Mesh
- Curve to Points
- Deform Curves on Surface
- Specific to hair curves, may not be supported.
- Fill Curve
- Fillet Curve
- Interpolate Curves
- Resample Curve
- Reverse Curve
- Subdivide Curve
- Trim Curve
Material
- Replace Material
- Material Index
- Material Selection
- Set Material
- Set Material Index