2023-09-19 Nodes & Physics Module Meeting

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.
    • In the add modifier menu, The node group selector is hidden by default, when a new asset modifier is added.
    • In the node add menu, shortcuts are supported for adding specific node group assets.
  • 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.
  • 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.
  • 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).

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
13 Likes

Now that Geometry Nodes appears to be in a stable place and quite feature rich heading into 4.0, will we see newer and better physics solvers integrated into Geometry Nodes in the 4.x timeline? I really want to stop using C4D just for the physics and would love to keep everything inside of Blender. Thank you for all the hard work you guys put in for Geometry Nodes so far, it’s been immeasurably helpful in my job! :saluting_face:

5 Likes

There is mention of a fluid solver being prototyped in the above meeting notes. Presumably a flip solver will be required for the new open movie project, so that is likely the first solver priority. Look at the bottom of this page: #103248 - Geometry Nodes Volume Features Implementation - blender - Blender Projects

Cloth and softbody sims would make my life a trillion times easier. No more having to export and reinport from houdini! :grin:

For the next meeting can you guys discuss about the situation of Node Wrangler’s switch type operator?

In short, now it’s not functional in every node editor, not only in Geometry Nodes, and the replacement would be a native one anyway, I think it should be removed in 4.0.

2 Likes