Rhino BETA Feature: Patch re-implemented

Thank you for saving that as Rhino 7 format! The surface quality is very nice, though I can still see some minor waviness next to the surface edges. But the input blend surfaces in the 4 inner corners were not perfectly matched (“Edge continuity” reports G1 tangency deviation of 0,07 degrees), so this also can influence some waviness.

@maje90 , can you try this modified model where I replaced those 4 surfaces with new blend surfaces?
patch-test-4.3dm (448.6 KB)

Oh! Nice!
I admit the whole logic behind it is not clear to me.

Actually, I prefer uniformly-spaced control points, I feel “safer” for when later I might need to do more modeling. (A surface with packed isocurves or control points very often is a problem for fillets or such later…)

Remade the model with G2 patches at the base. 0.01 degrees!

1x1 UV spans + Refine

30x30 UV spams + Refine


(I like this more, with more uniform isocurve distribution…)

patch-test-5.3dm (614.9 KB) (RH7)


ok, that’s pretty much the same mode I just re-made … check that.

@maje90 the surface you like better contains many more multi-knots and about 2x the amount of control points, so I highly doubt this gives you any advantage in further processing. I suspect the opposite.

up ^ ?

thanks, I’ve been noticing this as well
RH-95028 Patch UI changes should cancel any running calculation

Il comando dovrebbe essere “intelligente”, oltre che non esageratamente ridondante, ostico; dovrebbe adattarsi alle curve e alle preferenze di continuità scelte dall’operatore. Se per ottenere una patch decente si deve intervenire su chissà quale parametro (chissà quale!), anche solo una modifica fa fallire tutto, e via così, ricominciare daccapo, ecc, allora la modellazione diventa complicata, noiosa e fallimentare. Questo vale per qualsivoglia comando/strumento. Il CAD deve semplificare, automatizzare, non complicare. XNurbs non sarà perfetto, ma risulta più immediato e concreto nella sua implementazione. Pensiero personale…

I fully agree with your point. While the current Patch in WIP offers various options, it’s often unclear exactly how each parameter affects the outcome. To be honest, I find myself relying mostly on intuition and trial and error.


So, the best thing I can get is G0 in this case
Document tolerances are the default values.
Latest Rhino WIP on Windows.


Try with the edges of surfaces, not the curves

While the improvements to Patch in R9 WIP are a breakthrough, I believe Rhino’s native surfacing should aim to match or exceed the performance of xNURBS. A world-class surface modeling tool shouldn’t require a 3rd-party plugin for its core ‘n-sided’ surfacing needs.

@Quan_Li The two curves above must not be G0 but internal “I”, or create an intersection point between the two intersecting curves.

While setting the internal curves to I is a step in the right direction, the only difference this makes is a) these curves do not participate in trimming and b) their position tolerance is different, given by the internal tolerance.

What I think is going on is that the file used by @Quan_Li has different units maybe? I would be thankful if the exact file that is giving problems can be shared by @Quan_Li, because I cannot reproduce it with the file shared by other users, and I would like to get to the bottom of this.

@Quan_Li


patch-test tubi.3dm (303.4 KB)

Ok, yes, I’m seeing some things that need to be tuned up with that exact file.

@brvdln, @menno
I am sorry, the reason I cannot produce the right surface is that I made the internal curves G1. If I make them Internal, it will produce the right one.

The shading reveals some extreme waviness around the target edges caused by the G2 matching to the vertical extrusions. The G2 there must be replaced by G1 tangency, because the horizontal extrusions are half cylinders.

The “Angle” setting also must be 0,1 degrees instead of 1 degree.

I agree that setting the angle to 0.1 degrees is more appropriate for high-quality G1/G2 transitions. However, I’m curious about the default setting: Should it be 0.1 by default for better precision, or is 1.0 kept to prevent frequent surface generation failures for general users? What do you think is the best balance between stability and quality?

0,1 degrees is the better option. I would rather wait for a few seconds longer to get a high-quality surface than making a compromise with a little bit quicker but flawed one.

But as I mentioned above, the main goal is to choose between I, G0, G1 and G2 wisely.

@menno
Is it possible to prevent my parameters from resetting every time I start a new command session?
In the lower section where I wrote “no reset”, I noticed that only the spans keep the values I used previously.