SubD inconsistent flat mode shading

Why do these areas shade differently in flat mode? The geometry is the same, yet it displays different. It’s a bit annoying because I see this and think it’s a problem - makes me think my part isn’t symmetrical / there’s a topology difference. Especially on more complex parts - I need the flat mode display to be reliable / consistent.

flast-shade.3dm (68.2 KB)

I guess triangulation of these quads is somewhat random, maybe @pierrec knows if this can be improved.

This is just how we have been displaying the non-planar faces of SubDs in box mode (flat SubD display), when the display’s flat shading option is off. For the display, everything has to be split into triangles, so we need to chose how to split each of these quads. But this is just display and doesn’t change the geometry of the SubD limit surface at all.

I don’t know specifically why these two almost identical polygons are triangulated and displayed differently, but I see it’s been like that since at least Rhino 7. Changing how the triangulation of display meshes is done is a little bit tricky because it impacts selection on the these objects.

It looks like a plain mesh version of that SubD (ExtractControlPolygon) triangulates differently, maybe I can get both of them to do the same thing. See RH-92137 SubD Box mode display: split all quads “the same way”, like meshes

Flat shading a display and using box mode for SubDs are independent settings, you could try toggling _FlatShade to on to see if you like the results better, and it’s also an option you can change in the View settings. It will triangulate and display these two quads the same way:

But you might be disappointed when you switch back to smooth SubD display mode and see the individual faces of their display meshes clearly:

1 Like

Oh also I forgot to say that Blender also displays the control polygon with the asymmetrical quad splitting:

These quad splitting issues often end up being “make a choice between having a good display in case A but bad in case B or bad in case A but good in case B”. Maybe Blender decided that it was better to display this mesh “wrong” so that more meshes would have a better display.

2 Likes