I’m trying to follow this Thirtysixverts tutorial but it is driving me totally insane. I have followed each step extremely cautiously, however despite my best effort, I’m getting an issue when matching this surface to another:
I, for the love of me, could not figure why this is happening. I also don’t seem to be able to see both surfaces borders highlight in yellow. Could that tell something? Or is it just a Rhino V difference?
I can join that edge by running another matchsrf command, but I cannot achieve any continuity between the two parts. The file attached does not have the matchsrf command applied
Gaussian curvature is not the right analysis type to evaluate these surfaces. You’ll use that to check if surfaces are developable.
Better is mean here to see the overall change in curvature.
Futzed it for G1, see below. Unfortunately, all your primary curves were not in the IGES file, so to trim the small secondary surface, the extended part, the edge of the primary surface to the left needed to be merged to obtain a single curve for trimming.
In any case, it works for G1 if you up the degree of the primary surface to the right to 6 and planarize the hulls before matching. The same can be done for G2 continuity; then you may need degree 7 in that direction - after all, the three-sided secondary surface was trimmed from the extension.
In both cases, make sure that the small curve is proper. If it is not, the trimmed edge to match to will be overly complex, making G1 or G2 matching impossible. It’s a good idea to retain your primary curves, for example for trimming, like here.
The real issue is the very short distance where the primary surface is split. This is a common mistake. My recommendation is to split the right edge much further than what the video tutorial teaches you. It’s a technique known as “Overbuilding”. The reason to overbuild is to let the primary surface follow the upper edge in a smoother way, which leaves a longer distance for you to split it and match the secondary surface with a nice G2 continuity.
As you know, the G2 continuity requires a considerably longer distance, because it affects the 3rd row of control points, hence the need to avoid splitting the primary surface too close to the right edge.
Another issue is that Bezier surfaces don’t really work well with G2 matching to highly curved target edges. This is why, you may need to split and shrink the initial secondary surface into two halves at the point where you consider that the curvature changes drastically (not necessarily in the middle).
The third issue is that Rhino’s “Match surface” tool still can’t handle G2 continuity while preserving the global flow of the control points. It has been discussed many times that this particular missing feature is responsible for the failure of the majority of attempts to achieve proper G2 continuity. When you try to match with G2 you will notice that the 3rd row of control points will be heavily distorted by Rhino rather than adjusting them along the normal direction only.
The VSR plug-in for Rhino 5 had an option to keep the flow of the matched surface, thus it was able to achieve a much higher surface quality for product design.
Check the first 3 images in this topic to learn more about the missing feature:
See principle above. No need for noodling or moving the three-sided region further backwards. If one had the original curves, and if those were proper, it is not difficult to also achieve G2. It’s how you’d do it in Alias. In Rhino, you need to use Pascal’s invaluable planarise hull script for a good CP layout.
From my experience, overbuilding and trimming far from the edge works much better than the trim-near-the-edge approach. The reason is that the 3rd row of control points is located farther than the trimmed target edge, hence the rounded area at the top (the one trimmed by the blend curve at approximately 90 degree) must be also located at a greater distance to compensate for the needed space to match to G2.
Here is a sample 3dm file with my approach using both, overbuilding and split secondary surface into two halves: You have been taught wrong.rar (481.3 KB)
While a single secondary surface gives an acceptable result with some minor imperfections due to the extremely curved target edge trimmed by the blend curve, it’s nowhere near the surface quality of two separate surfaces that share the same highly curved target edge. An alternative is to use a single secondary surface with a greater degree, such like degree 7, in order to add a few extra control points to improve the matching.
Of course, this is just a quick test, so the G0, G1 and G2 numbers reported by the “Global edge continuity” tool are not ideal. It can be done better if there is no time constraint, but I’m too busy working on a project now.
I intentionally set the “Zebra” options to show the worst possible direction where the coloured stripes look slightly off. Nearly every other rotation angle shows the stripes much smoother, but the idea is to be able to detect the imperfections to fix them, hence the rotation angle of 13 that clearly exposes maximum imperfections.
It’s worth noting that initially I achieved smaller values for the G2 curvature of edge #0, but that resulted into uglier zebra stripes, so I gave a priority to the visual smoothness over the bare “perfect” numbers.
First and foremost, I wanna thank everyone for the many valuable inputs received.
@Lagom regarding the primary curves,they were all degree 5 single span curves. The small corner was built by blending an extracted isocurve to a split edge (same as Sky’s trick, using an intersected sphere to measure the distance).
I can see you suggesting a surface degree count to be a potential solution which make sense. I think some surface points, given this geometry, might still have to be manually moved to achieve what Sky achieved in his tutorial though?
@Rhino_Bulgaria that’s a very interesting take I never thought of (splitting the secondary surface in two). In order to do that, do you still used an intersected sphere like Sky did? Any particular order the secondary surfaces should be matched/split from there? Last but not least, was any manual point adjustment still needed after that?
I didn’t use a sphere, because I built my blend curve freely where I thought would be the best location for either end. It’s not necessary to use equal ends in such cases. Equal ends are typically needed when you build a highly curved blend surface. However, the goal here was to split the edge, in order to build two secondary surfaces instead of one. The reason for that was to get rid of the 90-degree highly curved edge. As I mentioned before, Bezier surfaces don’t work well in Rhino when you try to match them with G2 to a highly curved target edge (nearly 90 degrees in this case). That’s the reason to split it into two edges with far lesser curvature.
Here is what I did:
I extracted a new vertical isocurve from the primary surface, this time far away from the right edge. I also built a new blend curve at the top and used it to trim away the excess upper portion of the vertical extracted isocurve;
Then, I created a new vertical extrusion to the nose of the boar hull;
I trimmed the primary surface with both curves;
I created a 4-sided “Edge surface” using the blend curve as an input instead of the trimmed edge of the primary surface. That let me build an edge surface with nicer distribution of the control points;
I used the “OnSurface” option of “Match surface” to match the highly curved edge of the secondary surface to the split primary surface. As a target I used the blend curve. I used G2 continuity;
I untrimmed the primary surface and trimmed it again with the vertical isocurve and the matched edge of the secondary surface. The blend curve was no longer necessary;
I matched the left vertical edge of the secondary surface to the trimmed edge of the primary surface. I used G2 continuity;
Then, I matched the highly curved edge of the secondary surface with G1 to the trimmed edge of the primary surface. Matching with G2 would result in a chaotic order of the control points, this is why I opted for G1. Rhino still has lots of issues with matching degree 5 surfaces;
In addition to the above operation, I did some manual adjustment of the 3rd row of control points to achieve something like G1,9 manually;
I split the secondary surface with a new isocurve (with the “Shrink” option) that I placed in the most appropriate location;
Then I split the highly curved edge of the primary surface (where the blend curve was located);
I matched the left vertical edge of the secondary surface to the vertical edge of the primary surface, using G2 continuity and the “Automatic” option;
I matched both new secondary surfaces to the highly curved split edge using G1 continuity (a G2 would destroy the previous matching with G2 from step #11);
I also matched both secondary surfaces to each other with G1 continuity and the “Average surfaces” and “Automatic” options;
I activated the “Align to control point” mode of Gumball, and then I set the “Drag strength” to 1%. I activated both, “Global edge continuity” and “Zebra” (“Ranbow” mode set to Static" at 13 degrees to expose the imperfections of the surfaces). Then I manually adjusted the 3rd, 4th and 5th rows of control points of both secondary surfaces to improve the overall flow and achieve.
A quick comparison between both approaches. Note that the end point of the overbuilt primary surface goes past the 3rd row of control points of the secondary surface. This particular decision contributes for the greater influence of the primary surface’s flow over the matched secondary surface.
A single Bezier surface matched to a short trimmed primary surface:
Thank you @Bobi for the detail step by step explanation! I must admit, that’s a lot to chew! I thought the sphere was used cause a certain relation in the geometry split was needed between the two parts but clearly is not always the case.
That gives me more flexibility on one hand, but on the other, I was hoping to see Rhino’s software able to digest this without this level of points manual adjustment (to achieve G2 tangency that is).
I also started to go through the other discussion linked but I am not sure I understand if Rhino 9 will come with improved match surf capabilities? Or perhaps new tools that would facilitate continuity?
Either way, thanks again for all the details and explanation. Very interesting stuff
Rhino 9’s “Match surface” tool seems to have a better History-enabled correlation when you stack multiple individual matches of different edges. Altering the control points manually then updates the adjacent matched surface accordingly. I noticed that the behavior is different compared to Rhino 7’s limited usage of the History under the same conditions. I have to investigate this more.
When it comes to product design and achieving good G2 continuity with Bezier surfaces, in my opinion the biggest improvements in Rhino 9 are the following features:
The aforementioned History-enabled matching of multiple adjacent surfaces matched individually to each other;
The new “Control polygon” mode of Gumball;
The vastly improved “Global edge continuity” tool;
The static “Zebra”, especially its “Rainbow” mode.
I also like the new “Patch” tool, which could help in certain cases and save a lot of time, even though it’s not related to the single-span modeling techniques.
Hi @menno , with “single-span modeling techniques” I meant the typical high-quality Bezier surfaces that are manually enhanced by point editing. I consider the new “Patch” as a back-up tool for filling very complex holes, but from my experience so far in most cases it can’t compete with the controllable nature of the single-span surfaces matched with “Match surface”.
Perhaps adding a new option called “Relax” would help to mitigate the unevenness of the patch surfaces. Not to be confused with “Stiffness”.
The “Relax” option should take into account the general flow of the input edges and try to smooth out the patch surface in a similar fashion to avoid the sudden change of curvature in the middle area. I have tried many cases and most of the time an unwanted internal waviness is produced by the current implementation of the “Patch” tool.
You can observe the latter effect in this example, where I replaced my manually enhanced Bezier surfaces with new patch surfaces. The “Untrimmed” option is especially wavy, despite that the hole to be filled is relatively simple and the input edges have a relatively gentle curvature.
For this particular test I used the same 3d model which I uploaded in post #10 above.
Note that the Projected multi-span patch surfaces in the samples below are still very nicely looking when I turn off the “Zebra” analysis and switch to some shiny display mode or assign a shiny material. For less demanding projects, this is a great and easy way to make quick 3d models. However, for product design and especially cars, a “Relax” option for the Untrimmed patches would help tremendously.
Coming from Alias, I still believe the simplest solution, with a single surface, going to the point where the “bow curve” is “departing” the “keel curve” is still the fastest for such shapes, and also G2 can be achieved without much noodling at all ; )
The environment maps are quite misleading. Alias has one handy zebra analysis mode with black, red and white stripes. I don’t remember it name, but it can easily reveal any irregularities of the overall flow.