Our current implementation is more than fast enough to
keep up with current printers. But, as printers get faster,
build volumes grow, and fablets become more complex, it
will be important to improve performance. Fortunately,
there is an enormous room for optimization and parallelization in our implementation. The nearest surface queries
from the volume fablet phase are a major component of our
programming model and the single most expensive operation in our implementation. There is an opportunity to make
these queries more efficient. Further, it will be interesting
to define more complex surface-volume attribute relationships, such as alternative attribute interpolation methods.
Finally, native backends for many types of printer hardware will be important to realizing the full potential of the
OpenFab pipeline. OpenFab was designed from the outset to
drive continuous material output at full printer resolution.
Current commercial printer software, however, is limited to
STL format input and fails when given more than a few million polygons. This significantly limits the scale of spatially
varying output we can feed to current commercially available
printers. The printer backends, however, take raw full-resolution bitmaps of each slice. Interacting with printers at the
raster level will allow streaming prints of continuous material
variation at much larger scale.
Given the high-frequency details in dithered
7. DISCUSSION AND FUTURE WORK
We have found the programmable pipeline abstraction a
surprisingly powerful way to describe complex multimaterial 3D prints with a wide range of mechanical and optical
properties. We think the OpenFab pipeline provides a solid
and scalable foundation on which to build many multimaterial fabrication techniques.
The current programming model is powerful, but it is
not the most natural way to describe all possible results.
In the future, we think there is a great opportunity to
spread proceduralism throughout the pipeline. Procedural
geometry plugins could be more natural than the existing
fablets for some types of geometry (e.g., synthesizing L systems) and would be complementary to the existing stages.
Programmable dithering could also increase the flexibility
of the pipeline and the degree of user control over the exact
Designing a full ecosystem around this pipeline is a natural direction for follow-up work. This could include a procedural modeling tool, a visual fablet authoring tool, and a print
preview based on measured material properties. It is also
desirable to extend the pipeline to integrate various mesh
optimizations for automatic partitioning of large prints14 and
automatic detection and correction of structural stability. 18
Performance is another area of possible future work.
Figure 8. Left: procedurally defined materials with anisotropic mechanical properties. Center: Marble-like material generated using Perlin
noise. Right: Procedurally defined and fully parameterized aspherical microlens array with baffles.
Figure 7. A procedurally defined foam material makes the bunny and bear squishy. Color and squishiness vary procedurally over the models.