Subdivision surface in Blender 2.8 behave different compared to Maya and ZBrush

As far as I can tell, it does. Blender doesn’t really have anything to do with this, it just sets up OSD options (and not all of them are exposed in UI) and gets whatever OSD calculates.
This was most important reason to use OSD, to not have to maintain algorithm implementation, but to use industry standard instead.

2 Likes

to see the difference of the UVs you have to display the modification in the uv editor, there is an option somewhere.

Sorry for late response.
What you are asking about, is, in OpenSubdiv terminology, Face Varying Data (FVars) interpolation modes. It’s quite easy to do in the middle of the mesh, but issues start to arise on the boundaries (and this, I think, is root cause of your problem), so OSD has six modes controling this, Blender only exposes 3 of them (UV drop down). I can, somewhere next week, prepare a build exposing them all for testing, from code point of view enabling them is trivial.
Issues with this, are potential bugs caused by different ways OSD interprets FVar input buffers, this was main problem with disabling limit surface. And second issue is, if there are to be exposed, I don’t want to be the one having to figure out artist-friendly labels and descriptions for those different modes :smiley:

1 Like

The option to enable access to these other modes could be kept in the Experimental tab for now if bugs and names are a concern.

1 Like

If you use the Crease functionality to assign sharpness to edges, a higher Quality value will yield a better result.

1 Like

Thanks to point me for this.
Made a comparison with other apps.
Cube with OpenSubdiv level 5 and Crease top Edges on 0.3:

So blender has different, or I’m doing something wrong?
P.S. need I to hide this pictures?

1 Like

Interesting. It seems that Blender’s Crease value deviates from the other OSD implementations. I’ve noticed before that the crease strength increase does not seem to be linear in Blender.

What happens if you double the Quality to 6 in the Subdiv modifier?

nothing has changed

1 Like

Blender squares sharpness value, before passing it to OSD. Try using sqrt(0.3) = 0.547 in Blender, and see if it matches.

1 Like

I think I found what is problem.
Crease did not respect SDS level.
So if we have Crease 0.3 and SDS level 3 it should look like this


Sharp Edges, so normal OpenSubdiv calculate Edges with 0.3 crease and SDS level 3 as sharp.
If SDS level would be 3 and we use crease more then 0.3 nothing happen cos it calculate as 100% sharp for this case.
If SDS level would be 5 then sharp edges start from 0.5 crease.
I hope you understand me…

Blender have a bug or wrong calculation in this situation.

Yes, it match.
But should it be 0.547 or as other apps 0.3 for SDS level 5?

From my point of view it should look like OpenSubdiv standard values.

No idea, the fact is that Blender does additional manipulation on the value, and other apps apparently do not.
As for why Blender does it, I have a theory. Blender internally stores sharpness as 8 bit unsigned interger, so you have only 256 distinct values. Taking square has effect similar to gamma correction, it gives you more resolution on low end.
But I need to ask @sergey about this.

2 Likes

I exported as FBX with 0.547 and import to Modo, and it match 0.3 creases in modo.

But this is not acceptable because if I think I crease to 0.3 in blender I expect to see 0.3 in other apps…

At the moment I model completely in Blender, and would be use other apps for converting for customers.
But I see that I need to recalculate all my creased edges in blender to match in other apps…

2 Likes

Here we go


I cant post here screens from other programs, but it seems blender calculate differently

and this is other soft

As you can see, closed geometry have no corner stretches, but open like a plane - have.

Example 2:


other soft

Any thoughts about this?

From what I understand, it works as designed, “corners” in this context mean corners in the mesh topology, not UV map. So if you have closed mesh, and you create corners in uv map by seams, those are not really seen as corners by opensubdiv.

But why its called UV Keep corners if it does not actually keep it? It should keep UV corners not mesh.

And this is not my wish, this is how other programs work with open subdivs.
I don’t know how, but they keep UV corners sharp…
Just test it on simple cube in other soft.

Examples



and that’s why we have this stretches


and other soft

Example


Added:
another thing if its a plane like mesh

Example

I can’t understand how it works, what should be sharp.
Maybe if mesh “closed” then unwrapped UV corners would be sharp, if mesh “opened” and some vertices have more then 2 edges, then this corners would be smooth, if vertex have only 2 edges then this corner would be sharp.

2 Likes

I see no one have thoughts about this issue…
So we need to be carefully with unwrapping now and unwrap islands without sharp corners to prevent unexpected stretching.
It’s good if you work entirely in Blender, and you do not care about exporting…

I also stumbled over this - I feel it should work as you describe but yeah… who knows whats going on :smiley:

I need to clarify, this issue (as I understood) do not related to the SDS patch by @postrowski5
it’s a UV bug/incorrect calculation since 2.8+

Will hope the developers pay attention to this.

Because UV unwrap in character modeling usually done with make seams in “closed” geometry, and this corners become problem when you paint texture in blender and thought it’s ok and then export in other app…

1 Like

Not sure if it should be in one thread but

Now in 2.93 alpha we have new UV Smooth options (D10111).
And so far with this option
2.93 alpha UV Smooth
it match other 3d apps I used:

Added: Found out that other apps are used by default.

other
1 Like