Have you ever wanted to have more control over the shape of a SubD boundary?
Have you ever wanted to match a SubD to some degree of continuity to other Rhino objects?
We’ve added MatchSubD in Rhino BETA.
What is MatchSubD?
MatchSubD matches a chain of SubD boundary edges in Position (G0) or Tangency (G1) continuity to another:
- Curve
- Surface edge
- SubD boundary edge
Why would you use it?
- For manufacturing: Making a transition to existing Nurbs Surfaces, e.g. matching to a radius.
- Matching a SubD edge tangent to another SubD or Surface edge chain.
- Matching a SubD to another SubD that doesn’t have a matching number of edges.
Examples
- Match a curve: subdedgematch_curve.3dm (2.6 MB)
- Download and open the file linked above
- Run the
MatchSubDcommand - Select the lower edge of the SubD and hit enter
- Select the curve and notice the SubD now matches the shape of the curve.
- Bike connector: subdedgematch_bikeframe_connector.3dm (822.2 KB)
- Download and open the file linked above
- Run the
MatchSubDcommand - Select the edges for the upper tube SubD (grey part)
- Select the edges of the red tubing. (Pick edges in the same order you selected the SubD edges.)
- Choose whether to match tangents.
- Complete the match
- Tripod: subdedgematch_tri.3dm (209.2 KB)
- Download and open the file linked above
- Run the
MatchSubDcommand - Select the edges for the upper tube SubD (grey part)
- Select the edges of the red tubing. (Pick edges in the same order you selected the SubD edges.)
- Choose whether to match tangents.
- Complete the match
- Repeat the above steps to match to the curve.
Want to try it out? Download the latest version of Rhino BETA
Tips and tricks
Some conditions will greatly help MatchSubD to achieve more accurate matches, here are a couple of tips to do that:
- In the choice of
MatchLocations, selectingEditPointsorKnotswill normally produce tighter matches. However, these options will only be available if and only if the number of edit points or knots in the target object is equal to the number of vertices in the selected SubD boundary. UniformParametersmatches the edges by equal distances in the parameter space. andClosestPointsMatches the edges by closest points in the geometry space.- SubDs can approximate best a limited subset of NURBS objects. Oversimplifying, SubDs “are” BReps made of degree 3 NURBS surface patches. Therefore, trying to match to a degree-7 polysurface is never going to produce a watertight match. Rhino commands like
MakeSubDFriendlyandRebuildcan help you create simpler objects before runningMatchSubD. - ReverseTarget option — flips a match that comes out twisted/inverted, allows users to interactively correct improper pick directions.
- Command history support —
MatchSubDcan now run with history: editing the target curve/surface/SubD afterward automatically updates the matched SubD, and multi-loop history (independent history per matched edge chain, e.g. both ends of a tube) Is also possible. - Interactive bulge handle — when
MatchTangents=Yesis enabled, an on-screen interactive handle lets users adjust the tangency “bulge” visually. - Pre-selection support — SubD edges can now be pre-selected before running
MatchSubD. - Locking vertices to protect a finished match — you can lock SubD control-polygon vertices, or limit-surface edit points, so later edits don’t disturb an area you’ve already matched; locked vertices are also respected by
SoftTransformand gumball.
Known limitations
The MatchSubD command will produce fairly inaccurate matches or won’t work at all in any of these cases:
-
For position matching:
- In the presence of edges with weighted creases connected to the matching boundary of a SubD.
-
For tangency matching:
- If all the faces next to the matching SubD boundary are not quads (i.e. if there are triangular or ngon faces next to the boundary).
- In the presence of any creased vertex on the matching chain of SubD boundary edges, with the exception of creased vertices located at the start or end of an open chain.
-
Workaround for interior-edge matching —
MatchSubDonly works on SubD boundary edges; to match interior edit points to a curve, useEditPtOn+AlignwithToCurve
We are working hard to reduce the size of this list by adding support for the above-mentioned cases ![]()
SubDs have zero cross-curvature at the boundaries (at least the Catmull-Clark SubD type that Rhino implements). Therefore, curvature continuous SubD matches (like in the MatchSrf command for NURBS) are not possible.







