| I was working on an SDF-based CAD tool but gave up when I couldn't find a good way to do fillets. It's very deceptive because the easy way works so well (Use smoothmin instead of min and you get smooth blends for free! You can even use a circular approximation of smoothmin and get proper fillets!). But when you want the user to be able to pick a couple of surfaces and fillet between them, it gets really hard. This is the best I got: https://www.youtube.com/watch?v=LOvqdlDbkBs It worked by rewriting the expression tree so that the blend arguments become sibling nodes and then applying the blend to the union/intersection that is their parent. That works every time if you only want 1 single targeted blend, but if you want several of them then you can run into unsatisfiable cases where the same object needs to blended with several others and can't be siblings of all of them. So I gave up :(. For me, CAD without fillets and chamfers is no CAD at all. (Also, apropos for this thread: the discontinuity in the chamfer was a floating point precision problem...) |
I think the future is CAD is combined fields and breps. They're literally dual, one is covariant, the other contravariant (breps facilitate pushforwards, fields facilitate pullbacks).
One without the other is necessarily going to be limited in some way.