Fillets are a big issue

This is a boat I modelled for a client. It was a great success. It won 3 awards at the show, including supreme boat of the show at the Auckland Boat Show.

I modelled this boat in Rhino 4. It took me 12 weeks. 3 of those weeks were spent fixing the fillets, often by manually creating surfaces where the various fillet commands failed. If I recall correctly, there were about a thousand edges needing to be filleted.

Let’s put this in perspective. A quarter of the design / modelling time time was spent doing the fillets.

The marine specialist CNC guys were overwhelmed at how fair the principle surfaces were. All credit to Rhino.

Notwithstanding the fact that I modelled the supreme boat of the show, I didn’t get any more work from this client, because I took too long to do the fillets.

I recently went back to a pre-fillet save and tried doing the fillets in Rhino 5. It was no better.

So just to re-cap.

  • Modelled supreme boat of the show in Rhino
  • Created some of the fairest surfaces seen by the marine CNC specialists
  • Over 1000 fillets - mostly done long hand with sweep 2 rails because the fillet tools weren’t good enough
  • Didn’t get any more work from client because I took too long to do the fillets

If Rhino users / designers produce astounding work that proves cost ineffective for their clients, Rhino users switch to other solutions.

No one wants to spend a quarter of their design / modelling time fixing fillets.

Is this why 50,000 users haven’t upgraded?


Well, it might be, but remember that a lot of Rhino users are in fields like architecture where they really don’t care about such features, not to that level anyway. And if you already have SolidWorks the amount of improvement in filleting we could reasonably expect is not going to impress you, it’s not what you’ll get Rhino for.

Why were you building manual fillets with Sweep2? Use FilletSrf, it produces perfectly fine fillet surfaces, you just have to clean up…everything. I first really used it on a boat, and it was a bit of a revelation. Oh it was tedious for sure, but it’s partially offset by not having to go through the gymnastics of making sure your model is a fully sealed up solid just for the sake of having edges to feed into FilletEdge, and a lot of details turned out cleaner because a lot of “nasty” features are simply where fillets come together, and working with the raw fillet surfaces helps those details fall into place in a straightforward manner.

Actually, I far prefer the [quote] gymnastics of making sure [the] model is a fully sealed up [/quote] polysurfaces. It’s far more useful to me that way.

Guys, FilletEdge is an important tool… end if discussion.

You both are right, but to me the real question is not what does the majority of the users in each field need, but rather what tools does RHINO need for being the tool that users want and need.

Rhino has features that are easy to sell to customers, and even if they end up never using them they will be satisfied with Rhino because they KNOW Rhino can do the task, and that makes them proud of and inspired by the product. And they know they have the best tool for the tasks.

Just look at pro cameras, there are many features many photographers NEVER use, but they would not dream of buying a camera without that tool, because a pro tool SHOULD have it.

I say this because this is a reseller topic and not a user topic.

Um, on the Rhino web site, Rhino is currently positioned as: [quote]The world’s most versatile 3-D modeler[/quote].

In the Level 1 training manual “Overview - What is Rhino” (p13/244), Rhino is positioned as [quote]primarily a surface modeling tool[/quote]

In the Rhino 5 Users’ Guide “Chapter 2 Rhino Objects” [quote]Why NURBS modeling[/quote]
it says

So, surely, the world’s most versatile surface modelling tool with the flexibility and accuracy suitable for manufacturing surely ought to reliably produce fillets every time??

Maybe, maybe not… “Versatile” does not necessarily equal “right every time”… In the same way that a Swiss Army Knife is a versatile tool, but kitchen knife, a full-fledged corkscrew or a big-handled screwdriver will often do a better job - depending on whether you’re eating, drinking or screwing… :smile:

1 Like

aa[quote] A Swiss Army Knife is a versatile tool[/quote] only when you are so poorly resourced that you have nothing better to rely because the pre-requisite was light-weight portability ONLY.

I’ve been to a number of presentations recently where mediocre designers rave about the enabling capability of 3D printers that come at a huge “must have” price tag, and support and justify this “must have” investment by accepting the trade off by saying and promoting: “we can get by with free software like SketchUp”.

In my original post, I talked about the disatisfaction of the boat builder for whom I presented a design that won supreme boat of the show. The fact is that as the boat builder pointed out, it would take less than three weeks to do all the internal radii on the moulds with a putty knife or thumb and filler - and the external radius with wet and dry sand paper.

For the boat builder, the versatile tool was the putty knife, his thumb and wet and dry sandpaper. His expectation was that versatile modern software would have saved him this effort with manual tools. It did save him the effort, but at a cost, because the fillet tools (and therefore the software) weren’t versatile enough.

Is the reason why fillet edge fails, because it produces a degree 2 surface for the fillet radius

When you try and do a fillet by sweep 2 rails, if the cross section curve is a degree 2 curve that starts tangential to both surfaces, I can rarely maintain tangency to both surfaces during the sweep. The only thing I can do however, is maintain tangency to one surface, and position with the other (or vice versa), which is often unsatisfactory.

If however, I construct my cross section curve with a degree 2 control pont curve from rail to apex (edge of surfaces to be filleted) to rail, and then rebuild that control point curve to a degree 3 curve I can maintain tangency to both surfaces because degree 3 obviously gives me that flexibility. It might not at this ponit be a pure arc radius but who really cares? The fact is that it gives highly satisfactory results everytime.

If Rhino’s fillet edge command had an option to use a degree 3 surface for the fillet, instead of a degree 2 surface in “V”, I would hazard a bet that fillet edge would fail less often because it can more often maintain tangency whereas a degree 2 can’t necessarily maintain tangency in all circumstances.

If arriving at a more useful / more reliable (as opposed to otherwise better) fillet edge command was as simple as using degree three radii for the “V” direction, I would take it. It’s got to be worth a try. Degree 2 rigidity breaks, probably because tangency cannot be maintained. And broken tools are not that useful.

Hmm, but what you’re talking about isn’t actually filleting, and you’re also not remotely talking about anything that would actually help the issues with FilletEdge. The primary reason for FilletEdge to fail (in cases that are not user error for tying to do rounds in the "wrong"order or sloppy geometry) is that there are various fillet situations(more than 3 fillets coming together at a corner, where fillets cross polysurface surfaces, “full rounds” were surfaces disappear, that kind of thing,) that Rhino is simply not able to identify and know what to do with. If you follow the process with FilletSrf manually, they usually work out fine, the problem is not the fillet surfaces themselves it’s how to use them.

What exactly is your “rounding” process? Building such surfaces with Sweep2 is much more work than BlendSrf, that’s what I always used to use to clean up when filletedge failed, though now I only do that on nightmare messy geometry or where I specifically want a blend instead of a fillet(I think it usually gives cleaner surfaces than BlendEdge.)

It was lowercase jim, Mr The-Best-Rhino-Was-V2, who always went on about the superiority of the FilletSrf vs FilletEdge workflow, and he was right. Some enhancement to speed up the tedious parts of that process(like placing and trimming balls at corners) would go a long way.

Well it seems you had a whole interesting workflow in there for creating those blend/fillets… but the post was withdrawn.

My comment is this: it seems this is more like an argument FOR using Rhino rather than not… Is there any other software out there that can do the process you described with the same result? Sounds like although it might be painful and time consuming in Rhino, it may not even be possible with other packages…

The other thing I have to say about Rhino’s fillets vs other software: pretty much everyone else is licensing some kind of solid modeling kernel for their geometry engine. Solidworks does not make fillets, Siemens/Parasolid does. MoI does not make fillets, IntegrityWare does… Inventor does not make fillets, Spatial/ACIS does… I think CATIA does have their own kernel tho…

So, there is the old question: independence /interdependence / dependence…


1 Like

Well Mitch, I really wanted to remove all my posts because I’ve begun to realise that the solution I was suggesting probably already exists in [quote] BlendEdge [/quote] And what I really wanted to do (if time had been available) was to go back and see if BlendEdge was a good substitute for FilletEdge when FilletEdge doesn’t work. Maybe you guys know the answer to this already?


By the way Mitch, talking about Kernels, I can’t quite remember which came first, but ParaSolid, ACIS and D-Cubed were all originally kernels written in Cambridge, England, and were all pretty much originally the same people. If I remember rightly, ACIS is an acronym based on the first names of 3 guys who used to work for Parasolid. These are Alan, Chales and Ian. The S is for Spatial which is just a marketing outfit in Boulder, Colorado. If I recall correctly, I think all three guys used to work for, if they were not founders of ParaSolid. And I think the D-Cubed parametrics guys have pretty much been founded by the same people. And I think the young guns at D-Cubed (that was 20 years ago) write a lot of code under contract to pretty much anybody (including I believe both ParaSolid and ACIS). So, perhaps the way to go is to recruit D-Cubed to solve the fillet problem, and whilst they are at it, perhaps they can throw in their dimensional constraint manager (aka parametrics).

Hi Tim -
BlendEdge, as far as I know, calculates the rails the same way as FilletEdge, it just fills in the surface between the rails differently, so I would not expect it to work if FilletEdge fails, if that is what you’re suggesting.


Thank you Pascal for this. I was concrend that I was speaking out publicly without having checked my facts 100%. I will now reinstate my withdrawn post that describes my method of creating rounds when fillets and blends don’t work satisfactorily. The withdrawn post (in reply to Jim’s) read as follows [changes in square brackets]:

I accept that I may need to look again at blend edge to see if that helps. Blend edge seems to create degree 5 surfaces in V. But there must have been a reason why I abandoned this on this project also [Pascal I think has now explained why]. I just can’t remember it.
Notwithstanding this, I’m fully aware of the reasons or conditions why:

  1. fillet edge fails (this is context related)
  2. fillet surfaces can sometimes help but isn’t always the answer (this is context related)
  3. blend surf can sometimes help but isn’t always the answer (this is context related)
    The reality is that CAD software authors score points against each other as purists (but no one else really cares - they just want a tool that works) on how effective they can roll a ball, or do variable radius fillets and fillet edges tangentially between two surfaces as required. I don’t know how pedantic engineers are in reality as to whether their fillet is a perfect degree 2 curve or not (I suspect they rarely care unless the radius of the fillet is essential to the operation of a mechanism). For most people it is a visual thing. It’s a rounding exercise where the transition from surface to round / fillet to adjacent surface is not discernible with a crease or edge, and in all other respects looks exceptionally good.
    Not all modelling situations, as you know, are solvable by two continuous surfaces. Sometimes two surfaces mate with one at a T. This is often unavoidable in certain contexts.
    Creating a beautiful and satisfactory round edge is often essential for the proper completion of an object. Aesthetically, it can be the difference between a show winner and an overall show winner (as I believe I have shown). Who cares if a fillet is not a degree 2 curve if it looks right?
    My process is simple. In search of beautiful fair surfaces with minimal control points I do jump through all the necessary hoops to achieve polysurface edges with no naked edges requiring joins with join 2 naked edges. My customers want watertight surfaces that can be used to calculate volumes, volume centroids, hydrostatics and can be manufactured by 5 axis CAM systems on a right first time basis with absolutely zero hiccups.
    Not one fillet is ever produced until the design / model in principle is signed off to everyone’s satisfaction. To do otherwise would be insane. Then ideally all fillets are done at once. Or not, as the case maybe, when fillet edge fails.
    So my rounding process is simple:
  4. Mark the joined edge of the surfaces with duplicate edge or duplicate boundary as appropriate. Explode curves as necessary and use only what you need.
  5. Manually construct some construction geometry for the round on an appropriate construction plane with a circle, tangent tangent appropriate radius. Repeat in different locations where there is an obvious need for a different radius and make appropriate judgment calls about the transitions
  6. Measure the distance from the surface edge to the intersection of the tangent of the round with the surface
  7. Run a pipe along the edge of radius to meet the round. Change radius at certain locations where necessary. Don’t cap the ends or remove capped ends one way or another. Extend the pipe both ends beyond the surfaces such that they can be trimmed
  8. Trim the surfaces with the pipe. This creates my rail curves.
  9. Trim the tangent tangent radius circle(s) and rebuild degree to three. This is my cross section curve(s)
  10. Make sure that all my rail curves are continuous and join if necessary
  11. sweep 2 rails by maintaining tangency to adjacent surfaces
    The result is beautiful rounds with little or no cleanup. Sweep two rails varies the cross section as required - and of course, I can add further cross sections to vary my fillet radius. I do not care if it is not an absolutely pure degree 2 arc in cross section. The result is highly satisfactory. And quicker than any other method I have come across, particularly for those gnarly scenarios that resulted from the need to produce proper joined polysurfaces in the first place.
    Having specified my process, I am sure that any good application developer can script that little lot together in no time and make some money out of it. Better still, McNeel could create a “round edge” tool in Rhino with degree 3 rounds, not degree 2 fillets and a whole lot of unhappy customers would be happy as a result. I actually suspect, if they just modify the fillet edge command to optionally use degree 3 curves where appropriate things might work better.
    How do I bill my time for this?
1 Like

Watch this video:
Rhino should solve this kind of situations.

1 Like

I’m sure @chuck will want to see this video.

Thanks for posting the video. It shows off a nice interface ( @mikko , please take a look), as well as pointing out some obvious deficiencies in Rhino. We do have all of these corner cases already on our list of things to implement. We also have some good suggestions from several of you for how to improve the interface.

There are two parts to filleting. One is making accurate fillet surfaces (although I see comments here indicating that this is not so important to some of you). The other is figuring out how to resolve the corners. For good or bad, I’ve focused mostly on the first part, while picking away at the second as time allows. I will focus more on the corners from now on. Unfortunately, there is not a single algorithm that takes a solid and figures out how to resolve the fillet corners. Each case has to be done separately.

Next, I hope to finish work on corners where an edge between tangent surfaces interferes with the corner. After that, I will continue working on handling fillets along edge chains, making the result more like what you get when you call FilletSrf along the chain, with Extend=No. I will also look into the much simpler problem of filleting a solid, when you know all edges will be filleted.

I can’t make any promises when any of this will be done. Much of it has been started and is ongoing. I also have other projects, equally important, that I am working on that keep me from finishing this as soon as I wish I could.

Thank you for you feedback.

Chuck Welsh
Robert McNeel and Associates


Rhino’s polysurface edge rounding functions are its biggest weakness. Whether its fillet or blend edge, it doesn’t matter, the goal is to take a sharp edge and make a tangential round edge. Rhino fails in many cases that as a user its a problem. I have spent more time than I would like working around the limitations of these functions in Rhino. So if popular vote means something consider this post another vote for improving filleting in v6.

Rhino shouldn’t need a page like the link below to help users round edges. I don’t want to need another geometric kernel to fillet, this function is well within the scope of what rhino should do well.

Very well put, and right on the mark!

Good to know you will start working on corners also.
I would like to suggest you something that look a good solution for corners.
In Creo (PTC) you can choose different solutions for each corner in order to achieve the best result.
The best it’s always to have an automatic solution, but this it means be able to solve thousands of different kind of corner.
Having a selection could help you in categorize better the different solution. Or let the user be able to check different shapes.
I know you are clever enough to solve this problem by yourself, but I like to contribute my own.