From surface with weighted control points to non-weighted

I’ve made a surface using weighted control points in order to get a nice parabolic surface that gives very smooth highlights transitions. (to obtain the same effect by manually positioning the control points would take ages and master skill) However, I would like to obtain the same surface without any point weighting, because there might be problems later when the file is used in other software, and I also have the impression that any C2 surface matching from neighbouring surfaces is problematic.

I there a way to do this without changing the shape itself?

For instance, the surface now has a degree 2 in the direction of the parabolic curvature I want: 3 points define the curvature: 2 end points with weight1 and a middle one with weight 10 (question aside: why can’t the weight go higher than 10, why not to infinity? the line just becomes two straight lines, but is really just a single line).
Now, when I change the degree to 4 and obtain 5 points, all the points, except the ones on the end are still weighted, but to a lesser degree. Why isn’t there a way the change the degree, and have no weighting left?Like “baking” the shape with normal, weight 1 control points.

If I manually change the weights of the middle control points to 1, obviously my parabolic curvature will change, and I end up with a modified surface.

Any insights?

Well, I don’t think you will be able to do this with just 3 points… I might work with the original curve and not the surface. You could try with FitCrv and Degree 2 and the tolerance (deviation from the original) you can accept, but you will get a lot more control points on the curve. RebuildCrvNonUniform also allows you to input a tolerance setting but the result is degree 3.


Thanks Mitch for your answer.

I tend to work in surface mode since it allows me to see (by the aid of zebra lines) how the different rows of control points transition one from another. Working on lines separately is not very intuitive in that respect.

The surface at hand is the side of a boat hull and by using the weighted points it was really efficient to obtain a perfect surface result. I first defined the top line (sheer line), from there I copied that line downwards and scaled and rotated some points to obtain a lower line that is as close as possible to the upper one in terms of point distribution.

Then I do a loft (loose) between those two curves. The resulting surface has only control points on the upper and lower curve I created before. Then I change the surface’s degree (vertical direction) to 2. This gives me a en extra horizontal row of control points in the middle. Then I weight the middle row’s points to 10. Now, when I pull on that row, or scale it sideways, I obtain a distinct crease, while the surface itself is parabolic in nature.

From there, I changed the degree to 4, which gives me a surface with 5 points in vertical direction. Points #2 and #4 are positioned fairly close to point #3 (the middle one), with the same distance (roughly). Having 5 points, now allows me to control the fading of the crease from tight in the back to loose in the front. I do this by moving points 2 and 4 further away from the middle one as I go forward. (By moving, I actually mean 3D scaling a point with the one next to it as a datum, again, in order to keep as much of the original relations intact and not mess up the original, perfect curvature) This takes some of the tension out. At the back, I do the opposite in order to make the crease even tighter ( since the value 10 control point weight wasn’t sufficient).

The result is the surface as I attached. This way of working allows me to get a perfect result in hours, not days.

I tried building the surface in different ways before, but even the slightest change of control point position will mess up the reflections and would get me into a spiral of manually trying to correct a surface where it all comes down to millimeters.

But if I’m right, there is no “built in” method in Rhino to rebuild a weighted surface to a non weighted without changing the surface itself? (at least within a millimeter’s tolerance)

Well, there is FitSrf, which works like FitCrv, but as I said before, you will have a lot more control points to keep the new surface within tolerance of the original. There is also RebuildUV, you could try rebuilding the surface with a lot of points in the weighted point direction only, but this would still be a procedure of trial-and-measure to see if it is within deviation. As soon as you have more points, the surface becomes harder to edit of course.


Thanks Mitch,

I’m not too worried about getting more points (within reason - I don’t like surfaces that are not fairly simple), since from this point on, I won’t be able to control the surface manually anyway. My main concern is that the newly generated points will be distributed in a faired manner, so that any adjoining surfaces I’ll match to it, will have no issues with C2 matching.

I’ll try what you suggested. One way to go for me might be to just horizontally split the surface into three surfaces, about where control points 2 and 4 are located, then shrink the surfaces. Then take out any remaining control point weighting. I assume they would be fairly minimal at this point, after a change degree split and shrink…

I tried Fitsrf, but it didnt’ work.

0 surfaces refit, one surface could not be simplified.

I also tried rebuild UV, but it still keeps the points weighted (even though very minimal, like 1.17) Probably will need to set point number to 20 or so, to get wrights down as much as possible, then manually set all control point weights to 1 again.

I can also try to delete some of those 20 rows of control points, especially the upper and lower ones, where there is hardly any curvature.

Is there any way to know how much the new surface would deviate maximally from the original one, in terms of millimeters?

And what about going down the change degree route?

Let’s say I change the degree for the vertical points to 9, obtain 10 points. At least they will be distributed to where they are needed (where the most curvature exists). When I do Rebuild UV, it just placed the points in an evenly distributed way, and I get more points then I need in the upper and lower areas, where the surface has low vertical curvature. What are the repercussions of having a surface with such a high degree? Might it pose problems further down the line when matching to neighboring surfaces, who are of lower degree?

As long as keeping the rule of degree == controlpoints + 1, you create Single Span Nurbs or de facto Bezier surfaces, which doesn’t create any problems. Problems of higher degree are only with multispan-Nurbs. Its adviced to use odd degrees (3,5,7) for multi-span.
However the more cps, the harder to maintain overall smoothness. Single-Span surface are actually much easier to handle when it comes to overall curvature flow. In conclusion matching and blending is better. However, there is a unwritten rule of splitting a shape in between parts of low curvature and in parts of high curvature. Areas with low curvature are initial shapes which are blended together. In your example this means creating two surface joining them roughly positional. If you now blend in between both you get a perfect blend and three single span surfaces.
Now Multi-span enthusiasts would argue that this is exactly what multispan is doing. However you should notice that you have no control of how it is blended and you are forced to use the same degree for every segment.In contrast a disadvantage of single span is that you have 3 and not 1 surface/-s.
So it all has its pros and cons.

1 Like

Thanks TomTom,

The fact that you don’t have control over the blend is what made my start with this weighted (parabolic surface) in the first place. I have just a single horizontal row of points that define a crease., the points themselves are easily moved and the weights (pull) can be altered easily in a linear fashion to have the crease fade out. But I end up with these weights that I somehow need to get rid off while maintaining my shape. Which brings me back to another question I sidetracked on before.:

Why is there a limit to the weight to 10? I know that if I change degree from 2 to 4, I will have 5 instead of 3 points. Now the points themselves will control the curve more, while the weight does less. If I were to make the weight of those points 1 again, my shape (parabolic) would become softer (less pull). If I could give the control points an even higher weight before changing degree (and have them overpulled), I could make up for the loss of pull I will have after changing degree, and setting weight to 1 again. (while the points themselves will take care of describing the curvature).

This is theory of course. But why is there a limit to the pull in Rhino? Imagine the ease of making nice parabolic surfaces with accelerating reflections by using the control point weight method I described, then get rid of it later on when the surface has been made.

So, in the method you described above, with two single span surfaces being blended with a third single span surface, would you have control over the blend then (as opposed to multispan)?

The blend would depend on the two initial surfaces. Nothing I can do about it interactively (like “on the fly”), right?

Sure because you can determine the continuity and the factors of the blending, resulting in sharp or smooth transition without any weighting. Weighting is hidden, because its not good to model with it, except for special cases such as circular shapes or projections. In automotive, design surfaces are all single span and unweight.
If you use multispan, with degree 3 you “only” have g2 (cur) inbetween. Its a common misbelieve that the higher the continuity the better. In rare case g1(tan) can look better as g2, and often g2 is better as g3 or g4.

The blend would depend on the two initial surfaces. Nothing I can do about it interactively (like “on the fly”), right?

Well, if you know which conditions result in good blends you don’t need interactivity at all. That’s why its important to match both initial surfaces with g0 (pos) before pulling them back for blend. However r6 offers limited history functionality,not sure if it works for blend

Well, I think I tried that same route before, but it didn’t give satisfactory results.

Here’s a model of the hull with left side two surfaces with a crease, matched positionally, wile the left side has the weighted surface

here’s a side view of the original surfaces, with zebra.

Then I cut the surface back somewhat to make room for a blend:

This was done by a split along isoparm . or can I also just split the surface somewhere, let’s say at a constant distance from the original line?).

Then I make a blend. Just check the zebra’s. pretty awful.

Curve hairs are also far from continuous:

Compared to the surface created with weighted points. Smooth as a baby’s bottom.

Is there any course one can take to get to know all these things? Like the conditions you speak of?

Or like why you need to match positionally before blending.

I have a hard time modeling on a high level in Rhino, although I’ve been at it for 17 years now, all self taught. But when Iook at some of the things one can do in Alias in terms of surface transitions, I just wonder, if it’s just me not understanding some of the higher levels of Rhino, or whether Rhino just isn’t able in terms of interface and user feedback.

Like controlling a blend: I have no knowledge of how to control the tension of a blend surface. making it have less curvature at the start and more curvature at the end. Like is shown on this video.

For sure, I could make a birail sweep, and define sections. But again I don’t know the sections. Each section should be some variant of the one next to it to obtain smooth transitions and one can only make these gradual variations through a computational model, like Alias Surface does. I always have this feeling that in Rhino, I end up doing the heavy lifting, figuring out all the lines and point positions while Rhino merely executes with very limited input. And the figuring out just takes so much time, trial and error. I end up spending a day on just getting a single surface right.

Having some integral rhino modeling class for high quality modeling would certainly be something for me to consider right now. I’m constantly hitting a wall here. Or maybe, if there is none, or it’s mainly Rhino, maybe I’ll need to consider another package… Any insights? advice?

that’s Alias Surface I speak of above, by the way, the link didn’t show the video, just the page.

just click the video for Alias Surface.

Also, I tend to design while I model, like sculpting. So that’s why I need to be quick in making a shape to a level where it’s presentable to a client. (bulgy surfaces don’t help in convincing the client of a concept though).

Modeling a shape based on drawings, or scans of clay models would probably allow to figure out things easier, get things right faster in the modeling phase. And maybe most of the “class A” modelers out there work on this end of the spectrum. But there is no budget for this in the boating business. Concept work is pretty much the same as production data. I usually start out with just a line, and no idea of proportions, surface transitions and hope the 3D model will tell me what has potential and what hasn’t. But if I spend 90% of the time just trying to get an idea modeled and 10% of creative design, there’s a problem with the balance, I’d say…

out of question.
Rhino is a very powerful and universal cad platform, perfect for a lot of tasks. Unfortunate Rhino lacks tools for high end modelling. You can get close but you need multiple times longer to come to a final product.
One missing ability is to split a surface other than at isoparameter. For high-end modelling I use Icem Surf, for concept I’m a fan of polygonmodelling or pen and paper. If you model quite often for high quality, it may be worth paying higher prices for high-end software like Alias or Icem. In the end this may also pays off financially.

yup, I think you’re right. I’ve been looking at so many tutorials online, and they all seem to be at a lower level than my own, which makes me think… is there just no one bothering to make any really advanced Rhino modeling tutorials, or is it just that anyone who is modeling at this level just moved to another package…

I came across the VSR plugin some time ago, and that showed some promise to move to a higher level in Rhino, but now it’s not available anymore. Bummer!

Problem with these other packages is that they are cost prohibitive in the boating sector, where the design and development costs are already comparatively high, due to the low build numbers in comparison to automotive. I would need to reduce modeling time to about half to make it worth the money. Maybe I can give it a try though…I don’t really see another option anyway…

1 Like

Hej Arman,

have a look at these NURBS modelling principles and those as well. Although they are Alias based, the good news is that you can use them in Rhino, too, although many tools and interactive controls are lacking. You can see from many examples that with a bit of time, you can make superb NURBS models in Rhino, too, once you’ve understood the basic principles of continuity, not using trim boundaries, CP manipulation and Bezier surfaces.

1 Like

What downstream applications are you concerned about with weighted points? Why not confirm that’s actually a problem first? I know that’s something that was said at one time or another, but I also remember it’s extremely old advice.

it’s also hear-say, I haven’t got any experience myself. just a matter of better safe than sorry.
For me the real reason is that matching gets messed up. Bumpy stuff. That I have experience with…

1 Like