Blending surfaces in 3 directions

Hi all,
I got into a tricky corner where I don’t know how to close the surfaces as it is going in 3-direction.

Ideally, they should all be tengental on all sides of the surfaces.

I tried patch, sweep2, blendsrf, networksrf and all don’t really work.

Could anyone please point me in the right direction? It could be GH direction too…

Thanks in advance.

File attached.

260515_Surface.3dm (223.6 KB)

260515_Surface 9.3dm (606.1 KB)
With more work it can be improved, using BlendSrf and Patch in Rhino 9.

thank you @brvdln i see , adding those two helps resolve it a lot! very smart.

First off, change the mesh settings to “Smooth and slower”;

Don’t use super bright material and object colour, because they make the visibility of the control points more difficult. Use appropriate display modes instead;

Avoid building new models 144 meters away from the scene origin. Instead, build them near the center of the scene and then move them to their planned distant position;

Next, make sure to use clean surfaces with the minimum spans possible;

Show the control points of any surface that’s not a true fillet and run the ! _Weight command to check if their weight is exactly 1. If the value is different, set it to 1 to avoid any further issues with matching the surfaces;

Since your model has trimmed surfaces that will generate issues with the matching, use the ! _RefitTrim tool, then check again if the control point weight is 1 (fix if, if it’s not 1);

Use the “Edge continuity” tool to check for tangency between the surfaces. If there is any deviation, use ! _MatchSrf with the following settings:
Distance: 0,01 units (millimeters)
Tangency: 0,1 degrees

my surface styling skills are a bit rusty, but that was an interesting piece to think about.
this is how I would approach such a thing the old school way:

  1. topology check:

by adapting this little detail you change the (nurbs) rules to your favor.

also the second neighbouring polysurface with the fillet(edges in pink below) could then be one continuous single surface for better matching.

  1. tangent space extension:
    matching&blending isocurves (yellow) and manually filling in (blue). Basically the aim is to restraint possible surface deviation into controllable compartments with minimum crossections. the right spacing is important and not perfect in this example.

  1. networkSurface:
    (maybe) low tolerances for manual tweaking control points and precise matching later
    now that there are 4 clean edges to match. >matchSrf (multipleMatches)

NurbsCorner.3dm (256.4 KB)

Thank you very much Bobi! really great tips!
Learn new commands already!

Thank you @dk2079 !
Very clear steps!
The result is what I am looking for.

I will go ahead and try this method now.

Many of your common surface boundaries are not tangent, and two curves and the surface in between are overly complex. Before attempting to surface that 6-sided region, I would simplify the model and make the neighbouring surfaces tangent.

thank you Lagom, may I ask how do you check these degree?
I think it is a very good tool !

Exactly the reason why I wrote my post above regarding the need for clean surfaces and following a few other good practices for achieving proper NURBS modeling.

In my opinion, the Rhino users must be taught to avoid overly-complex surfaces consisting multiple spans. Milti-span surfaces are the number one enemy to NURBS surfacing. Unfortunately, some of the official Rhino tutorials actively encourage the new users to rely on “Network surface” and other multi-span surfaces for the sake of finding a quick solution, instead of looking for a proper, cleaner result.

The majority of Rhino tutorials that consist 3dm scenes for training (Help > Learn Rhino > Tutorials and samples) were made two decades ago according to the limited tools in the older Rhino versions, and are by no means representative for the modern Rhino 7 or Rhino 8 that utilize lots of improvements compared to Rhino 2 or Rhino 3. Also, most of these 3dm sample models consist blank layers that further confuse the beginner Rhino users.


For example, here is the mighty PengunBrand.3dm file.

  1. It has 2 layers that are blank (“curves” and “suface”);
  2. The blank “curves” layer is set active for no obvious reason;
  3. There are 3 unnecessary surfaces left behind the arms and the tail, too;
  4. The blend surfaces used to connect the arms with the body use the old type of automatic creation that was suffering from the limited capabilities of the “Blend surface” tool prior Rhino 4 (the latter added adjustable handles);
  5. The scene tolerance is set to a very coarse “Angle toletance” of 3 degrees, which leads to poor matching, unwanted visible crease lines and general frustration of the user regarding the quality.


The starting blank scene after opening Rhino also has too coarse settings. The angle tolerance must be set to 0,1 degrees instead of 1 degree. The display precision by the mouse tooltips must be as precise as possible instead of 1 mm, 0,1 mm or 0,01 mm. This helps with detecting unwanted deviations before it’s too late, especially while moving objects to a new location or snapping to other objects.
The render mesh quality is set to “Jagged and faster”, which made sense 20 years ago due to the limited hardware at the time, however, 99,9% of the users own a 100 times more powerful PC nowadays, so the default setting must be “Smooth and slower” or another custom setting.
Of course, those who work with huge scenes with buildings could use less precise settings.


Here is what I use for my modeling purposes (cars, product design, toys, furniture, tiny models for 3d printing, etc).

Large Objects - Millimeters.rar (100.2 KB)



In 2025, I had to start providing Rhino courses (not for jewellery, not for shoes, not for architecture, not for ship/boat hulls), so I first waded through 20 years of comments made on this forum by quality users who know what they’re talking about, and integrated what I know from Alias, Catia, etc., to collect essentials for beginners in a thread that became some sort of hidden unofficial tips and tricks page. I am using that in courses to good effect, to bring trainees up to speed within two weeks.

However, producing proper industrial design or transportation design tutorial videos with matching learning materials takes time (= money), and I would say that in the era of “everything must be free” nobody wants to pay for it. That said, there are still various Rhino YouTube tutorial videos around that are solid and thus rather useful for beginners (if they are willing to put in the time, and willing to learn the NURBS essentials pertaining to curves, surfaces, continuity, and - above all - patch layouting).

@adrian.yiu To evaluate G0, G1, and G2 continuity, use the edge continuity tool. First, bring your curves and then surfaces in order. Only then it makes sense to have a go at this most peculiar corner.

I read the tips written in your link and they seem like a better help topics than the official ones that come in Rhino. However, there are 4 essential tips that I will explain here and hopefully you can add them to your page, too.


  1. Avoid using weighted control points (default fillets with degree 2 are an exception) on your surfaces, because they massively destroy the ability of Rhino to match properly. Certain commands (“Rebuild”, “Change degree”, “Refit trim” and “Match surface” if you use the option to preserve the opposite end and that forces Rhino to add extra control points there) sometimes will secretly change the control point weight from 1 to something like 0,0000017, leading to damaging your modeling intent with no warning at all. Always show the control points and check their weight with the ! _Weight command after using “Rebuild”, “Change degree” and “Refit trim”. This could save you lots of time and hassle with secretly damaged surfaces.

That particular bug is explained deeply in this post:

While this bug is still not resolved, Rhino 9 WIP has a welcome change in this regard - it will render all control points with a modified weight as diamond-like squares, while the control points with a default weight of 1 are either circular or square (depending on your preference).


  1. Matching with the “Match edges by closest points” option is handy sometimes, but there ia a much better approach. Simply split the target edge preliminary and don’t use the “Match edges by closest points” option at all. If you evaluate the surface continuity with the “Global edge continuity” or “Edge continuity” tools, you will notice that avoiding this option actually helps to achieve a better continuity.

  1. There are a few bugs with “Blend surface”. For example, if one of the surfaces is the simplest possible degree 1, “Blend surface” will fail to deliver a clean result and instead will produce a surface with multiple spans. Even if one of the target surface edges is a lower degree than the other, the blend surface will still consist a greater number of unwanted spans. The “Interior shapes” option in the “Blend surface” pop-up window become inactive, as well.

However, other tools such like “Loft” and “EdgeSurf” are not affected by this bug, so (until the developers still try to fix the bug) you can use these as a replacement for “Blend surface” depending on the case.

You can test this by trying to build a blend surface between surface edges 1 and 3, or edges 2 and 4 in this file:
STRUGGLE BUS (test it with Blend surface).3dm (2.0 MB)


  1. The ! _EdgeSrf tool is very sensitive of the order of picking the target edges when you build a 4-sided surface by 3 target edges or curves. To achieve the desired result, you must pick the middle surface first, then pick the remaining two edges. I call this a “2-1-3 order”). If you pick them in a different order (1-2-3 or 3-2-1), Rhino goes crazy and builds a strange triangle surface instead.

Now that you pointed it out, I noticed it too. But now that I know it, before, when I enabled the control points, I never really paid attention to it and, as a whole, all the control points looked round to me.

Do you think it would be possible to customize them, for example by making the control points bigger? Or maybe it could be useful to display control points with a value of 1 in a specific color — white in this case — and the control points that deviate from the value of 1, either higher or lower, in different colors like red or blue. It could maybe be something worth suggesting to the developers.

I manually modified this point with a higher value, but if I zoom out, I don’t really notice that it has become a diamond shape. It’s barely noticeable, and only if you already know what to look for.

A few months ago, I proposed various ways to indicate the modified weight of the control points, including different size, different colour and different shape. The developers did a nice job by using a different shape for those. I would prefer to have the option to display the “bad” control points by another colour or noticeably bigger size, because the diamond shape is hard to distinguish by people with bad vision (like me) or if the control points are small, but the developers were not interested in these extra customization options. But I’m glad that at least they listened to this request and made the “bad” points like diamonds.

Ideally, the “bad” control points should be simultaneously diamond-like shaped, coloured in some alarming colour by choice, and slightly bigger than the “good” control points.

P.S. Red colour for the control points must be avoided, because colour-blind people don’t like tiny red objects on a gray or green background. Light blue is a more appropriate colour.

@Gijs Well, then we should bring it up again, because now that I know it, I think it’s important that the point changes color and that it should be possible to customize the size of the control points.

For example, there could be an option to change the color when a control point deviates from the value of 1: blue if, for example, it becomes 1.5, and red when it goes below 1, for example 0.5.

In addition to the current ability to distinguish a control point with a value different from 1, it could also be useful to allow users to highlight the control point icon more clearly, for example by increasing its size so it becomes more visible in addition to the color change.

1 or 2 pixels bugger than the regular round control points should be enough.

Anyway, as you said, the ability to customize the colors freely would be the best option.

For example, if red can be uncomfortable or not easily distinguishable for a colorblind person, it would be useful to have a command with a dedicated panel that also allows users to freely choose the color they want to use.

@Rhino_Bulgaria wooooohhh!! I took a control point near the edge and set its value to 10, then I tried it with MatchSrf. It’s crazy how badly the points behave when the value is anything other than 1. The surface control points seem to go completely insane.

Yes, messed-up control point weight is a huge enemy to the NURBS surfacing in Rhino. I still can’t make a working macro to set an automatic point weigh value of 1 for the surface that was just modified by the “Change degree” tool.

At least I learned how “complete mess” translate to Italiano. :alien_monster: