Rebuilding surface produces weird CV distribution

First, a papercut:

  • Why can’t rebuild automatically select the current CV density by default? I always have to waste time entering the current counts manually.

Second:

  • Since I’m not changing any CVs in the U direction, shouldn’t they be unaffected by the rebuild?

Not sure if this is related to this previous topic or not…

(PS. the surface looks like this because the initial rail result was also very weird…)

This result is the same in WIP, so there’s something I don’t understand going on here.

1 Like

Except… imagine the opposite paper cut - you are rebuilding surfaces and you always want say, a 5 by 6…

while I do not like the results here, I don’t see how it would be useful not to change the U as a ‘policy’. That would pretty much negate what Rebuild does - what if it were horrible?. There is RebuildUV, which while limited, might be the thing in this case, with a ChangeDegree to 5 in V after.

-Pascal

Ok, so that sounds like there should be a button to copy the current CVs to those boxes… hmm… I think we’ve discussed this already once before… :slight_smile:

Thanks for the RebuildUV tip… that produced the results I expected from the Rebuild command… so I learned something new today! (Still haven’t fully wrapped my head around the difference, though.)

Hello -

The difference is that in the rebuild direction you can only get degree 3. That is a significant limitation in many cases…

-Pascal

I rarely use “Rebuild surface” (usually only to simplify a surface to become Point count 2 and Degree 1). Instead, I prefer “Rebuild surface UV”, because it preserves the structure of the control points in the opposite direction. You may also want to play with the several types of rebuild in the command line settings. They give significant differences.

This particular bug have been discussed in several topics over the past few years, but I think that the programmers at “McNeel” should take it seriously and try to fix it, because “Rebuild surface” is known for producing highly distorted, unusable conversion of single-span surfaces. That’s pity, because this particular bug in Rhino destroys the general flow of the control points, thus directly impede its users from achieve high-quality surfaces. I wonder, is it going to be fixed any time soon? :slight_smile:

Shown here is an example of converting a simple surface to exactly the same degree and number control points, however, Rhino fails to do the math properly and places the control points in a chaotic fashion which is basically unusable.

3 Likes

I’ve removed that this topic is solved because although RebuildUV might produce better results, Rebuild is still borked when it comes to usable CV distributions and it’s the only thing which works on curves:

Ideally, I’d like an option similar to “preserve end tangend directions” to also “preserve internal control point directions”. In other words, if a curve’s control points all lean towards the same direction, a rebuild result should never be allowed to zig-zag. I get that the points then might not become equally distributed, but still, an unequal distribution is sometimes more useful (a zig-zag is never useful, imo).

These complaints both involve rebuilding with degree higher than 3. The seemingly chaotic, oscillating control point locations are not the result of errors in math or coding. Instead they are due to the fundamental method used by Rebuild.

Rebuild essentially samples the input curve or surface for a set of points, and then interpolates a new curve or surface through the points. The seemingly chaotic, zig-zag control point locations when the result is a higher degree curve or surface are caused by how the interpolation works. This is not specific to Rhino. Instead it is how the math of polynomial/spline interpolation works. The higher the degree of the output the greater the tendency for the control points to zig-zag. Higher degree interpolation tends towards being unstable.

To increase the degree of a single span curve/surface use ChangeDegree, not Rebuild. ChangeDegree uses a different method to determine the new control point location, and wil result in the new higher degree single span curve/surface exactly matching the old lower degree single span curve/suface and having a smoother distribution of control points.

2 Likes

Often times the idea is to reduce the number of control points (usually they are a much greater number) while converting the curve or surface to single-span Degree 5. This is where Rhino fails a lot.

In this situation - a workaround I often use is to do a BlendCrv using the end points of the curve as the input, and then flip the directions of each end. Then you can have much more control over the distribution of the points and it doesn’t do…yeah that thing.

In that situation Rebuild can result in aig-zags/oscillations in control point location for the reason I described above. Rebuild uses interpolation and the higher the degree of the interpolation the more the tendency is for oscillations/zig-zags to occur.

This is a clear sign that Rhino uses the wrong method to rebuild the surfaces. At least when it comes to converting to single-span Degree 5. Also, the “Rebuild” too must have a “Keep tangency” option to preserve the G1 tangency on both ends of the output surface. This have been requested so many times over the years, yet it’s still just a dream for the future…

1 Like

Could anyone recommend any insightful reading material specific to curve degree? Or be so kind as to give a small explanation?

I wonder about the criteria to decide to use higher degree curves and their use cases.

I typically stick to degree 3 and I haven’t have the need to go higher, but again I don’t quite understand the benefits of it. I often read some using degree 5 for instance and so I am curious about these cases.

Has the wish at least been created on the youtrack? Pascal usually does not hesitate to add those if the benefit is obvious.

These two videos might be helpful:

-Sky

1 Like

Honestly, I have no idea if it was added to the YouTrack. Personally I requested that at least couple of times, and also saw other people’s requests of the same type. There were numerous discussions on different topics where people suggested to add an option to keep the end tangency of the rebuilt curve.

1 Like

I am seconding this request. This type of rebuilding would be very usuful indeed and I would use it all the time. For now I am just eyeballing with blendCrv untill I get under 0.001mm deviation, but it’s time consuming. I think Rhino can already kind of do it. Commands like SplitRefitSurface, RefitTrim and FitCurveToSurface are doing some kind of approximation of a curve while keeping the same degree and span of the surface. But those commands don’t show the maximum deviation like rebuild does and it’s not as precise as doing it manually with BlendCrv.

1 Like