Remove Knots without changing the curve

Hello all,

I’m not sure if I’m just not seeing a really simple solution here but here’s our issue:

We are looking to rebuild some curves that could let us create surfaces without any knots or kinks and I was wondering, we don’t really want to rebuild the curve as even minor deviations could affect the fabrication process. What I am looking for is to remove the knots from my curve in a way that doesn’t change it’s overall shape - the remove knot command changes the curve quite dramatically here. Ultimately I need to end up with a single smooth surface with full continuity.

Does anybody have any ideas how to rebuild a curve so that it has no knots but still follows the original geometry? I guess I’m almost looking to “explode” the knots into NURBS control points. See below for screenshot and file.


CanYouKnot.3dm (66.3 KB)

Thank you all in advance,

Sash

2 Likes

This is very confusing.

1 Like

How about: I have a curve with knots, which creates lines on the surface, I need them gone, without changing the shape of the curve or surface

-Sash

1 Like

My bad :slight_smile: I was confused by the term Knots, in NURBS, anyways…

How do you create that surface?

When I use surface from network of curves I get no “knots”

1 Like

Hah, yes we were missing something really simple, we were using sweeps, lofts, edgesrf but not network surfaces, thank you very much!

That being said, the crux of the problem is beyond just the surface - how would we remove knots from curves without changing the curve profile?

-Sash

1 Like

I don’t think you can avoid changing the curvature unless you have enough other control points in that area.

In general you should add some control points that don’t change the curvature around the one you want to remove

1 Like

You explode the polysurface then try MergeSrf with Smooth=No at all the joints. Attached is the result.

I generally do not recommend doing this with non-G2 joints, as it could cause problems with meshing as well as some downstream operations - Rhino does not like internal non-G2 joints all that much. But it can be useful under certain circumstances if you know what you are doing.

YouCan.3dm (47.1 KB)

–Mitch

1 Like

you can also use RebuildCrvNonUniform on the blue curves (both curves simultaneously) with a higher point number and sweep again. the result will be in any case more complex.

the only method to simplify the input curves by keeping tangencies unchanged would be to rebuild the curve manually creating manual knots.

1 Like

RebuildCrvNonUniform will change the shape of the curves.

RemoveKnot is the command to use to remove knots with minimal or no change to the curve/surface shape. If have tried using removing each knot separately with RemoveKnot and the curve always changes shape then the curve has the minimum number of knots needed for that shape.

If by “full continuity” you mean curvature (G2) continuity, then you will need to change the shape of the curves.

The surface NetworkSrf creates will be G2 continuous but deviate from the input curve if those curves have kinks or curvature discontinuities.

1 Like

The “lines” you may see on the surface are isocurves and are part of the display, not part of the geometry. Display of isocurves can be controlled using the Properties command and selecting the surface/polysurface. Set your preferences under Isocurve density.

To change the default isocurve display use the Option command > Rhino Options > General > Default surface isocurve density

1 Like

Hello all,

Thank you so much for all the input, really useful to know about MergeSrf, can’t believe I hadn’t noticed it before. We’ve definitely solved the continuity issue my colleague was having, but I’m still very curious about simplifying the structure of curves.

@Helvetosaur If I understand correctly from the control point structure of the resultant surface for each merged edge you get a kink now? Which will create creases - so does that mean there is still a simpler control structure that could represent this curve?

@encephalon Rebuild and RebuildCrvNonUniform both introduce deviation from the original curve.

@davidcockey RemoveKnot again dramatically changes the shape of the curve. If you use EdgeSrf or Sweep you will see that there are edges not isocurves present, the display of my original picture already has isocurves switched off in the display

So I’ve gone into a long look at knots and kinks and I guess I have a new way of phrasing this question - is there a way to reconstruct this curve with uniform knots?

And as an extension from that, would a curve with uniform knots be the simplest (and therefore I presume the lightest?) way to represent a NURBS curve?

-Sash

1 Like

i did not recommend rebuild, for this i would also not use it, i actually rarely use rebuild. nevertheless deviations can be set to stay in your required tolerance, if the amount of added points dont bother you. but as pointed out regarding the following

one way to seriously simplify the curves while also avoiding the arcs you created would be to redraw them in one continuous stroke, something like the following

for every rounded transition g1 continuous (tangency) you need 3 cp´s when using degree 2 and 4 cp´s for g2 continuity. with higher degree curves you of course need more cp’s relative to your chosen transition.

rhino does not offer a complete redraw with a minimum cp´s unfortunately, there was a topic using grasshopper which iterated a simplified curve to reflect the original curvature as exact as possible.

2 Likes

Only in special situations is it possible to rebuild a NURBS curve with a different set of knots and preserve the exact shape. That’s due to how the mathematics of NURBS works.

If no single knot can be removed using RemoveKnot without changing the shape of the curve or surface then the representation of the curve is the simplest and lightest possible. (Unless the curve is exactly equivalent to a lower degree curve. For example a straight line can be represented exactly by a degree 3 curve or a degree 1 curve. The degree 1 curve can have fewer knots and control points.)

A curve with uniform knots is not any simpler than a curve with the same number of non-uniform knots.

Either multi-knots (muiltiple knots with the same parameter value) or multiple control points coincident with each other (stacked control points) are necessary to have a point with G1 continuity (tangent continuity but not curvature continuity) or G0 continuity (position continuity but not tangent continuity or curvature continuity) in degree 3 NURBS curve. Either multi-knots or stacked control points can lead to problems with certain operations and are usually best avoided but using a polycurve or polysurface instead.

2 Likes

Just to clarify some things -

What you showed in your original file was a polysurface, not a single surface. The lines you saw were joined surface edges. If the joints are all tangent, and you only want them to go away visually, you can do this by unchecking “Show tangent edges” in your display mode.

image

Also, there is one place where your curve ends don’t meet, you might want to fix that.

Your “long edge” input curves are “polycurves” composed of 3 lines and 2 arcs that are all G1 (tangent). In NURBS, a G1 joint cannot be made into a smooth G2 (curvature continuous) unkinked joint without altering the shape. If you need to keep the shape exactly, then you need to keep those G1 joints, and that means that they are “kink spots”.

NURBS surfaces are extrapolated from NURBS curves, so the same rules apply. It is possible to merge NURBS surfaces that have non-G2 joints into single kinked surfaces without altering their shape by using MergeSrf and Smooth=No. But the kinks will remain and if you edit the control points you may create creases at that point.

I am attaching a second version that I made after fixing the one corner. You can also try running DivideAlongCreases with SplitAtTangents=Yes on it to see that you can recover the polysurface at the G1 joints.

YouCan2.3dm (55.9 KB)

2 Likes

Thank you all very much, this helps a lot.

-Sash

1 Like

The de Boor algorithm also permits the subdivision of the B-spline curve into two segments of the same order TTRockStars.

1 Like

Awesome and very useful thread on surface modelling & drafting techniques…

…thank you all very much!!! :heart:

Is this link supposed to be ON-topic or it’s simply a phishing attempt to accumulate hits on your website?