Shrinking fillet surfaces

What is a “G2 fillet”?

My understanding is fillets in Rhino always have circular arc cross sections. Except for unusual situations a fillet surface with circular arc cross sections cannot be G2 continuous with adjacent surfaces

A G2 chordal fillet is what every product should be designed with, if only all CAD programs supported them better. :wink:

To get one in Rhino, you use BlendSrf or BlendEdge… but not VariableBlendSrf (again, Rhino sadly isn’t very consistent)… however, since both BlendSrf and BlendEdge requires edges as input, while VariableBlendSrf does not, to get a chordal, I often start with VariableBlendSrf (DistBetweenRails), delete the result but keep the trim, and then replace with a BlendSrf (I hope someone can tell me a better way).

A great CAD package also allows you to set a minimum desired radius (and also tension). In Rhino, you have to do a curvature analysis after the fact and to a tedious untrim dance since BlendSrf and BlendEdge (unlike BlendCrv) doesn’t have an Edit command…

Not yet - but in the next WIP BlendEdge and VariableBlendSrf will use chordal spacing to locate the control points.

-Pascal

4 Likes

Wait… VariableBlendSrf already has chordal with DistBetweenRails… EDIT: Wait, and it has G2? Hmm… why does the command line say “variable radius blend” instead of variable curvature blend?

Hello - the rails are found as ‘chordal’ in DistanceBetweenRails; the change is to how the control points across the surface are distributed - the new and improved way is that these are evenly distributed with respect to to the chord at that location:

-Pascal

2 Likes

The wording in the command line is confusing and potentially misleading…

When the “RollingBall” option is selected the " “radius” in the command line refers to the radius of the rolling ball.

When the “DistBetweenRails” option is selected the “radius” in the command line refers to the distance between the rails.

When the “DistFromEdge” option is slected the “radius” in the command line refers to the distance from the edges of the input surfaces to the edges of the blend.

@pascal This request does not make sense.

  1. A fillet has constant radius, circular cross sections so (except for exceptional situations) a fillet cannot be G2 continuous with the adjacent surfaces.

  2. A G2 blend surface between two surfaces is already the result of using VariableBlendSrf.

Hi David - I don’t know that ‘fillets’ are in general necessarily round in section, though yes, that is how Rhino uses the term. The VariableBlendSrf tool uses FilletEdge guts - as a consequence, it needs to be able to intersect the inputs, and has no way to Extend=Yes/No. This makes it much more limited than FilletSrf . We can arm wrestle about what to call it but the idea is to get G2 surfaces from the FilletSrf inputs and workflow/options…

-Pascal

Please keep the Rhino terminology consistent.

In that case VariableBlendSrf and/or BlendSrf need improvement. Don’t add confusion by adding “blend surfaces” to a “fillet” tool.

1 Like

I understand… Keep in mind that this is a (useful ?? ) change that can be made more or less right now to FilletSrf and that anything else, other than perhaps a new command with exactly the same code, is not going to happen for V7. How about let’s get it in there, and you can yell at us to do it differently and we’ll see what we can do down the road.

-Pascal

This is not correct. Fillet just means “Rounded Corner”. The term does not refer to its continuity but to its curvature. Breaking a corner instead of rounding it would be a chamfer.

A “Constant Radius Fillet” has a circular cross section.
A “Curvature Continous” (“G2”) fillet is referred to by its minimum radius and or its chord.
A “Blend Surface” blends between two surfaces without the necessity of “rounding a corner”

You are correct in general use. In Rhino a fillet consistently means constant radius cross sections.

I won’t yell at you after the fact. I’ll just chuckle when other folks complain about confusing and inconsistent nomenclature, and you get to explain it to them. :wink:

I’m skeptical that the change that can be made more or less right now to FilletSrf. Adding a blend surface capability to FilletSrf, presumably non-rational degree 5, in place of the rational degree 2 fillet surface, will require a new chunk of code in the command, not just a minor change to the existing code.

Oh, is this what you mean (that I call “tension” or what other software call “form factor”)?

bild

That’s a VariableBlendSrf I was just using with DistBetweenRails in V7 WIP and yeah, that CV distribution isn’t pretty at all, especially when the tool in question doesn’t offer any control over it…

Yes, that is correct. The equivalent of the TrimRefit command is used a lot, to close small gaps and to build substitute surfaces. So I’m really looking forward to trying that in Rhino!

@pascal, So I just tried “TestRefitTrim” in the V7 WIP and that is a very, very useful command. I use the following technique a lot and at first glance, it seems to be automated in a 1 button operation. Very exciting.

Manual approach
-Trim 4-sided single-span surface.
-Duplicate trimmed edges
-Rebuild curves as needed to single span
-Use EdgeSrf to create new single-span surface

Hello Pascal,

I’m really happy how you improved filleting. The shortest edge option for a G2 Blend/Fillet and the nice CV distribution are fantastic!

There is one thing I noticed though. Fillets are made up of multiple spans, with extreme density in some areas. This will make manual filleting more difficult.

Also uneven Control Point Distribution might result in uneven influence to the surface:

Uneven

Can this be changed or optimized to a cleaner single span style? I could imagine that this might impair Rhinos ability to fillet several contours at once, however doing fillets one at a time I would not need this to work, just in case. Simple clean patches are more important for me. Usually single span 7 CPs length wise always works great.

Maybe a “Single Span” Option in the command line would do, so users could decide themselves.

Just to avoid any misunderstanding, I dont mean a single patch for each contour. Surfaces obviously need to be filleted with as many patches as needed, also resulting in more and shorter patches in areas of greater curvature. As long as each patch is single span with an even CV distribution.

Best Regards

1 Like

Hello - the underpinnings for most, if not all of what you are asking are there in V7. Commands, not at already for prime time, like 'testFilletSrfNonRational` have provision for Bezier segments, control over the rail structure etc. Note this command is very unstable at the moment but just to give you some hope. I would love to get these sorts of features properly into a more comprehensive filleting command much as you outline. That said, I am not waiting under water.

-Pascal

4 Likes

Great, I’ll try that!