G2 Matching of two surfaces

Hello, I am new to Rhino (without any classes or training) and surfacing, but not so new to CAD modeling. I cannot find much documentation on the issue I’m having. Basically, I have modeled the rear leg and the seat of this chair as separate bodies, and would like to merge them with G2 continuity. I have set the guide curves up to have the same tangency at their boundary. When I run zebra, there is a discontinuity all along the edge where they meet. The last curve of the network surface is the intersection of the seat surface and the last plane of the network surface.

Normally, I would be accustomed to setting an end condition of the network surface (leg) to match curvature of the trimmed seat surface along their mutual edge. I can’t select that constraint. If I try matchsrf, it creates weird joggles and other discontinuities (red zebra). Trimming them back and using blendsrf runs into the same issue.

I’m curious if my fundamental mental building blocks of the model are wrong here, and I need more continuous curves to build the chair all as one, or if there is a more effective, automated way to blend these two surfaces?

Thank you

A couple of comments to start with…

Don’t use Networksrf for large important surfaces, it’s junk, basically.

Don’t do the tiny edge fillets until the bigger stuff is done.

Rearrange the surface topology so that you’re connecting different logical ‘faces’ of your model at the virtual ‘fillets’ between them instead of right in the middle.

Thanks Jim, that all makes sense, and is what I tried to do initially. You can see in the teal and gold picture - I have a full seat surface, and then the cross section and guide curves to build out the leg. How would you normally go about blending those two structures?

What makes network surface junk, just out of curiosity? I tried surface from edge curves, lofts, etc, but all of them seemed to lack the control required.

this video series is a must watch if you are interested in doing high quality continuity based modeling-

The surfaces are far too complex and smell of “notwork surface” usage. As a novice, you want to learn proper NURBS surface modelling from the start, considering some of the do’s and don’ts, preventing you getting accustomed to “working-but-not-really-working” so-called “quick-fix” tools. It would be good to share a .3dm file, so forum members can provide concrete suggestions.

“notwork surface”:laughing:

It is what it is :zany_face:

Your surfaces are really overly dense, which makes trying to make them flow smoothly really hard. For a few reasons:

  1. Aligning 2 rows of points to get technically “G2” doesn’t mean anything when it’s 2 out of a hundred
  2. Dense surfaces may have micro-waviness to them
  3. Each surface creation “tool” like sweep or NetworkSrf has an internal logic that is only going to produce a nice fair surface if what you want and your input lines up exactly with that logic. Well except for NetworkSrf, surfaces will simply “sag” in between the curves it’s not for doing large areas.

Myself, trying to do everything according to some sort of Platonic ideal approach, both the seat and the leg would have been just brute-force point-edited from basic planes or extruded curves. Probably with a separate “fillet/blend” surface to connect them. Basically all the basic surface creation tools 3D software has had since the 80s are only really good for sales demos, the better you get at this stuff the less you use them.

Hi all,

I’ve gone through everything you all suggested - thank you very much for the guidance. I’ve started to rebuild the model, and get the feeling I’m making mistakes with patch layout. As I continue to matchsrf around the patches, I feel like I have already reached a higher than reasonable degree for some of the surfaces. While they have decent continuity numerically, I can tell they’re not doing it in natural ways.

Any input on what I’m doing wrong here? I’ve experimented on quite a few patch layouts here, including bigger patches and then building in blends, but this one turned out the closest to acceptable.

Frequency Chair.3dm (7.1 MB)

Reminds me to a degree of a golf club (driver), where the shaft transitions into the club head. Therefore, I’d try a similar patch layout. You overbuild A and B as single span surface from well controlled (check with curvature graph, also regarding torsion) degree 5 or 6 curves. You likely already have the single span well controlled blue curve half way around the “club shaft transition”. Then you trim A and B with the single span degree 5 or 6 green curve, and “fill in” surfaces C and D, with single span well controlled section curves (purple). That way, you work with a patch layout where all surfaces have close to 90° “corners”, a prerequisite for simple quality surfaces.


Thanks very much for the reply - This has been going well, except for matching the “fill in” sections to the green trimmed edge. I’m duplicating the trimmed edge, rebuilding as bsingle span, then matching the fill in surface to closest points while preserving isocurve direction, and even as I continue to increase the degree of the surface or add knots, it’s not getting there on G0. Is there a better way to trim this edge that I’m not aware of? I’m just building a single span degree 5 curve - I tried pulling to the surface, and just trimming directly from the curve. Both give me a really messy edge that doesn’t want to be matched to. I also tried reducing degree of the trim curve to 3 to try to really simplify - still not getting to much lower than .017 on G0 without going crazy on degree.

Without a step-by-step video, or annotated screenshots, and foremost the Rhino file, it is impossible to say anything useful.

Sorry about that, I’ve attached the file and some step by step screenshots.

Single span surfaces, matched

Single span trim curve

Messy trimmed edge

rebuilt - maybe too much deviation here?

matching analysis shows same deviation G0

matchsrf, just G0

After matchsrf, not able to get there

Upped degree to 8x8, still not there. It feels like continuing to go up will just be chasing my tail. Something feels off in how I’ve built things.

Frequency Chair blends.3dm (8.0 MB)

Your initial curves, despite being single span degree 5, are somewhat wobbly, and some even have torsion, see their curvature graphs, and those of the surfaces. And that means that the surfaces you build with them carry over those defects, as it is the curves that determine the internal shape of the surfaces. And that means if you then Trim with a freeform curve, that the resultant trimmed edge will be even more complex, and Match becomes difficult or impossible.

I built the surface in question to a curve, having split the one you had, with EdgeSrf, increased the degree to 7 in the “difficult direction”, and then directly used Match with the OnSurface option. Then I used Trim to cut the surface with that edge. This way, apart from all other defects, you can build a surface with good G1 and G2 continuity.




Frequency Chair.3dm (5.7 MB)

Still, the control polygons/CPs have an ugly distribution, so that needs to be ironed out manually, see the pink lines showing the errors.