Patch with a SubD surface

Edit: This was split out from this discussion:

That’s a great result.
(but imho this is where SubD should have been possible to combine with Nurbs… For Rhino 10 maybe?)

1 Like

I’m not following, how would SubD make this easier? For just the patch?

Yes, making a SubD patch (in theory) would let you build any star shaped patch with out trimming if you could match this to the edge’s curvature and surfaces direction and curvature. And it would be adjustable as if you did any other complex subD branching (still in theory).

Stuff like this is easy to model in SubD and could be automated with the right brains behind the process. With some elmo-subd-friendly rebuilding and stuff…

Turbo sketch: (mind the gaps though)

1 Like

It might work for this isolated case, because the curvature in the direction of the adjacent surfaces is 0, but for the general case, I can’t see how this would be solvable with SubD’s, since SubD’s always have 0 curvature at the edges.

1 Like

0 curvature? Would that be the case even if the controlpoints were correctly positioned according to the connected edges surface curvatures?

Edit:
Yes @Gijs , I see that now, and I have wondered about that partly when modelling, but I never payed too much attention to how the model ends against the edges… Why is that? It doesn’t really make sense to me why curves need to be “SubD friendly” and add that extra point instead of SubD being Nurbs friendly… That does make me confident that a few papers down the road someone would figure out how to make SubD and Nurbs work together smoothly.

yes, you can see this most clearly on SubD friendly curves. A 4 point curve has two locked points. Since these curves are degree 3, that means the curvature at the end is 0. On surfaces they are not displayed, but the same applies. If you make a SubD patch and turn on curvature graph, you will notice that all graphs end 0 at the edges.

2 Likes

I don’t know why that is. But this might be better for a new topic.

1 Like

Don’t ask me for a mathematical proof, but visually the following happens with catmull-clark subdivision:

Starting from the red control polygon to the blue curve
(the blue curve is a Rhino degree-3 sub-friendly curve with 4 + 2 hidden CVs).

With each subdivision level, the control-polygon segment length becomes roughly half of the previous length.
Now look at the first two segments of the subdivided curve: with each subdivision step, these first two segments not only get shorter, their angle also gets wider.
In the limit, as the segment lengths approach zero, the angle approaches 180 degrees.
Two segments with a 180-degree angle imply zero curvature.

this is the construction of the first subdivsion level:
at the initial controlpolygon, midpoints are choosen as new, additional points.(mid-new)
Only the new points are connected, the old points are moved half the way towards the midpoints of those connections.

the green curve is the next subdivision

hope this somehow explains it
kind regards - tom

3 Likes

You are so right Tom. I actually built a catmulc clark subdivider once. (And another subdivider that didn’t move any controlpoints, it just moved the new ones instead, it was a lot of vector working to figure that one out, but it became absoulute since SubD came along)

I just didn’t think SubD followed the same routine, but it makes a lot of sense, thanks for taking the time to explain that.

So I guess what we would “need” is a non catmulclark nurbs thing, but rather a NurbsD with degree settings for the control polygon instead IF this was to work as a patch for nurbs. (That becomes a lot of if’s though, but could render SubD a lot more useful in the future)

@Tom_P Thank you for the visual explanation — the SubD behavior is indeed interesting.

Yeah I get what you’re saying, and I think we’re kinda talking past each other a bit.

From a right now in Rhino point of view, I agree the NURBS solution is the cleanest and most reliable way to do this. Two blend curves, single span surfaces, and it works. No argument there at all.

What I’m trying to say is more of a theoretical / future thing. SubD is really good at handling star like topology and branching shapes without trims. If SubD edges could actually match curvature and direction to existing NURBS edges, a SubD patch could be quicker to adjust and easier to iterate on. Especially for shapes like this where the topology is the annoying part, not the surface math.

Right now SubD in Rhino just isn’t there yet, specially when exact curvature continuity matters. So yeah, for this case NURBS still wins. I’m not saying SubD is better today, just that this feels like the kind of problem SubD should be good at eventually.

1 Like

I see subd in Rhino more as a complement to nurbs rather than its own thing

But more refinement is always a plus

@Tom_P is exactly right here, the Catmull-Clark subdivision scheme forces the curvature of a SubD limit surface to be 0 at all its boundaries, in the direction orthogonal to the boundary edge. It works the same way with curves defined as SubD wires or SubD-friendly NURBS curves, as in your drawing: the curvature at the endpoint is 0, by construction of the limit surface / limit curve of the SubD.

That’s the only hand-wavy part in your argument, and it is still true even if not a complete proof. Saying this is a bit like saying you are taking the limit of something approaching 0 (the angle between successive tangents) divided by something also approaching 0 (the edge length) to be 0 (the curvature). For SubD’s end curvature it is true, but in general that wouldn’t be a proper proof.

Thanks for the nice drawings and explanation, I’m sure plenty more will find this useful when learning SubDs!

1 Like

I would argue that star points are actually a big pain point in SubDs, especially because the conversion to NURBS is inexact and complex at these points. So you won’t gain much by having your patch start out as a SubD, if you ever want to merge it back in a NURBS Brep later.

They can’t (unless you want to match a curvature of 0), as Tom explained, and as long as Rhino uses Catmull-Clark subdivision for SubDs that will stay true. Catmull-Clark is very much the industry standard for SubDs so this is not a problem of Rhino’s implementation. Maybe one day if we had trimmed SubDs we could something different but that is not for soon.

2 Likes

This was news to me, even though it kind of is obvious from the name, I just though you had generated your own nurbs version and adapted the name for market recognition.

If you were going to make a “nurbsD” that could have curvature higher than 0 at the edges, what would that require?

In example could one have an extra set of “hidden” boundry faces on a SubD to achieve higher than 0 at the edges, or is it a limitation on internal curveature too?

If/when trimmed SubD surfaces become available then, in theory at least, it should be possible to extend the SubD mesh and adjust the extended mesh to control the curvature at the trimmed edge. It is likely not be easy nor simple though. And it depends on trimmed SubD being available.

1 Like

The biggest news in the CAD industry will be inventing the 3-sided, 5-sided and 6-sided NURBS surfaces that could be matched to G2 to the adjacent geometry. That will literally speed up the work of many people by 10 times.

4 Likes