The big Blender Sculpt Mode thread (Part 2)

Vertex Groups don’t have any use I can think of. Only thing i can come up with is in Geonodes for some abstract art it could be useful to batch-paint some groups. But converting is easy, simply two-three lines of code. So why not, maybe somebody will find an use for it.

For materials it is very useful even without addons and such. Once you have complex model and you need to apply materials on different parts you’ll have select faces in edit mode, add material slot, assign, and repeat that for as many materials as you need. With face sets you can just draw on faces and with one button you have materials distributed way you wanted. Another use is that if you want to keep seeing face sets in Object mode when you’re rigging for example, you can have random viewport color on each material you generated from face sets and it’ll look the same.

What I’m cheering for most is if you guys allowed using face sets in procedural way, meaning it updates real-time in Geometry nodes when you paint (similar to vertex groups) now that’s when Face Sets will become favourite tool of world of Blender. Possibilities I can think of right now, just for my art, ugh. I can also use Keymesh on it and paint face sets frame-by-frame to get really cool stuff.

In that case I’d say the more effective way of implementing these features is by moving forward the Masking Modes implementation together with synced selection & masks.

Any addon that is using workaround data like material slots or vertex groups needs to update their code to use the .sculpt_face_set attribute instead.

For creating materials I’m not convinced. You’d have to laboriously create the face sets first too, or any data that they have been created from like UV seams.
It would also potentially lead to a LOT of new materials slots. Likely more than needed.
Any already existing material slots and materials would likely be replaced.

That’s a good point! But in that case isn’t it better to convert the face sets to a Face Corner Color Attribute instead? That would be far easier to manage as one attribute.

Right now the reasoning why that’s not possible seems to be the same as for edit mode selections: These attributes are used for Tools instead.
Static “Named Attributes” are needed to be used in the geometry nodes modifier, since these won’t constantly change while using edit/sculpt mode.
But there seems to be the goal to support selections for geometry nodes operators because these are destructive one-time actions. The same could be done for face sets then.
I.e you make a new menu operator with geometry nodes, click on it, and pick a face set to run the operation on.

But there should also be a default menu operator to store the current face sets as a named attribute and vise versa. That would be useful for both storing face sets for later use and for using them with geometry nodes. :wink:

1 Like

I still think Face Sets method is much easier when you need a lot of materials. You can just pick Draw Face Sets brush and keep drawing, instead of having to change selection modes and clicking assign. In practice it is just easier and having that choice of workflow is good too.

Another good thing is that with face sets you can see previous selections with different colors. For example you’re selecting wrist and you need to know where arm material ended exactly. In Face Sets you just see it, in edit mode selection you either have to deselect wrist, select arm material, remember where it ends, select wrist again. Or you have to assign viewport color to each material you assign different from each other to visualize boundaries. This is in fact what I used to struggle with before this.

As for already existing materials, there can simply be a choice in the modal window or redo panel to rewrite materials slots or add new ones (in fact that’s useful I’ll add that to add-on)

Easiest way would be if we could have Face Sets overlay in object and edit modes too, imho, I don’t see reason why that shouldn’t be there. But yes color attributes might be good too. Two things I might not like about that is 1. you’ll have to switch Solid mode preview from Material to Attributes, which sometimes might not be good if you have other objects which are using material viewport colors, and Blender doesn’t support different preview mode for each object (shame tho). And second is there might be edge bleeding between colors

Hans already added Face Sets selections for Geometry Nodes, but as he said it only supports one-time selection for operators and can’t be used in procedural modifiers.

But Vertex Groups aren’t static attributes right? They can update real-time in Geometry Nodes. Can’t face sets share that feature too? I don’t know how vertex groups are handled internally, they’re manual selections but they also work for tools in weight paint mode and Tool selections are updated in Geonodes. Same thing for Face Sets would make whole feature much more useful and opens up another door for creativity in Geonodes.

Speaking of conversion, I would very much like to also have commands to convert Face Sets to Vertex Colors and Vertex Colors to Face Sets… Or do we have those already? :thinking:
Face Sets to Vertex Colors would be great to quickly create IDs for substance for example…

2 Likes

Do you realize how much slower it is to select heavy meshes in Edit Mode to add specific materials to those selections? With the Transfer to Materials add-on I can paint any face set I want in real time and press a single button for a fraction of the time that it takes to load into Edit Mode, select the mesh parts, and then assign a new material to said selection.

The fact that it also helps with using the Quad Remesher add-on is a nice bonus on top.

Either way, the main argument is this: if we can convert mesh data into Face Sets data through operators, then why can’t we do the same in reverse? Version 3 of Blender has been doing tons of work to make data be converted into different types; meshes, curves, volumetric, etc., etc. These requests are just an extension of what has already been done elsewhere.

So please, add more options for using Face Sets for other things, such as assigning materials, vertex groups, etc. Face Sets are a very powerful system and can be used beyond its current use inside Sculpt Mode.

2 Likes

Quad Remesher, from the ZRemesher dev - the actual remesher doesn’t run in Blender. Meshes are passed to and from it via FBX (I think) import/export under the hood.

2 Likes

Blender’s FBX exporter is the problem here, from what I can tell. It can’t export attributes, so material slots have to be used as a workaround. Admitedly, the quadremesher addon could be more user friendly by performing the workaround under the hood, and just having a “Use Face Sets” checkbox.

5 Likes

I doubt we’ll see another Quad Remesher update any time soon, but yes, a “Use Face Sets” option would be greatly appreciated.

Didn’t know that… damn what a bummer though.

Yeah, Blender’s FBX exporter is a bit… special. FBX is closed source, but there is an official FBX SDK that is used by all other programs to provide import/export capabilities. Blender can’t (won’t?) use the SDK due to reasons I’m not clear on (conflict with license? Refusal to use closed source?). So they had to reverse engineer the whole FBX format and write a custom exporter in python :open_mouth:

3 Likes

There’s a developer actively working on FBX I/O add-on recently. (He did lots of speed-ups, fixes, and updates to support new formats for the existing attributes.)

There’s also active development for generic attribute support in USD I/O.

Maybe either of these developments can help solve the problem (either asking the FBX dev for generic attribute support or asking the QuadRemesher dev to consider use of USD? Not sure if they are feasible though.)

4 Likes

Quadremesher actually has an option to convert face maps to materials but I imagine it’s only useful for remeshing low poly booleans from edit mode. I think blender needs to support converting face sets → face maps/uvs/materials etc too. Many people do start with a sphere in sculpt mode and not just model low poly or use a base mesh so it makes sense to support conversion from face sets.

I vaguely remember zbrush or mudbox or something else that allowed you to “paint with different materials” not just painting with colors. Am I remembering correctly?


In Maya back in the day when cleaning up a very heavy object I’d often need to save selection sets of faces separately from selection sets of vertices. Vertex Groups in Blender often don’t re-select the exact faces you wanted to save a selection of. I keep seeing blender devs saying nobody was using the face maps feature but I was definitely using it to save complex face selections that I wanted to re-select at a later date. It would be annoying to have to keep going to Sculpt Mode to make a selection via face sets and then convert that to something else and then go into edit mode to use it.

4 Likes

I’ll collect the use cases. I’ll see if this can be worked on sooner than later :+1:

The need for easier material assigning on complex and high density meshes is also very convincing! I could imagine for example a variation of the Draw Face Sets brush to assign new or extend existing materials.

9 Likes

ZBrush has a setting in the toolbar for brushes to enable material painting along with others such as colour, so yeah, you’re correct on that.

Yeah, I am a bit bummed that face selections were removed. I was hoping for edge groups to be added as well as to complete the feature set, but alas.

1 Like

Great! A material brush is a very good idea. :+1:

1 Like

@Julien_Kaspar Any chance you could pls ask the fbx developer if Use object origin when exporting from Blender to fbx is possible?
Would be very benefical for those of us exporting to game engines like UE5 or Unity.

3 Likes

Sure I can send it over to the Pipeline I/O team. Can you elaborate on what that option would do?

2 Likes

Man that would be awesome!

fbx export puts the objects origin to the Blender world center which is somewhat fine for objects directly centered but not if the object is off center.



Default cube placed off center in Blender, fbx exported and imported to Unreal Engine.

4 Likes

Thanks. Yeah, Harti explains it perfectly. With ‘‘use Object origin or pivot’’ when exporting, it allows you to export your assets without having to always place it at 0,0,0 or world origin in order to have the pivot at the correct position the same way you have it in Blender. :slightly_smiling_face:

2 Likes

Man latest module meeting notes are most promising thing I’ve seen so far. Thanks to Julien for commiting to it this much.

Finally painting is being worked on with finishing 3D Brush as a target, my bitching finally paid off. I used to say it would be done once Studio people will need it and turns out I was right. I knew this was coming as soon as they announced an impressionistic movie. So exciting.

I’m also very intrigued by Attribute Paint mode mentioned, didn’t know about that idea before.

As for our darling Face Maps, @Julien_Kaspar I don’t know if geonodes operators will be able to create material slots for face sets. And seems like exposing sculpt_face_sets is still debated, so I thought why not ship this little add-on with Blender, since users seem to need it (it’s definately better than waiting for Exoside to update Quad Remesher). I don’t think script can get any simpler than it already is, it basically converts one attribute to another (material slots, vertex groups or generic attribute) and saves the user hassle of doing it from python manually. If you’d want that and point me to the right direction I can maintain that script for as long it can’t be replaced by geonodes operators.

2 Likes