Rhino 7 only operating on part of unrolled surfaces

I’ve upgraded to Rhino 7 and wonder if I have changed a setting somewhere.

When I unrollsrf the panel produced is not a single panel, but several panels joined together.

When doing an operation like “offset curve” it only offsets only part of the intended edge curve

Before unrollsrf the same command offsets the whole edge as the panel is truly contiguous.

Didn’t happen in Rhino6 (for me). It is clearly something obvious … but what?

Here is an example of both situations.

Michael Storer

The surface you are unrolling contains multi-knots, and the result of UnrollSrf is a polysurface… If you run RemoveMultiknots on the surface before unrolling the result of UnrollSrf should be a single surface. However be aware that RemoveMutiknotmay change the shape of the surface slightly. If the original surface was created using Sweep2, DevSrf, DevLoft or similar the surface after removing multi-knots may not exacty match the original input curves.

Surfaces with multi-knots are created when I use V6 and V7.

For those interested in some details.

A mulit-span NURBS curve or surface without multi-knots has continuity between which is one degree less than rhw degree of the curve or surface. A degree 3 curve or surface without multi-knots has C2 continuity between spans. Knots are located between spans. If there is a multi-knot then the continuity at the multi-knot is reduced.

Notice that above i said C2 continuity, not G2 continuity. There is a difference. G2 continuity is curvature continuity. G continuity is geometric continuity and G2 continuity means the curvature is continuous. C continuity is more rigorous and means derivatives are continuous. C2 continuity means the second derivative is conitinuus. A C2 curve or surface is always G2 continuous but a G2 curve or surface may or may not be C2 continuous.

A curve or surface with mulit-knots will have reduced “C” continuity. The “G” continuity may or may not be reduced.

Why do commands such as Sweep2, DevSrf and DevLott sometimes produce surfaces with mulit-knots. The “simple” answer is because a single surface without multi-knots wihich exactly matches the input curves may not be mathematically possible because of differences in the parameterization of input curves…


Thankyou hugely for the reply David!

Ok more interestingly …

Within the same drawing that was started in V6 I have the same panel as an unrollsrf.

Here is offset performed on both.

The V6 version of the unrollsrf offsets along the whole side.

The same panel using unrollsrf in V7 offsets a segment only

Wonder why V7 is adding knots but V6 when unrolling the same panel does not.

Initially I thought it might be an artefact of the SubD methodology as that is the most visible change between V6 and V7.

Quite strange.


I’m having a poke around to see if I can dig up any other differences between the V7 and v6 version of the same panel. Trying to spot other differences.

Looking carefully at the polylines for the V6 unrollsrf vs the V7 unrollsrf in the drawing above. They are within the same drawing … not superimposed.

Can also see some differences between the segments of the V7 bottom … it looks like the isolines have been set up equidistant within each section (bordered by the darker transverse lines breaking the panel into 5.

… whereas in the v6 generated flat panel the isolines are spaced more like what I would expect, something like a geometric progression with more concentrated curvature between the sections. I wonder if there is some curvature approximation (or averaging) going on in V7 which then forces the knots to happen.

Also a difference if I Explode the panels … remember these are both in the same V7 drawing now.
V7 splits into different segments.
V6 can’t be exploded. Stays in one piece.

Hoping someone can see why unrollsrf created with V7 is behaving so differently.


Reinstalled V6. Unrollsrf. Offset edge - it offsets the complete edge

V7 using same drawing. Unrollsrf - offsets one section of the unrolled panel only.


How are your creating the panels in V6 and V7? What commands are you using?

For the symmetric bottom panel in your illustrations I am surprised there are multi-knots unless the input curves have multi-knots.

Are the Units, Absolute tolerance and Angle tolerance set the same in the V6 and V7 versions?
Options > Document properties > Units

Hi David,

The drawing was imported as a wireframe from a marine design program.

I isolated the curves I wanted and used the rebuildcrv non uniform to reduce the number of points down to 5. Then reflected and lofted between them to make a panel with fore and aft curvature only.

I’ve just reinstalled V6 and it works as it always did … unrollsrf creates a flat panel. Offset then creates a new curve along the whole panel edge.

In V7 - do the same thing, same commands on the same model that was created with V6 and the result is different as above.

If I create the unrolled surface in V6, save and open the saved model in V7 then offset works as per V6. But if another unrollsrf is done in V7 without changing the drawing at all … the problem above appears.


I created an example with a surface containing multi-knots which V6 unrolls as a single surface and V7 unrolls as a polysurface. So it looks like UnrollSrf was changed between V6 and V7.

Here is the file. I don’t know what I am looking for in terms of knots. I just copied this and saved in V6.

The panel along the Xaxis is the curved panel. The one along Yaxis is the unrolled surface via V6. Offset works normally whichever version is used.

But when I unrollsrf using V7 … the difference appears.

SOG Ca test for Devs.3dm (314.0 KB)


The difference in behavior you are seeing with Offset is consistent with the difference between edge of a polysurface which is a polycurve and the edge of a single surface which is a single curve.

This is consistent with UnrollSrf in V6 producing a single surface and UnrollSrf in V7 producing a polysurface with both starting with the same surface with multi-knots.

1 Like

Hi David,

Good description. I lacked the words.

Any idea on a solution? For me the obvious solution is to go back to V6 so I can get my work done! :slight_smile:

Any suggestions for V7?

Cheers again.

Openned your file and can reproduce your results in V6 and V7.

Try using UnrollSrfUV instead of UnrollSrf.

Great! Excellent!

Can I ask a follow up question … I’m relatively new to Rhino.

I read the documentation for unrollsrfUV. It states “develops surface while retaining UV”. I’ve looked that up before but haven’t found a satisfactory answer … what is the UV in this case?

Google is not so helpful.

In a sentence or two … don’t need the detail … just a basic idea.

Surfaces in Rhino (and other software using NURBS) have a parametric form and the parameters are usually referred to as u and v. Everypoint on a surface has a unique set of u,v values. Isocurves are curves with constant u or constant v values. When the UV structure is retained anly point on the unrolled surface will have the same u,v values as the corresponding point on the original surface. This can be important when flowing objects along a surface or when applying a decal or texture.

Several versions back, perhaps in V5, UnrollSrf was rewritten to be more accurate, and the UV structure of the unrolled surfaces was not guaranteed to match the original surface. So UnrollSrfUV was added which essentially is the old UnrollSrf.

I assume you are Michael Storer the boat designer. I doubt the difference in accuracy between UnrollSrf and UnrollSrfUV will be significant for your work. The discrepencies between the theoretical unrolled surface and how plywiod actually bends will probably be much larger.

Thanks David.

Yes, I am the boat design storer. Correct that ply behaves quite differently from the mathematical model. I’ve actually built some mockups constrained by cross sections and the differences are pretty significant even in the small size I work with. However, without being constrained by sections located correctly in space the panels do work. A few degrees of freedom and it all works well enough with only small adjustments required with the first prototype.

Thanks again for the explanation.

storerboatplans dot com