I’m reading a paper on CACM describing a project known as “OpenFab”.
OpenFab is an experimental process for preparing immensely complex 3D models for 3D printing using a revolutionary technique derived from computer graphics.
In today’s 2D graphics world, most of the work is done by a rendering pipeline. One you may have heard of is OpenGL and there are a few others. This and similar frameworks allow for the incredibly fast and powerful rendering that occur in real time on your computer screens. All that must happen is a program must adhere to the framework’s interface, and the work is executed on virtually any PC.
But there is no equivalent process for 3D printing.
A 3D Printing Pipeline
In fact, if you think about it, the world of 3D printing is today much like the graphics world of 1980s computing, where each machine required its own drivers and tried to “do all the work”.
This architecture is incredibly constraining on future possibilities for 3D printing. Today we’re beginning to see that barrier.
Most 3D printers of today use a mono-material making process that involves deposition or fusion of a single material. This structure is easily supported by using static 3D meshes to provide input on what to make.
How To 3D Print Multiple Materials
But things start getting far more complex when multiple materials are used. In most cases today, multi-material 3D printers require the use of separate 3D meshes for identification of the separate materials. This works, although awkwardly, for systems with a small handful — like under five — of different materials.
But what happens when you want to use many more materials, and do so in complex patterns?
Oh, you say, that doesn’t matter because my 3D printer does not do that. Well, it turns out there are an increasing number of powerful 3D printing processes that offer voxel-level control over materials. In particular, I am thinking of HP’s MJF process, as well as Stratasys’ PolyJet and even XJet’s NPJ process. All of these can theoretically produce highly complex prints with microscopic material changes.
But they don’t.
3D Print Architecture Constraints
Why? Because the current architecture of 3D models and meshes simply doesn’t work at that scale. Imagine the complexity — and benefit — of a five-way gradient pseudo-material that could be part of a component. How on Earth would you describe that in a 3D mesh? Impossible.
Not only is it rather challenging to describe, it would be even more complex to process it. Imagine slicing a 3D model with extreme resolution. A 3D printer that can print at 300dpi can produce 27M voxels per cubic inch, ALL of which can potentially be different materials.
Processing such complex 3D models in today’s slicing architectures would be silly and endless. Something new is required. That’s where OpenFab comes in.
The researchers have essentially cloned a rendering pipeline concept and adapted it for 3D printing. Here’s their basic flow:
They first take a series of inputs, which are somewhat different than today’s inputs, and create the surface using a two-step process. First, the exterior shape is devised using the tessellation step. Then, something called a “FabLet” is used to modify the surface.
What is a FabLet?
A “FabLet” is a chunk of user-supplied code that generates a different surface based on the original tessellation. This is how the microscopic complexity is obtained.
Similarly, the volume phase first creates voxels within the surface geometry, then uses more FabLets to generate the complex structure inside. In the image at top, you might think the wispy simulated amber in which the butterfly lies is a material or printing artifact. No, it’s actually generated specifically by a FabLet that periodically introduces white material into the print.
A final “dither” stage adapts the output to be compatible with the target 3D printer.
The output is streamed to the printer, rather than sending the entire set of instructions. This is because the set of instructions would be massively gigantic for such complex objects and would overwhelm the unfortunate receiving 3D printer.
When you think about things in this way, you definitely realize there are significant limitations to current 3D printing architectures. A concept like OpenFab — or perhaps even OpenFab itself — may soon gain adoption among manufacturers of this type of 3D printer.