2024-12-17 Sculpt, Paint, & Texture Module Meeting

Check the overview thread for more information about the meeting.

Present

  • Sean Kim
  • Hans Goudey
  • Julien Kaspar
  • Iliya Katushenock

Announcements

  • Importing custom brush hotkeys did not work in the initial 4.3 release, a fix is in for 4.3.1 and 4.3.2 for them to import correctly if you reimport older version settings (see: the related issue for more details).
  • Next meeting is the 14th of January due to the upcoming holidays!

Since the Last Meeting

  • Sean’s focus has been on high severity bugfixes and the quality project.
  • For the quality project, currently focusing on trying to clean up the ticket queue, fixing them if they’re fast, closing no longer relevant issues, and consolidating them into larger or more broad topics if necessary so that we have a better understanding of bug priority.

Meeting Topics

  • Mesh Filter - Adjust Last Operator “Repeat” parameter
    • What modes, if any, are worthwhile to have this in?
      • Brought up after a recent high severity issue and generally thinking about the usability of this setting.
      • It’s easy to continue applying the desired effect via the modal operator, but the main benefit here is for the random mode.
      • Conclusion: No action for now.
  • ProjectionPaint: Insufficient Soften threshold or blur kernel radius hardcoded
    • Is exposing this option something we want for users?
      • Hans brings up that this might be best to be dependent on the strength / radius?
      • The main reason it’s currently hardcoded is due to performance issues.
      • Generally agreed that this setting is something that the dev team should think about instead of exposing as another configurable parameter for users.
      • Conclusion: Will not be adding new parameters for this usecase.
  • The object is not zoomed in Sculpt Mode when you click on Frame Selected
    • Also posted as an entry on RCS
    • Is this something we want?
      • General agreement that these operators behave oddly.
      • We conflate last stroke position with selection inside Sculpt both for this operator & orbit around selection.
      • To be consistent with the name, the operator could zoom to the selected (unmasked) areas instead, but that behavior doesn’t seem useful to users.
      • We can improve messaging by changing naming to “View Last Stroke” inside Sculpt, Curve Sculpt, and other paint modes.
      • Conclusion: This needs more thought about desired behavior for what these operators do exactly inside Sculpt mode before we make broad changes. In the meantime change the “View Selected” UI text to match behavior.
  • 3D Paint Mode stencil disappears when panning viewport.
    • Is this a reasonable change in behavior?
      • Julien likes it and it’s simple
      • Conclusion: Already have a patch & already merged in.
  • Missing Face Set Operators
    • What, if anything, from this task is still relevant?
      • General agreement to close this.
      • Larger design task of what node tools operators do we want to ship with Blender.
      • The main caveat this is we don’t know exactly how to handle both multires and dyntopo in geometry nodes.
      • Conclusion: Agreement that any effort in this area from the module is probably best spent in figuring out multires interactions with Geometry Nodes.
  • Vertex Paint color input does not include alpha
    • Can anything be done about this in the short term?
      • Can be helpful in workflows when you want to export this (e.g. for game engines).
      • Could be useful in Vertex Paint mode, but for the paint brush in sculpt mode this seems less useful.
      • Color attributes are stored with an alpha channel, but it’s not always changed by tools or the UI.
      • The color tooltip displayed alpha is weird as we don’t currently store the alpha on the brush level.
      • Conclusion: Because of the previously mentioned limitations on the brush level this is something we can’t support for now, but will need to keep in our mind whenever we move forward with attribute painting.
  • Undo Design / Data collection
    • A general tracking task Sean made for trying to approach the numerous bugs in Sculpt mode related to the undo system. The goal is to figure out what needs to be done overall to avoid both inconsistencies in the user epxerience and more short-term hacks in the code.
    • A more specific discussion point is the “Sample Color” operator. Because the undo system is tied to the “Adjust Last Operation” panel and we don’t want to push undo steps for these brush-level changes, we cannot renable this functionality easily.
      • Best to add a shortcut here for now, this operator may need further work in the future, but that’s out of scope.
      • Conclusion: Added default keybind for this.

Need Help

  • N/A
8 Likes

What is relevant is that Face Sets are currently not mesh attributes accessible through geometry nodes.
So, to exploit them as is, user is forced to convert them, manually, to painted attributes or unique mask or vertex groups, in a fastidious way.

That means to convert what is basically a mesh attribute of Face Domain and Integer Data Type, as mesh attributes of other data types, other domains.
Why not just making them directly available as what they are, which is supported when created manually for GN uses ?

Why not allowing user to manage himself several Face Sets attributes, and several Vertex Float attributes as masks ?
To have interactions with multires and geometry nodes ; selection will pass through mask.
So, you can not skip the step to make Sculpt Mode mask accessible to GN node tree.
So, if you do it for mask, do it for face sets, too.

Also Face Sets overlay could become an overlay common to Face Integer attributes. And it could open idea of colored overlays for attributes of other domains.

5 Likes

For node tools, there are nodes to access face set values. Those can run in sculpt mode just fine.

Face sets can’t be accessed through the geometry nodes modifier for the same reason that selection can’t be accessed. It’s meant to be a temporary UI property that’s frequently adjusted and not the basis for a procedural system. Also, for performance reasons we don’t run a full dependency graph update for face set changes while sculpting. This would make any node setup that depended on them feel broken.

The best thing for you to do is convert the face sets to a more permanent integer attribute and use that in geometry nodes.

Other things you mention are interesting thoughts, I agree with the generalization in principle

2 Likes

Thank you. I missed those nodes.

That depends on user workflow. That is making sense to readjust them after remeshing.
But their interest is their persistence. They are separating model in parts.
They are used to select, hide and transform/pose those parts in a persistent way.

Storing them or not, from user perspective, does not change anything to flexibility to create them.
The need to frequently readjust them, from user’s point of view is rather a limitation, than a desired feature.
The desire to store several sets as mesh attributes is mainly to accomplish those basic tasks to select/hide/transform parts of model in a reliable workflow, rather than to do procedural modelling with them.
But if face sets are created to identify meaningful parts of model ; that is as meaningful to reuse them to add procedurally generated details, as to detailing them by sculpting.

2 Likes