Linear Extrusion of Bezier SurfacesPosted: May 26, 2011
After about two weeks worth of work, the Bezier Mesh project has finally reached a “1.0″ state. In the end, I have a routine in OpenScad which essentially allows me to do a linear extrusion of a bezier surface, to any thickness desired.
This little project started innocently enough because I wanted to create more interesting fillets to fit within my various 3D models. OpenScad does not have a built in fillet, and you can only go so far using the standard CSG functions (add, subtract, union, intersect) of OpenScad. Once I had the basic Bezier calculations, I thought, “well, it’s actually not that much further to get Bezier surfaces”, and logically it wasn’t.
This is somewhat interesting because Bezier curves were first used in the automotive industry to specify car body shapes and the like. That was almost 50 years ago. Nowadays, the various CAD and other 3D packages, have ‘curves’ as a core component, so noone really thinks of Bezier specifically. All they know is there are various points you click on and drag them around with the mouse to get different curvy shapes. And that’s largely how things should be.
There is a re-discovery here. Essentially, I want to be able to do those fancy curve things as well, but I don’t want to use the fancy UI programs to do it. So, this library is an enabler.
Now that I have the library, I’m looking at my various designs and thinking about how they can be enhanced using these curves. One of the first things I’ve made is a toy boat.
It took me a while, using graph paper, to figure out the various points on the curves that I wanted, but I eventually got something that is a good first draft. A boat has a bow, stern, and midships. So, I modeled those three pieces, and then stitched it together.
Along the way, I thought of a couple more functions that would make building this sort of model in text rather easy.
This has also brought up another line of thinking in my mind. Currently, most models on Thingiverse are distributed as .stl files. That is, rather than the raw stuff that helps you change the original, you get the end product. Well, as OpenScad has more features, it becomes feasible to use it as a transport mechanism. That is, I can send around .scad files, even to a machine. The advantage to that would be, the machine can better handle a higher level description of the thing you’re trying to produce.
At any rate, there’s more Bezier goodness to come. The next form of surface will take into account the actual shape of the surface when determining the ‘down’ side. Today, the ‘down’ facing surface is merely the same as the ‘top’, but dropped by the specified thickness in the z-axis. That’s why it is ‘linear_extrude’. The next version will include a true ‘shell_extrude’.