Matching SubD to surfaces

After using SubD more I’m realizing it would be great to use it in combination with other kinds of geometry - especially surfaces and other imported cad files.

As far as I’m aware this isn’t currently possible - SubD cannot 100% match a given input surface / curve. Is this something that’s coming in the future? What about matching continuity to the given surface? Especially in a way that lets the Subd > ToNurbs surface match the input surface (though some minor surface manipulation / matching there might be fine.)

1 Like

see this thread-
coming in v9

1 Like

Some of these details are in the SubDMatch thread that Kyle linked to, but it doesn’t hurt to go over them again. TL;DR: SubDMatch lets you do almost everything the geometry of SubDs allows for, but the geometry of SubDs has much stricter limitations compared to general NURBS geometry.

  • SubDMatch (available now in the WIP) lets you match the boundary of a SubD to a specified target curve or surface boundary. It supports position matching (G0) and tangency matching (G1) in some cases.
  • The shapes that can be drawn with a SubD are fundamentally more limited than the shapes that can be drawn with a NURBS, and even more of these made with (NURBS-based) Breps. This is not something that we can really change, this is how SubD surfaces are defined mathematically, in Rhino and other software.
  • Generally speaking, the shapes you can make with a SubD are that of a collection of NURBS patches that are: non-rational (no weights), uniform and single-span (knot vector is always [0, 1]), degree 3, C2 connected to each other (interior SubD edges), with 0 cross-boundary curvature at the boundary (boundary SubD edges).
  • For position (G0) matching, this means for example that a SubD limit surface cannot match a circle (are any other conics) exactly. But with enough vertices, the maximum distance of a SubD edge to a circle goes down very quickly – 8 vertices is pretty good, 12 vertices is almost indistinguishable from a circle.
  • For tangency (G1) matching, there are similar limitation to how well a SubD can approximate an arbitrary NURBS. Also, SubDMatch doesn’t support matching a SubD with weighted edges (soft creases) to something else, but that is something we are hoping to implement in the future.
  • For curvature (G2) matching, there is almost nothing a SubD can do: it can only match surfaces with 0 cross-boundary curvature. This is why SubDMatch doesn’t have an option for curvature matching.

This one is more tricky. ToNURBS on a SubD tries to match the shape of the SubD limit surface as exactly as possible, it doesn’t know or care about what the SubD is trying to approximate. If your final product is a NURBS surface, it will be easier to use MatchSrf, Patch or the other surfacing commands to work directly on that NURBS surface, either after converting the SubD to a NURBS or directly starting from a NURBS.

3 Likes

Hallo,

I tried using SubDMatch, but didn’t get the result I expected. The surfaces it creates always flip. It’s as if I were creating a surface with Loft and one of the lines was pointing in the wrong direction.

Hi @noetzig ,

Use the Reverse Target yes/no option to fix that.