SubD anomaly in polygonal mode

In smooth mode the SubD does not give problems; on the contrary, in polygonal mode the meshes all tangle. I don’t know where the problem is.
SubD toogle error.3dm (87.8 KB)

(Furthermore, in the previous version of the Wip the “SubDThickenCurves” command worked better: now, in the last wip, the command does not create the nodes in the intersections of several curves).

Hi @davide76, I don’t see the problem with the shape in your image and file - the control polygon is twisted, but topologically valid. It looks strange because the quads are highly non planar and being rendered as flat triangles.
The SubD keeps the twist, but smooths the surface out.
Sometimes to get a SubD of a certain shape you’ll need a make a control polygon that self intersects, and this isn’t a problem, just like the control polygon of a NURBS curve might be self intersecting even though the resulting curve isn’t.

About the SubDThickenCurves question - I’m not sure I follow - can you post the file?
Currently if curves intersect, but are not split at the intersection, no node will be created. This has been the case since the first version, and hasn’t changed in the last WIP.
I am changing it for the next release though, so that curves will get split at their crossings.

This happens. The command no longer generates the intersection node between the two curves.
In the previous Wip the command correctly generated a node, going to merge the two sections of pipes. Now they are detached, as if the command no longer recognizes the presence of an intersection between the curves.
Anomaly SubDThickenCurves.3dm (113.7 KB)

Here’s what those curves will give you in the next version:

1 Like

It was what I meant. It worked before. Not now! But I understand that this, like many other commands, are tools that are adjusted during construction …
Thanks for the reply. :wink:

Nothing has changed yet in the releases, so I suspect the only reason it worked before was that with the curve you were testing with, the discretization just happened by luck to coincide with the crossing.
From the next version though it won’t have to rely on luck like that!

Why is the pipe itself broken?

The current version is adding unwanted edge loops near the start and end of the straight segments the curve is discretized into.
The new version will give you this result instead:


To complete the command it would be necessary to configure different radius along the curves and, not least, the construction history that allows you to modify the pipe by changing the curves.


The display in both surface (creamy) and polygonal (crunchy) is correct The issue is the SubD control polygon has a pretty severe twist in it (some quads are overlapping bow-tie shapes).

Surface (Creamy)

Polygonal (Crunchy)

One additional issue is that Rhino uses OpenGl to render viewports. All quads in any context (including meshes and subd polygons) are rendered using two triangles. When a quad is twisted or dramatically non-planar, what you see can be dramatically different depending on how the triangles used by OpenGL are selected.

This final image shows the the control polygon of the highlighted subd face. The 4 points are coplanar, but the order is twisted. It also shows the two possible ways to break that quad into 2 triangles.


1 Like

Excellent explanation, I hadn’t thought of that!
It is a pleasure to speak with a developer of your caliber!
Thanks Dale :wink: