What's the principle of matching nurbs surfaces in rhino?



Especially in some conditions I want to achieve a continuous sum surface but leave each patch surface’s edge not continuous. because rhino’s match surface command with keep iso direction option on often can’t handle the result correctly. I’m just curious if i wanna match it by hand what principles or guidelines should I follow?

An example is described in my post yesterday, link @chuck finger it out in a calculation way.it’s very cool.to me it’s too hard to learn.

I heard some nurbs guys can work out the CV position and weight by construct auxiliary line.Dose anyone know it and can do some explanation? thank you.

How to achieve a nurbs quadball in rhino?
Helping Rhino3D is damage to Rhino3D?
Learning Resources for Designers
Multiblend in Rhino, how to do?

this was modeled in UG/NX,upper right part is done using round blend feature with “special blend at convex/concave” option on.the lower left part is done using round blend feature with “corner setback” control.
but the program automatically generated results has some zebra fault (corner setback part).

Problems making Objects watertight

in rhino by construct help-lines can get high quality bezier surfaces.


Helping Rhino3D is damage to Rhino3D?

even this

even after extendsrf adjacent surfaces still keep being continuous.

Helping Rhino3D is damage to Rhino3D?


the MultiBlend function of the plug-in Autodesk Shape Modeling 2014 creates such surfaces, if it is that what you are looking for? Have a look at

The introduction price for the plug-in is 371 dollar for the US.



this feature is very cool and useful, but i wanna know the principle.because i’m a rhino enthusiast,and vsr can’t handle all the conditions. like my 4th thread.


The n sided hole can also cover 3 edges? If you think there is a case it can’t handle, just let me know.

Unfortunately I can’t share a manual description of how to do it, our algorithm has to solve a bunch of equations for that. :slight_smile:



sorry,maybe I had not explained it clearly, take the model in my 4th post as example,to get such a shape I can’t imagine what the framework surfaces should be to let me use vsr fill hole.
and in this model each surface has the minimum CV point — 9.


hmm you need to study this. There are certain principles of course, for instance, the relationship between degree and control points.(I’m sure you can find them on line, or you may know it already) I believe, the masters of Rhinoceros understand the ‘principles’ behind it and know how to use them in real modeling world. I would say, if you are interested in, try to make A-Class surfaces. That’s the only way, believe or not.


I have a question regarding “Class-A” surfaces.
Take a look at this definition:

Class A surfaces is a term used in automotive design to describe a set of freeform surfaces of high efficiency and quality. Although, strictly, it is nothing more than saying the surfaces have curvature and tangency alignment - to ideal aesthetical reflection quality, many people interpret class A surfaces to have G2 (or even G3) curvature continuity to one another (see freeform surface modelling).

Class A surfaces can be defined as any surface, that has styling intent, that is either seen, touched or both.

Would you say that it is wrong?
To me it makes sense that tangency curvature can be “Class-A” in some situations.

It is from http://en.wikipedia.org/wiki/Class_A_surfaces


It’s correct!

Yes, like some images the user asdfsjal posted here, tangency curvature is Class-A surfaces that’s the special situation.


Would you post a Rhino file of how you constructed your helper lines? For me it’s a bit difficult to see from the images. I would like to see more and see the method you used.


Your construction looks very good. Do you mind to share this model?


I think this definition is not complete.
It should be added that use of single span bezier surfaces with minimal controlpoint count is the means to achieve the smoothest results.
One can construct nurbs surfaces that are g2 continuous to all adjacent surfaces, but will not at all be class A quality due to their complex multispan structure (rhino’s network surface produces such results)
The very smooth examples @asdfsjal has constructed manually are for sure all bezier surfaces.

This is no acedemic exercise though, what counts is the optical impression of smoothness and continouity of the surfaces. As you said in some (admittedly not too many) cases tangency continouity (g1) can be enough.



You right, Norbert. ( I didn’t know what to say with all the facts you wrote.)



I found this to be an interesting topic, since I am working on Rhino OSX without access to plugin’s like VSR to match up surfaces. The challenge seems to understand the precise control that the four inner CV’s have when they arrive at an angle on the tangent surfaces.

I made a similar setup, the tangent lines are somewhat different, all CV weights are 1. The placement of the 3 CV’s in the center of the surface I had to do by moving them along a tangent hull line while looking at the CurvatureGraph. I couldn’t find a more logical way to define the position.

Perhaps there is someone that knows the math behind it, or knows another way with guidelines to precisely place the CV’s. See file.

20140616_CornerBlend.3dm (162.1 KB)


Does some one very mathematical could help us? @bob


Hi @Niels
You can share step by step creating curves and surfaces (commands used and manual edits). Thank you.


(Pascal Golay) #19

Hi Skysurfer - @lowell is in charge of MatchSrf - it’s a fairly complicated business; I would be surprised if there is anything useful that could be typed in a forum post, more likely a reference to some textbooks…



Hi @pascal
I would like to understand how the white line intersection point has been found and how are the “help lines” used to move control points (perhaps using TangentSrf plane c). I did some tests with the file @Niels and I got a good result by moving the checkpoints with _MoveUVN. But the move was done without logic. The surfaces were obtained with _EdgeSrf