Visual discontinuity in seemingly simple surfaces

Hi, I’m hoping for some help in understanding how to approach simple surfaces in Rhino and getting high quality results. I often find that the surfaces I create don’t match the continuity of the input curves. Often this is visual; All of my inputs will be tangent/curvature, Rhino will say that my surface is also Curvature or Tangent, yet the result is subpar from a visual perspective and using Rhino’s environment maps.

For example, below I have created 4 simple curves and used the Sweep 1 rail command. My rail is Curvature continuous and my cross section curve is degree 2.

This results in a surface that has tension or a “seam” where there is none on the input curves. This can be seen when using the Emap diagnostic tools. (red circled area).

These seams exist where my input curves meet each other. Rhino says that my input curves are continuous. On the zebra stripes below, you can see the areas of tension.

Here’s what the control points for the surface look like:

Here’s what the surface looks like in keyshot. These seams/breaks are very visible.


What can I do to avoid these sorts of problems? It is very frustrating that I can’t get consistently visually good surfaces with very simple inputs. What am I doing wrong? Will a surface of this sort of geometry (two single curve straight sections blended with a double curve section) always result in a surface that looks like this, and I’m overthinking it?

Thanks!

Mark

1 Like

Well without having the model I’d say you’re overthinking it a bit. You have a surface that changes from basically flat to curved, fairly quickly, that’s going to be ‘visible’ in some way. The analysis mesh settings you’re using aren’t dense enough for the Zebra striping to really show if there’s a “problem” or not, it could be a spot where the curve is tangent instead of continuous or it could just be the mesh. If you are trying to investigate this, don’t forget the CurvatureGraph tool.

Continous curves do not guarantee continous double curved surfaces. This is true for any Nurbs/Beziermodelling software. Always match/blend with surface tools. Curves only give you a starting point and a rough surface position.

1 Like

Here is the file if you would like to take a look:

Sweep1_surface_problem.3dm (439.9 KB)

Here’s the zebra stripes with a refined mesh. The issue is even worse:

Okay, so that’s a case of what Tom said. Curvature continuous joints in your curves does not necessarily equal nice surfaces, the surface creation commands don’t “care.” In this example just using the “refit rail” option in Sweep1 does seem to help a lot to smooth it out.

If you absolutely need that surface to be a couple perfectly straight extrusions with a blend between them, then that’s how to you need to model it, 3 separate surfaces.

1 Like

This is how to fix it:

  1. Run the “Divide surface along creases” command.
  2. Then “Explode”.
  3. Apply “Match surface” (Continuity = Tangency; Preserve other end = None; Isocurve direction adjustment = Automatic) to either end of the middle surface.
  4. (Optional) Use “Merge surfaces” with “Roundness = 0” to either end. That will merge the 3 surfaces into a single one, but keep in mind that there will be a hidden crease line where the surfaces edges were located prior that step. Any modification of nearby surface control points will result into a lost continuity.
1 Like

Here’s a quick process I just followed that resulted in a better surface. Is this similar to how you would approach this sort of blend?

S1 rail x2

Blend srf

Blend srf details

rebuild surface

Matchsrf

Rebuilt surface details

Here is the file:

Sweep1_surface_problem_blend.3dm (305.5 KB)

correct. It might be a good idea to make sure that your initial surfaces would match positionally and that they are “pulled backed” with the same distances. This will always yield a perfect blend surface. Never blend at trimmed surfaces. Rhino has some deficits on matching, but with some experience you will get good results as well.

when i use “refit rail” it results in geometry with approx double the amount of data as a simple sweep. So all of these points and spans are necessary to define a surface like this or can it be done in single span surfaces relatively quickly?

refit rail:

Thanks! Could you further explain what you mean by

“It might be a good idea to make sure that your initial surfaces would match positionally and that they are “pulled backed” with the same distances.”

I’m having trouble visualizing what you mean.

This is a really interesting approach. Thanks for sharing. Here’s the results I got:

Sweep1_surface_problem_merge_srf.3dm (409.3 KB)

1 Like

I see. So you are building the surfaces that you want to blend right up to each other, “trimming” them back by splitting and shrinking so you have two “untrimmed” edges with which you can create the blend. Thanks!

1 Like

yes, thats what I mean.

I’m thinking more about this. Can anyone direct me to some sources as to why “good” inputs lead to bad outputs? it seems very counter intuitive.

Hi Mark - in your example, I think I’d expect a clean surface here too… OK, I see, was thinking you’d sweep the other way - if the arc-ish thing is swept on the three-part curve, the far edge becomes, in effect, a sort of ‘loose’ offset (i.e. preserves point structure) from the rail curve - offsetting does not preserve continuity - in this case, Offset > Loose=Yes of your rail curve gets the same condition in the output:

-Pascal

This is not about CAD functionality, its actually about understanding the geometrics behind. Matching a surface means to solve for continuity. Basically what you do with curves is 1dimensional. For curvature continuity you make both curves to share its position, its direction of flow and its curvature at a certain point. For surfaces you need to match this for 2 principal directions. You deal with two curvatures, two directions. One direction influences the other, and so obviously building from curves does not automatically maintains continuity. Of course there are special case where this works out. Another aspect of a good blend is having a nice curvature flow throughout the whole blending surface and so getting good highlights/zebras. This basically means no wavy curvature flows. This however means both reference surfaces must allow to maintain a good flow when blending. And this can geometrically best guaranteed if they positional match in the middle. If there is a offset or its not in the middle of the blending, the curvature must bump or shift as well, which in the end result in a bad reflection. The curvature graph is your best friend it always should as be as smooth as possible, no waves, no unwanted and abrupt accelerations, no (or on rare occasions single) inflictions.

Hi Pascal,

Thanks for the clarity here. Is there a rule of thumb as for which curve to sweep and which curve to rail in situations like these?

I tried your solution and it resulted in a better surface, but different geometry:

Additionally, it still has visual breaks in it:

Emap:

Keyshot:

It also has different geometry:

so would you recommend using two cross section curves on either end of the rail to gain more control of the shape, ending up with a method like this?:

or just simply using 1 rail curve and 1 cross section curve, overbuilding, and then trimming back?

Additionally, there is nothing in Rhino that tells me sweeping the shorter degree 2 curve on the longer 3 part curve will result in the “loose” offset that you describe. How can I know this so that in the future I avoid making mistakes like this? will it just come with experience?

Basically what you do with curves is 1dimensional. For curvature continuity you make both curves to share its position, its direction of flow and its curvature at a certain point. For surfaces you need to match this for 2 principal directions. You deal with two curvatures, two directions. One direction influences the other, and so obviously building from curves does not automatically maintains continuity.

But I am building curves in 3 dimensions with two directions. My rail curve and cross section curves combined together create a surface that moves in two directions. Why would this surface not match the continuity of the curves, but projected into 3 dimensional space?

Maybe my knowledge of the underlying mathematics is lacking. Is there a good reference that you are aware of for understanding this that I can dig into?

Another aspect of a good blend is having a nice curvature flow throughout the whole blending surface and so getting good highlights/zebras. This basically means no wavy curvature flows. This however means both reference surfaces must allow to maintain a good flow when blending. And this can geometrically best guaranteed if they positional match in the middle. If there is a offset or its not in the middle of the blending, the curvature must bump or shift as well, which in the end result in a bad reflection. The curvature graph is your best friend it always should as be as smooth as possible, no waves, no unwanted and abrupt accelerations, no (or on rare occasions single) inflictions.

This all makes a ton of sense to me and I will incorporate this into my build strategy! Thank you so much for the help.

Hi Mark - going the ‘other way’ maintains the curvature continuity in the surface, is all I am claiming, not that it makes the surface you want. Being curvature continuous is not in itself a measure of quality - you can get a ‘nicer’ flow and reflections if the transition part is more progressive, so to speak in its acceleration - these are both G2, but the nearer one is perhaps more what you are shooting for. Note the difference in graph on the red input curves

-Pascal

1 Like