array of aspherical lenses by using displacement mapping.
The volume phase of the fablet adds baffles in between the
lenslets and assigns the two materials used (clear for lenses
and black for the baffles). The baffles reduce the light leakage between the neighboring lenses.
Finally, in Figure 8 (left), we show two examples of objects
made of procedurally defined materials with anisotropic
mechanical properties. The core of the material is made
of transparent and elastic material. We procedurally insert
helical (top) or straight (bottom) rods made of white and
rigid material. These rods influence the mechanical behavior: the helical rods allow twisting motion of the object in
clockwise direction and very little twist in the opposite direction; the straight rods transform downward side pressure
into transverse motion that causes elongation.
6. 1. Performance
We ran a number of simulations to test the scalability of our
initial implementation and its ability to provide fabrication
data in real time to a 3D printer. Even without significant
optimization, the initial OpenFab implementation meets
our key design goals:
• Across many sizes of slices, it can stream the data as
fast or faster than a high-end, multimaterial 3D printer
can output material (in our case, an Objet Connex 500).
• Time to first slice output is seconds, even for models
large enough to require hours to print.
• Memory footprint can be kept under a modest configu-rable threshold of 1.5GB without sacrificing these performance requirements.
Still, we observe that a significant amount of our runtime
is spent in the nearest distance and nearest point queries
and believe that a combination of optimized implementation of these and other key operations with data-parallel
code generation could easily provide at least an order of
magnitude performance increase to keep up with foreseeable future printers.
in Section 4. 4). The front face of the postcard (shown left) is
textured using a foreground layer of image texture. The back
of the postcard (shown right) displaces the surface to create
a spatially varying transmission effect. The amplitude of the
displacement at each point is driven by the luminance of the
background image. When illuminated solely from the front,
the background layer is not visible. When another illumination source is added from the back, the whole image becomes
visible (shown center). Similar to other textured objects, the
postcard fablet uses the nearest point query and distance from
the surface to perform texture-driven material assignment.
The marble table in Figure 8 (center) procedurally recreates the appearance of marble. It uses Perlin noise15 to
define a solid texture in the volume phase of the fablet. Note
that the material distribution changes continuously to create a graded material.
The microlens in Figure 8 (right) demonstrates a working, procedurally defined microlens array. The surface
phase of the fablet transforms a slab of material into an
Figure 6. Insect embedded in amber. Object priority is used to embed
the procedurally displaced insect mesh inside the outer amber
hemisphere. The amber region mixes small amounts of white material
according to procedural noise to model cloudiness and variation in
Figure 5. Three rhinos defined and printed using OpenFab. For each print, the same geometry was paired with a different fablet—a shader-like
program that procedurally defines surface detail and material composition throughout the object volume. This produces three unique prints
by using displacements, texture mapping, and continuous volumetric material variation as a function of distance from the surface.