Solid BlobsPosted: November 19, 2011
I must admit, although it is very exciting to think about not having to slice a .stl file for printing, and sending high level commands to a printer directly, we’re not there as yet.
The reality is, today, every printer consumes .stl files. So, if I want to share and print metaball based objects, I have to go the extra step of creating surfaces for those softly defined entities. Well, If you’ve done any metaball/blob programming, you might realize that they are a computational nightmare, if you actually want to generate an actual 2-manifold surface for them. If you want to render them in real time, no problem. These days graphics hardware will make short work of them. Mainly because you can use ray casting and determine on a per pixel basis what color something should be.
Problem is, I need a mesh, so it’s not quite good enough to simply cast all those rays. Of course I could cast rays, and create a mesh made up of single ‘pixel’ sized rectangles, but that’s not very satisfying, and will take quite a long time. I could take those cubes I created and do something with those…
I came up with another idea, and right now I’m trying to figure out if it’s a novel approach. It’s kind of a hybrid of approaches used for typical graphical rendering, but with a bent towards meshing.
At any rate, using this approach, I can render these metaball structures in relative realtime, and create 2-manifold surfaces in the bargain. I think that’s pretty nifty. At the same time, I added a simple “blobs()” function to the arsenal, so everyone can play with their meta… fairly easily. There are a couple of ways to refine the mesh. You can go with higher resolution when generating it in the first place, or you can use good old fashioned mesh refinement techniques after the fact. The latter is probably faster, and gives you more options.
And so it goes.
Now what am I missing… Oh yah, those Cubic surfaces. And let’s not forget realtime collaboration!