Fillet functions and understanding OverOffsets #44
Replies: 1 comment 1 reply
-
Hi, @eflehder1 Since we are dealing with voxelfields and not with individual surface patches, it is not easy to obtain a single edge fillet. However, we have a bunch of functions to smooth out sharp-edged corners. Since they are always applied globally on the entire voxelfield, you need to consider in your algorithm when a smoothening step is suitable. Usually, I keep "fine-detail" voxelfields separate from "low-detail" voxelfields (like bounding shapes and chunky parts) until the very end of the algorithm. This way I can smooth the coarse bits multiple times without destroying fine details. I recommend to check out the OverOffsetShowCase.cs in the ShapeKernel examples folder. It helps you to visualize how you can use the OverOffset function to achieve rounded corners. The basic Offset function is not reversible as it "destroys" details below the offset value threshold. This means that if you offset outwards by distance x and then you offset inwards by the same amount, you will not have the same shape as before. This is what we call OverOffset. I am using this function to selectively "destroy" convex or concave details on my voxelfield. If you offset outwards by 3 and then back to 0 you have roundings of R=3mm on all concave parts of the geometry. If you offset inwards by 3 (-3mm) and then back to 0 you have roundings of R=3mm on all convex parts. If you combine these two OverOffsets you "destroy" convex and concave details alike and you arrive at our Smoothen function. ![]() This is a very powerful toolset. It needs some practice to apply it correctly in your code. I hope this helps! |
Beta Was this translation helpful? Give feedback.
-
Hi @josefinelissner @LinKayser, with a feature like the one shown below, would the best way to ensure a smooth transition from one part to the next be to use multiple shapekernel frames with a spine, or is there a 'fillet' feature that can automatically create this transition between two parts merged via BoolAdd?
Beta Was this translation helpful? Give feedback.
All reactions