What's the best approach for creating this transitional surface?

I looked at your 2nd model. I just tried it again with the Zebra. It shows some visible deviation. Maybe the set tolerance needs to be tighter in VSR?

As for the G2 case, as I mentioned above, if the adjacent surfaces are G1, the surface to match must follow the same principle. G2 will make the transition overly-smooth, which destroys the G1 flow of the original surfaces (the straight extrusion and the round body).

Honestly this is why I think discussions about continuity that are based in zebra analysis are kinda pointless. :man_shrugging:

The Zebra analysis reveals visual deviation. Curvature continuity also confirmed that. Not sure why VSR considers this to be watertight G2.

As for the continuity between surfaces discussion, having G2 does not guarantee smooth flow or smooth reflections of the model. G2 only gives a mathematically correct smooth transition of the 2nd and 3rd rows of control points, whereas the optical quality depends on the overall flow of the connected surfaces.

1 Like

This is a work of art @Rhino_Bulgaria. Bravo!


You can see from my post above the values that VSR spits out. Look at edge #3. The edge in question is G0 to 0.0001 and G1 to 0.17 degrees and G2 @ 0.07. I never said this was a class A model, I said it was G2. You’re sorta splitting hairs here - in fact essentially what you’re saying is if I point edit those verts it’ll be G3 across that centerline. Okay, sure, but I never said this was G3 and I never said this was Class-A.

According to Rhino 6, it’s even less than G1. You should be able to notice that deviation with the “Light lines” analysis of VSR which is an incredible tool that I miss so much in Rhino
If you extract that upper surface and use Rhino’s “Match surface” tool (either with 1 or 0,1 degree) with G1, you will notice that it will slightly improve the tangency. If you use G2, it will make it perfectly smooth, however, that will move some points of the 3rd row in a bad way*. This is why, in order to preserve the flow, I used “Match surface” with G1 and then adjusted the 3rd row of control points with the “Move UVN” tool. Of course, I use purely visual feedback to adjust these, to I can’t achieve a true mathematical G2. It’s more like G1,95 :rofl:

*A problem that I recently addressed here:

What do you consider to be a G1 (angular) target? What’s your threshold?

Visual smoothness is more important than what a mathematical G2 is. As I said earlier, in some situations G1 or G1,5 or G1,9 is better than G2.

Also, it’s important to notice that Rhino 6’s “Match surface” with G1 and 1 degree deviation improves what VSR considers to be G1 and G2. You can check that with both, Zebra analysis and Curvature analysis (try all 4 options there with the minimum and maximum setting).

I posted an example of what an Alias modeler did with deviation analysis and it was lacking proper flow of the control points. That’s because surface continuity must be checked with Zebra or Light lines, as well. Curvature analysis is also a powerful tool for finding tiny deviations.

That sharp red line right above G1,95? - what does that tell you?

I played with the mesh settings of the analysis mesh and that read area disappeared. However, the deviation is still noticeable. It tells me the continuity could be improved, because the Zebra analysis also shows zebra stripes that don’t meet were the surface edges meet.
Don’t get me wrong, I don’t want to argue. I just wonder why VSR considers this to be nearly perfect curvature while in reality it’s less than G1. Even Rhino’s “Match surface” with G1 and 1 degree deviation improves it to the point that the zebra stripes get nearly perfect, which tells me that the angle achieved with VSR is visually greater than 1 degree. With “Match surface” G1 and 0,1 degrees the zebra stripes get even better. And then, adjusting the 3rd row of control points with “Move UVN” make it finally perfect.

Old meshing that caused the red area:

New, more dense mesh setting that eliminates the visual bug:

VSR for Rhino 5 match surface:

“Match surface” with G1 for Rhino 6:

“Move UVN” G1,95:

VSR for Rhino 5 match surface:

“Match surface” with G1 for Rhino 6 + “Move UVN” G1,95:

VSR for Rhino 5 match surface:

“Match surface” with G1 for Rhino 6 + “Move UVN” G1,95:

1 Like

Right, but this convo is kinda pointless because there’s no real way to quantify an end point, since all you’re doing is staring at Curvature Analysis, which as you might gather I think is a totally dumb way to talk about continuity. You’re going over a model that I never said was class-A, and holding it up to Class-A standards. “could be improved” could apply to every single trimmed edge edge on every model in the known galaxy. G0 is a tolerance, right? G1 is also a tolerance, right? G2 is a tolerance, right? I told you up above - that edge has a max G1 tangency break of 0.17 degrees, according to VSR. Here’s that graphic again:

So - could that be improved? Sure. Does it need to be? That depends on what the target is for G1. Most people who try to build to G1 can’t hit 1 degree. For me, personally, I consider G1 to be anything under 0.2 degrees tangency break, which that edge is. If you had said to me “can you make this edge less than 0.1 degree” I would have said yes, of course. But it’s as if we are having a conversation where I set my file tolerance to 0.001 and you come along and point out that my file tolerance could be tighter. Okay, sure, but…? So when you say:

That’s a statement made without any context, and it’s being judged using a seriously flawed method. I’m showing you what numerically those edges are matched at - it’s all in the screenshot of the table - you can decide that you think my standards for G1 or G2 should be higher, but the way you’re assigning numerical values for your surfaces (G1,95…G1,5) is being pulled straight from your posterior. You’re just making up numbers, with the only basis for them being a curvature analysis color map. Right? I mean, tell me how you’re coming up with things like G1,5?

The funny thing is we probably agree on most of this. I know that Rhino’s MatchSrf will do terrible things to the third row of points because that happened to me too! So I massaged it manually using Control Point Modeling to get it where I wanted. Within my tolerances. The one thing we don’t agree on is that Curvature Analysis is a useful in quantifying edge matching. I mean - look at the updated pictures you posted - what the heck is that red area along the edge of the original surface? Seems to me like that needs fixing. Aren’t you going to fix those red specs? Couldn’t that surface be better?

As I mentioned in a previous post, using a regular “Match surface” with G1 will help to achieve a better tangency. And that takes just a few seconds. I think it’s worth it. In Rhino 5 it could do it the same way as in Rhino 6.

I know that everyone has own preferred methods to analyze continuity, but I would never underestimate the usefulness of the Zebra analysis and Curvature analysis. They have proven to be very reliable for my modeling during the years.

It’s pity that I can’t save and send you the improved surface so that you can check in with “Light lines” in VSR. By the way, have you tried to see if “Light lines” will return proper transition of the coloured stripes where the surface edges meet together?

I will also repeat my statement about the adjacent surfaces at the middle. They must not be G2 to each other, because G2 makes them too smooth and therefore can’t follow the G1 tangency of the adjacent surfaces (the round body and the straight extruded body). This is why reducing the G2 to something like G1 or G1,5 makes it visually more proper.

By saying G1,5 I mean something in-between G1 and G2, i.e. G1 with some improvement in the 3rd row of control points, but still lesser than G2. By saying G1,95 I meant a continuity that’s visually G2, but of course it’s done by eye, so it’s never a true mathematical G2.

Nevertheless, the patchlayout proposed by all is the correct one. If all surface intersect in a clean way (=theory shape), before the fillet blends are applied, the curvature flow will be very good. In class A modelling we consider a numerical value of tangent dev at 0°05 as G1. But as it had been said, this is no class A skin, so don’t be more holy as the pope will be. All did a great job!


TomTom gets it. I’m going to bed…


Thank you all for your wonderful examples. @Mark_Landsaat, @sgreenawalt, @germans, and @Rhino_Bulgaria all certainly nailed the look I was aiming for but I’m embarassed to say that the individual steps taken to achieve those results is still a little lost on me. I can follow in the macro terms, but I feel like there are small things I’m missing because my own attempts to replicate result in a transition surface that becomes impossible to MatchSrf effectively on all sides.

@mark_landsaat, my main question for you is what steps you took to develop the curves which trimmed the wheel section? Did you DupEdge the body section and then scale it up and project it onto the wheel section or something?

@sgreenawalt Did you use your god tier VSR tools only for the analysis part, or in the construction process as well?

@Rhino_Bulgaria your screenshot workflow is helpful but only to a point, unfortunately. Some questions for you:

  • Couldn’t that workflow have been initiated from the original file rather than Sky’s?
  • What’s the reason for aligning the 2nd row of control points in the middle steps, why isn’t the first row sufficient?
  • I’m not sure what’s happening in that step “Creating another cutting surface…” in which there seems to be a planar surface perpendicular to the wheels in the background. What’s that for? What’s it cutting…?
  • In the next step, when you say “merge this edge that was previous split”, equally difficult to tell what you’re referring to…
  • Try as I might, enabling “Planar sections” never seems to work for me. In my attempts to replicate your workflow, running BlendSrf between the two edges always results in a surface that is non-planar for the first row of control points. Planar section enabled has no affect on this outcome. Super strange. What might I be missing here?
  • This “remove multi knot” action is new to me. What’s the general logic/pattern for when to use this? How is this different from say, running Rebuild?

Here’s an example of me trying to follow @Mark_Landsaat’s workflow, and failing:

First, I create a set of points to indicate exactly on the wheel surface where I want to cut…

What I did was:

  1. Created an ellipsis that would be around the right size for what I’d want to cut into the wheel section
  2. Projected that ellipsis onto the surface…
  3. Split the surface, removed the unwanted portion…
  4. Tried running BlendSrf with Planar sections on.

As you can see, it’s definitely not planar. The surface is concaving inwards no matter what. I feel like this is the simplest workflow of all the options presented to me and even this attempt of mine is failing, ha :slight_smile:

Again, thank you all extremely.

For my approach, I found the theoretical intersection between the areas that you are trying to blend and I trimmed it back with a pipe that runs along the intersection of the two surfaces that you are trying to blend. See screenshot as well as .3DM, I left the intersection curve and the pipe in the file, but did not blend it.

For what it’s worth, I believe @Rhino_Bulgaria trim solution is better than mine. His trim follows the shape more naturally, because he’s using a copy of the surface. This has a much better relation to the original surface, than the pipe does.

If BlendSrf doesn’t do the trick for you, you can build two blend curves first and use Sweep2. As always, there are multiple solutions.

help_Mark.3dm (806.2 KB)

1 Like

Duplicate the Edge: DupEdge
Switch curvature graph on CurvatureGraph

If the hair direction is over the edge, the blend can not be planar.

Speaking of trims - I find I have way more control and get better quality trims doing this:

I use the surface edges as my inputs for BlendCrv. I only care about shape at this point - not whether the curves sits on the surface. Once you feel you have the right shape, you use Pull to suck the curve onto the surface as a trim. If you save the original curve you can go back and edit it if you don’t feel the shape is what you want. For me I feel like this is actually easier and offers greater control than using a surface as a trim. Just another way to skin the cat.

BTW to answer your question the surfaces I made were generated at first with VSR but then matched/tweaked with MatchSrf.

1 Like

Big fan of BlendCrv/Pull here as well, that’s how I created the trim curves for the yellow blends like in this dropout.


Here’s a very Rhino friendly way of doing this:

1 Like