Rebuilding Curves - What's the the point significance?


Hello all,

Trying to teach myself Rhino here by watching a bunch of tutorials. I keep seeing people rebuild curves and changing the points. What’s the significance and how do I know what points I should rebuild my curve to? Any tips and tricks for a total newbie?


Points in rebuild refers to the number of control points. Usually you want to have the needed number of control points but no more. How many are needed for a particular task is leaned through experience. Try different values and see what happens. You can always Undo. Also save frequently and then you can go back to your last save.


Do you know why everyone rebuilds their spheres with degrees of 3?


who is everybody? Rebuilding has also some negative aspects. Positive, as David says, is optimise cp count and equally spacing in between them. Negative aspect: You actually move away from the initial position. If you like to increase control points but not move away you should use increase degree instead. Nurbscurves can consist of one subcurve or multiple subcurves . So they are single or multispan. Same for surfaces. For surfaces you can even see the span in shaded mode. The more isocurves shown inside your surface the more spans (more subsurfaces) it has. Now there are people (like me) trying to use as few spans as possible, best only single span. This is benefical, because it lets you better control the curvature. However going for multispan has the advantage that the subshapes are connected with a certain transition in between, which allows you to cover a greater area without matching them.
For degree 3 multispan shapes have tangency alignment in between, for degree 5 they have curvature continuity. If cpcount is degree +1, your shape is single span. F.e. a nurbscurve with 6 control points and degree 5 is single span, wheras 7 5 is multispan, but connected with curvature continuity in between. The last aspect are weighted shapes. Nurbscircles and -spheres have some controlpoints with a weighting of 0.7 in order to perfectly match a circle. The weighting says something about the impact of the controlpoints for the interpolated curve. Positive: It allows better approximation of certain shapes with very few cps. Negative: other surfaces matched onto a weighted shape, very often drastically increase their controlpoints, since its harder to match. So the golden rule. Less cps, no weighting if possible, lower multispan count.

(My spheres consist of 4 patches with degree 6 and cpcount 7, but no weights, but I don’t create them in Rhino :P)

Important commands: _Rebuild _ChangeDegree _Weight _CurvatureGraph


Incorrect and could lead to erroneous conclusions.

Multi-span degree 3 curves and surfaces have curvature continuity, not just tangency continuity, between the individual spans.

Multi-span degree 5 curves and surfaces have rate of rate of change of curvature continuity, not just curvature continuity, between the individual spans.

Multi-span degree 2 curves and surfaces have tangency continuity between the individual spans.

In general continuity between spans is one less than the degree of the curve or surface.

Degree 3 curves and surfaces are popular because they have internal curvature continuity, which is frequently a need or requirement. Reflections on surfaces with curvature continuity do not have discontinuities or kinks. Also physical materials supported at discrete locations tend to bend in shapes close to degree 3 curves and surfaces.

Degree 3 curves and surfaces are widely used because they have internal curvature continuity.

(Vanessa Steeg) #6

Hi @Jaqomatic In addition to what has already been said (and yes, degree 3 curves and surfaces have internal curvature continuity), one reason to rebuild a sphere to a degree 3 is to be able to control point edit (change its shape) smoothly, without making the kinks (the seam) visible.

By default a sphere in Rhino is degree 2, which means it only has tangency internal continuity.


Hi Jaqomatic,

you can find many good foundational explanations with nicely explanatory images here and here.

Although this is from Autodesk Alias Automotive, practically all concepts apply fully to Rhino as well, being a NURBS based surface modelling software, too.

If at all possible, when working with freeform surfaces and fillets, try to use single span degree 5 curves (6 control points).

After only a few weeks of practice, you’ll like what Rhino can do for you.


The sphere command in Rhino creates a degree 2 rational surface which exactly represents a sphere with constant curvature every where. The rational part means that it has weights with values other than unity. It is not possible to exactly represent a sphere with a usual degree 3 non-rational surface.

The advantage of the degree 2 rational surface for a sphere is that it is exact. The disadvantage is if the shape is changed there can be discontinuities in surface curvature as Vanessa mentions.

The advantage of the degree 3 non-rational surface is the surface can be changed by moving control points and it will continue to have curvature continuity. The disadvantage is that it always deviates slightly from an exact sphere.

The choice of which to use can be due to whether an exact representation of a sphere is needed, and whether the shape will be modified.


Ups, yes it is Curvature and Flow…No idea why I mixed that up. Doesn’t make the rest wrong, though. Using mostly degree 3 is typical for some cad platforms only (like Rhino) , others may differ here. I use degrees up to 8, since I prefer single span


oh, if people think Rhino can do only degree up to 11, it indeed can do “better”:

(doesn’t make sense to have polynomials this high, but just in case you want super single span :wink:)




Don’t know if it’ll help, but I use REBUILD on curves to even-out the number of control points from one surface to another. Here’s what I mean: Lets say I’m going to construct a surface I expect to try to join to another surface later on. The edge-curve may have some random number of control points, RANDOMLY PLACED along the curve, by whatever RHINO uses internally to decide such things for extracted surface edges, or whatever method you used to draw the curve if you created it manually. (No, RH support, degreee and construction do NOT seem to manage these issues effectively.) IF I have created the curve by extracting it from the edge of a surface, the problem seems even more pronounced. IF I constructed the curve manually, I’ll use REBUILD to even-out the number of curve points from what I placed. SO- I will take that curve, whether I drew it or I extracted it from a surface, and “REBUILD” it to the same number of control points I used on the earlier curve I built the surface with. I’ll THEN try to make sure all of the curves I use to finish the surface have the same number of control points. I’ll THEN finally use them to build the surface.
Seriously, the detailed discussion above about control continuity and curve degree, and such seems FINE if you’re interested in the internals, but for us mere mortals who just want to construct the needed component model, managing control points seems the only reliable path to a successful polysurface close.
Conclusion- Ok, learn about degree, etc, as that seems important somewhere, but realize that surface-to-surface continuity is important to get smooth seamless tangential transitions from surface to surface, and REBUILD is one of the tools you can use to achieve that.
All my best going forward -
Post back with results ?
Thanks -


Hi Jaqomatic,

what you should also consider (apart from trying to always use degree 5 curves and single span surfaces) is to rebuild surfaces that have been trimmed - the reason being that a boundary of a surface that was created by way of the surface being trimmed is a “heavy curve” (many edit points), making adjacent surface building and particularly matching a chore or even impossible.


Use rebuild on curves, and surfaces as @Lagom indicates, when your modeling methods have produced messy control points, and when your design might benefit from a slight “smoothing” associated with the rebuild.

Use the ‘calculate’ and ‘maximum deviation’ feedback to determine minimal amount of rebuilt control points acceptable to the situation.

For example:

You’ve generated a curve through a series of projections, say project to surface and project To Cplane.

Now the curve has a gazzilion control points which could be problematic later.

Find the lowest number of control points that both produce the shape you want AND keeps the deviation within an appropriate amount. The deviation amount depends on your situation, but it is likely to be somewhere between .2mm to 1mm.

(edited for ‘iPad’ typos)


Rebuild would be (for most cases) obsolete if there would be a build in algorithm for approximation and integrated control point smoothing. In particular a good degree decreasing functionality, since there is no numerical solution here and Rhino doesn’t offer one annealing solution.
This way you could work only with degree elevation in addition with smoothing if desired, but without moving away from the desired position (or just little). VSR Tools had this for instance.
Understanding degrees is advanced yes, but if you really want to control a shape, you should try how curves and surfaces behave with different degree with curvature graph turned on. Then you might notice that the big disadvantage of multispan shapes is the ability to control the overall curvature flow. And although people constantly pronounce the importance of curvature connectivity, you will notice that shapes interconnected by g2+ will look weird if there are twists and wavy changes in the curvature graph. Yes I mixed that up in my last post, but even a g1 connection can look better, if it prevents a twist in curvature, even if there is slight curvature jump at the point of connection.
In my oppinion there is no best degree.Why using degree 5 if a shape can be described with less then 6 cps, why splitting a shape into two single span parts or one multisegment part, if you could represent the shape with 8 control points and degree 7. Fillet surfaces often have to have slightly higher cp and degree count as their base surfaces in order to match them perfectly. I use all degrees from 1 to 9, mostly 2-4(base surfaces),5( g2 blends),6+ (fillets and g3 blends). But using pure Rhino forces you to use degree 3 or 5 in most cases, yes.


sounds good

not sure i understood correct, but the command FitCrv would do that? i wished it would be a bit stronger but it works well for many curves, probably the best solution for mathematically derived polylines like logarithms and sine waves for instance.


Rebuild would be (for most cases) obsolete if there would be a build in algorithm for approximation and integrated control point smoothing. In particular a good degree decreasing functionality, since there is no numerical solution here and Rhino doesn’t offer one annealing solution.

I actually have to correct myself a bit in order to not create misunderstandings again :fearful:.
There is a degree decrease feature in Rhino. Degree Decreasing indeed works very well with _changeDegree but only if the curve or surface is single span and has a smooth curvature. (In comparison, Rhinocommon provides only degree increasing yet.)

However degree decreasing in Rhino is just such an unknown functionality. It can’t be used as a Controlpoint reducer, because it misses some key features:

  • it strictly only reduces the degree, it doesn’t reduce the span -> the more span the less cps are reduced, because there are more shared control points
  • it doesn’t smooth out. If the curvature is okay, the reducing is acceptable

So no matter how you call it, you need a better tool for simplification other than rebuild. Rhino Fit, which is Rhinos Approximation, also produces too much controlpoints since it doesn’t allow to define controlpoint count. Anyway have a look at both white curves. I would always prefer to use Degree Decreasing with _ChangeDegree instead of _Rebuild if its singlespan, since it works well. For other situations, there is no tool (at least I don’t know it) to effectively reduce control points other then rebuild. The second white curve is a better solution made in Icem Surf (VSR could do this either).I mean you can always do this manually (and sometimes even better), but this is a functionality which could improve “rebuilding”…


I think it very much depends of the type of industry one is working in and then also to consider what Rhino is able to do without the user having to waste too much valuable time (budget). From my 26 years of experience, as far as consumer products and investment goods are concerned, single span degree 5 curves and surfaces are a tried and trusted friend ; )

After all, most industrial designers aren’t technical surfacers and today it is rare that a sports watch, detergent bottle or public furniture manufacturer has the budget to pair a designer with a surfacer; practically all my colleagues in the field produce their own data to then hand it over to production engineers who then deal with the boring parts of the design job at hand.

Interestingly, the whole affair very much relates to industrial design education. Students who learn to draw on a sketchpad using their whole arm draw smoothly, also complex shapes, and then intuitively realise that when later fleshing out concepts in Illustrator it is beneficial to use as few anchor points as possible, to then also realise that the same holds true in 3D software - compared with those who make a right old click-fest in 2D and 3D. Occam’s Razor always applies ; )


well even though its not convenient WYSIWYG but one can still play with the tolerance/value to decrease the amount of points. but finally they all if rebuild or whatever, deviate strong from the original curve, which why i also would like to see some progress in this area. and i would also think that one command for all those should suffice… not 3 which you have to play with for hours to get the best but still insufficient results. none of them manage to recreate the initial control polygon and the resulting curve which was was produced with rhino itself.

should that not be possible to be calculated through the tangency? i am not a mathe-magician but there must be a way to make this better…


yes, it indeed should.(… and its possible as shown below)

This is one of the key functionality I miss in Rhino. This kind of functionality could increase shape quality very much. With such algorithm you can practically upgrade a lot of other functionality, (blend/match/loft/offset…etc) by simply adding a toggle of cp reduction after processing.