2023-10-23 Grease Pencil Module Meeting

Date/Time: 2023-10-23T14:00:00Z
Link: https://meet.google.com/xxo-tyin-rem
Attendees :

  • Antonio Vazquez (Developer)
  • Amélie Fondevilla (LFS, Developer)
  • Casey Bianco Davis (developer)
  • Dalai Felinto (Blender)
  • Falk David (Blender developer)
  • Matias Mendiola (Grease Pencil core team)
  • Douglas Paul (developer)

Topics

  • Grease Pencil 3 development updates
  • Other news

Meeting Notes

Show all commits
  • Grease Pencil 3 development updates:
    • Geometry Nodes support was added. The first stage of adding a layer domain and porting all the existing curve nodes is almost complete. See #113602: GPv3: Geometry Node support via the curve nodes for an overview of all the nodes that are working.
      • The remaining nodes are:
        • Join Geometry, Duplicate Elements, Realize Instance, Viewer Node
      • Remaining tasks:
        • Apply modifier is not working (Falk)
        • Points and Curves attribute propagation on Instance on Points (Jacques)
      • Named Layer (Group) Selection node and socket option are committed. This allows the user to use the name of a layer (group) to create a selection field and filter out the desired layer(s).
        • They were part of the second milestone, but were done already.
        • Still missing: Lookup for existing layers and warning about use of Named Layer.
      • Antonio: Raised the issue of materials and how it currently shows all materials (for meshes and grease pencil) in the same search.
        • Explore solutions to either filter the materials, or to tell them apart. One idea is that the “Set Material” node could filter the materials based on the geometry input. Gets trickier for the “Material Selection” node.
  • Naming:
    • Falk: Wants to rename the default names from “GP_Layer” → “Layer” and “GP_Group” → “Group”.
      • People agree
    • Currently the primitive is still named “Suzanne” when it should be named “Monkey”.
    • Discussion: Should we name curves in grease pencil always “strokes” → undecided/unclear.
      • In the UI, e.g. geometry nodes, we should use Curves since we refere to both grease pencil and curves (object).
  • Antonio: For the material locking we need a way in foreach_editable_drawing to get the editable strokes.
    • Falk: Current idea was: add a parameter const IndexMask editable_strokes that would be populated if the material locking is used (and just be an IndexRange otherwise).
    • Casey: It might be worth it to look into making this another API rather than a parameter.
    • Falk: Agrees. This should be investigated. Maybe creating a PR that adds the parameter will make it more clear what a good API could be.
  • Manual & Documentation
    • So far, we have not documented changes compared to GPv2.
      • All agree that we need to start doing this.
      • Maybe a simple task with a list of breaking changes (e.g. renames of operators, etc) as well as new features (layer groups, eraser, geo nodes) should be created.
      • With this list it will also be easier to update the manual in the future.
  • Antonio: Wants to maybe start porting the bucket fill (based on a pixel flood-fill algorithm)
    • Falk: Might be good to check with Sietse he is already working on a different implementation
  • Amelie: What is the plan for the boolean eraser?
  • 18 open community tasks on the workboard column:
    • The plan is to publish a blog post to call for help on these. There will be a “landing” task for new developers to get an overview of all the open tasks.
  • Other news:
    • Blender Conference 2023 is happening this week. There will be lots of Grease Pencil talks. Also livestreamed. Check out the schedule here.

Next Meeting

10 Likes

It’s so exciting having geometry nodes support. I merely use GP for animatics… but even then, procedural control over strokes opens up so many possibilities.

Don’t you dare ! Suzanne is off-limits

This is only to make it consistent with the rest of Blender :confused: The mesh Suzanne is now called Monkey

Am I interpreting this correctly to mean that if a grease pencil object has holes, grease pencil strokes will finally work correctly? Or maybe I’m just projecting my hopes onto this? :sweat_smile:

To better clarify what I mean:
Currently, masking in grease pencil treats each layer as a complete image- masking punches a hole out of both stroke and fill. Grease pencil is the only vector drawing software that does this; in every other software, a stroke is a dynamic outline that changes to reflect masks and other changes to the data layer.

Masking these two rectangles in grease pencil (two layers, two materials, each with a fill and stroke) removes the stroke.

Holdout also treats stroke as static:

Here I’ve used Holdout on materials fill/stroke to attempt to cut part out of a circle and maintain the stroke. In Illustrator/Photoshop/Photo/Design/After Effects, this operation would return this result:

(see Right-Click Select — Blender Community)

I read the PR but it didn’t answer my question

2 Likes

To archive the image you posted, there are three major things we need.

  1. Support representing compound shapes (shapes with holes) in the data-structure.
  2. The ability to triangulate and render these shapes
  3. 2D polygon clipping algorithms to calculate difference, intersection, union etc. of compound shapes.

What I am talking about here are the first two. 1) Is already done because the data structure of GPv3 does support this and 2) is the todo task I’ve linked.
3) Is the final and most tricky step. Either we include an external library or we write our own. We’ll see. But yea the goal is that we can do these operations just like in any other vector application.

9 Likes

Whilst you are talking about masks and holes etc. I think there has always been an ‘Elephant in the room’ when it comes to GP - and that is the lack of support for Fill-Rules (i.e. fill-rule - SVG: Scalable Vector Graphics | MDN). It becomes most evident when importing SVGs, yet I don’t think I can find a single mention of it anywhere - ever!

Without the support for holes there was little point in thinking about filling rules. There have been talks about filling rules on the chat before, just not on the forum here.