Dyntopo, are skinny faces causing problems?

Adding back old behavior (even as an option) is really weak AFAICS.

I first want to see a case where the new behavior doesn’t work well.

While looking into this patch I made all sorts of tests regarding geometry distribution, much more visible then this patch.
each one could be an option and may have some subtle benefits… but it gets ridiculous.

Rather then add back a method with known problems- Id rather try improve the modified method, if possible.
Adding an option in the UI is OK… if no better alternatives are available.

The new method is far nicer if you’re starting with low poly geometry, but it does pose problems creating sharp details, and generally makes the brushes feel a bit less responsive.

The skinny triangles mostly happen when tesselating large low poly areas not directly under the brush. Perhaps it might be possible to use the new method for the large areas outside the brush, but not try to prevent skinny triangles directly under the brush?

I vote in favor of this patch; its a great improvement over the old behavior .

It creates much cleaner details and makes it easier to polish or even out things easier. I tested this patch with mesh primitives and existing sculpts and haven’t noticed any loss in performance or stroke responsiveness.

It also compliments “Constant Detail” subdivision method better in my opinion.

It does seem “Detail flood fill” would benefit with a similar approach , instead of subdividing a triangulated mesh maybe we can use some kind of edge detection and just subdivide the rest (Cavity mask / Pointiness). This would prevent breaks in the edges and corners ; some kind of selective subdivision.

And for users who think there is problems creating sharp details / creases / pinching ; could you test with “Subdivide” method instead of “Subdivide Collapse”. Thanks.

Thanks Ideasman42 , its an awesome patch.

wow, thanks! looks nice :slight_smile:

I have to agree with Campbell on no extra options if not proved to be needed. It’s really better to explain properly, with pictures and a reproducable case, why the old method is better or how it fails. A “feeling” is not enough, show a model with pictures where, for instance, you need much more detail with new method than old method to define a shape or crease. Personally I can see the difference but is it really better or just a matter of conditioning?

The new method seems to be great, well done !

yap. tested it too. much better. the reason why i never use “Subdivide” option that much before. now it’s cleaner. multiple details in tight areas is going to have much nicer topo and as been said easier to refine/polish.

OK got it. Subdivide edges instead of subd collapse does the trick for the crease brush.
What about my proposal now?
To have all these subd methods per brush and not globally? What’s your opinion?

I do understand why you would want for non-unified subdivison settings, however in my opinion it will create more problems than it solves.

The reason is; the type of subdivision (Relative - Constant) or the refine method of subdivision (Subd - SubdCollapse - Collapse) should define the workflow (freeform - controlled) or sculpt type (organic - hardsurface).

If we make it brush specific (subd settings per brush) then it will be a kind of brush refinement not sculpt refinement. But brushes can be used for multiple purposes by changing stroke - texture/mask - curve settings. So I think these subD settings need to be set based on the context of the workflow.

Long story short in my opinion the current global settings make the user aware of the workflow . However there are missing shortcuts that need to be added by default , for refine method and subD type.

Maybe they can be optional and set from the brush header menu ( There is unified strength and size options there ).

I do wish there were UI indicators on the 3d Viewport though. For sculpt subdivision type - method , symmetry & lock and numeric brush detail size .

Anyway that’s what I think on the subject.

So looks like we can forget about keeping the old subdivision scheme?

For me, yes ! The new subdivision sheme is good.

So looks like we can forget about keeping the old subdivision scheme?

I tend to agree.
After some tests, yes. It works for me as well.
And
@yii7
+1

:smiley: Looks that way.

@ Michalis : +1 to you too. :slight_smile:

It is not because an option is brush specific that it cannot be changed according to the context.

I agree that Type of subdivision should stay a general setting. But IMHO, it should not force refine method to be the same.We are not in the case where each Detail Type Method offers specific Refine Methods.
They are providing same exact 3 refine methods.

I mean the main reason why you would change Detail Refine Method is because you want to use another brush.
We would use most of brushes with Subdivide _Collapse method, most of time. We will never use crease brush with a collapse method.
Of course, we can hesitate to use a snake hook brush between a Subdivide _Collapse method and a Subdivide method according to workflow. But letting user creating variations of brushes for contexts he often encounters is a valid answer.

Personally, I like michalis’ proposition. But perhaps could subdivision mode be made a Unified Settings option? I.e. so that by default it’s per-brush, but could be made unified for all brushes with a checkbox in Options tab if one so wishes.

Its debatable that we will “neve” use one kind of brush with a specific subd type or refine method. For general purpose it may seem using crease with “collapse” serves no purpose, but it might be the exact use case with one user.

So the default crease brush can change by changing attributes like stroke - curve - texture / mask - refine method - subd type; for example you can create a crease brush with hexagonal mask - spray stroke with jitter - a zig-zag curve (crazy).

This combination of a brush is its own “brush” context. On the other hand what kind of result you would like to achieve on the surface is the “topological” context.

So if we call this brush “Crazy Hexagon” . We can use the same brush on different topological purposes (subdivide or collapse) simply by changing the subD type.

But if we make the subD setting per brush. We would have to create at least 2 other variants > “Crazy Hexagon SubD” & “Crazy Hexagon Collapse” . That means there are 2 brushes doing the same thing with just different subD settings.

in my opinion this is bound to get out of control and start other usability / UI problems.

For example : Without having any sub-D related settings for brushes, Zbrush has so many brushes that it needs a table (brush indexer) to be able to present them to the user. But even that wasn’t enough to contain the variants over the years so they have an asset browser (lightbox) which holds a seperate folder for all custom variants of brushes.

Its a mess.To work fast you have to create a custom ui on zbrush to solve this problem.

Smooth stroke. In Stroke properties. With this latency thing.

Ah i see ; I answered your question without knowing. Like I said shift (smooth) applies the current selected brush’s curve and stroke settings.

For example :

In the “Smooth Brush” if you enable smooth stroke. It uses smooth stroke.

If switch to use “Draw Brush” and if it doesn’t have smooth stroke enabled, it still won’t use smooth stroke even you press shift.

They are different brushes. With different settings.

As far as I can guess, when you press shift the code swaps the tool; something like this :

bpy.data.brushes[“Crease”].sculpt_tool = ‘SMOOTH’

Indeed so.
However, when you have a draw brush (by example) with “smooth stroke” enabled, shift (smoothing) will also work as “smooth stroke mode”, though smooth brush alone still has a non smooth stroke behavior.

BTW, I think I won’t keep my new avatar image. Too aggressive, LOL

I think that there is no argument valid that can justify to use a Collapse method for a brush which have for main feature to pinch faces.
“I want smaller close faces but don’t keep or create smaller faces.”
Pinch brush can be used with a large radius that justify that.
But you will not use a crease with a large radius, if you don’t want to destroy details that you are trying to emphasize with crease.
Anyways, making SubD refine method a per brush setting does not prevent people to use Crease with a Collapse Method.

Yes but you also have these abilities with other brushes. If you don’t use Crease to use its pinch slider, you can use default Draw brush like that.

[

It is not because you can do it that you are forced to do that.
But the setting will not disappear of UI because it becomes a per brush setting. Are you saying that you never modify brush settings according to workflow ?
If you don’t want to create a custom brush you can still adapt the setting at the moment when you need it.
Sculpt Plane is a brush setting.
I would probably adjust a plane offset more often than change subD refine method if it was a per brush setting.

[

I am just talking about making one setting per brush in order to avoïd to check SubD Refine Method each time you access default crease.

I am not requesting for hundreds of brushes in startup.blend.
Brushes management is the responsibility of users.
Mature users are not stupid at the point to put hundreds of brushes that they don’t use in their startup.blend.