What's a voxel? Well, think of it like a three-dimensional pixel. In fact, the word voxel is short for volumetric pixel. Much like a pixel, which describes the attributes (like color) of an element within a larger composition (an image); a voxel can describe attributes about a physical location within a 3D volume. These attributes can include information about its material properties, density, color, and more.
Now, most if not all, currently available 3D CAD applications are simply unable to manage spatial variations in material properties. That's because most design applications have been built upon a surface modeling paradigm where a 'solid' object is defined as an object enclosed by a set of discrete boundaries. This is known as Boundary Representation or Brep for short. But, voxels are interesting because they offer a new paradigm where objects can be defined as a dense representation of material properties throughout a 3D volume. In addition, voxel-based representations fit perfectly within a new class of 3D printers which have multiple print heads capable of depositing different types of resin (i.e. plastic or rubber, clear or opaque, full color) within a single build volume (i.e. multimaterial printing). All of this means you now have greater control over how your designs will look, feel, and function. Below are just a few of the features available in Monolith - our stand alone voxel modeling engine.
The values for each voxel channel can be defined by a scalar function whose purpose is to define a density value for each XYZ coordinates in spaceThese functions can be algebraic expressions including combinations of the most commonly used basic functions [such as cos, sin, tan etc...]. You can also start by using one of the pre-defined functions like a gyroid, schwarz, enneper, scherk, among many others. In addition, the text editor can create sliders out of variables if the variable is defined in the form of fx:(1,0,10) where fx is the variable name and the three values in parenthesis represent the current, start, and end values of the slider. Therefore it can help you explore parametrically a larger space of solutions
Each voxel channel can be edited by painting within the boundary volume. It works similarly to other image editing applications where you control the brush size, falloff, opacity, etc. - only instead of drawing on a 2D image you're now editing the attributes in 3D voxel field. The free paint console also offers features for localized blurring, smudging, twisting, and other modifiers.
An image sweep will blend two or more images together along the vertical axis. A slider gives you the ability to control where each source image is located along the sweep axis.
An image blend allows you to blend images together by mapping three images to the orthographic planes(ie. XY, YZ, and XZ). Blending modes also affect how the images are composited together.
Voxel channels can be defined by creating geometric objects (ie. points, lines, curves, boxes, etc.). These geometric objects define the skeleton for a smoothly varying gradient in space which results in isosurfaces wrapping around any composite geometric configuration. Each geometry type has parameters that can be edited within the menu or control in the 3D model (such as moving a corner point).
As the name suggests, the twist modifier will convolve the base density values along a central axis. A slider gives you the ability to control the strength of the twist modifier.
The Inside/Out modifier translates density values from the inside to the outside, and vice versa. For example, the density value located at the center of the voxel field is translated to the outer most voxel coordinates. As the filter moves out from the center, each value is translated to coordinates that are moving in toward the center, until the outermost density values are combined and assigned to the center voxel. The result is an Inside/Outside effect.
The Gaussian blur modifier is a smoothing filter which is the result of applying a Gaussian transformation in three dimensions. The effect is similar to Gaussian blurring filters found in 2D image processing, only applied to a 3D voxel field.
The Symmetry modifier will copy density values within a voxel field across orthographic planes such that the resultant geometry is periodic and symmetrical.
The Minimum modifier is a 3D kernel-based filter which replaces each voxel density with the minimum value within its range (ie. neighborhood). The effect results in an erosion or skeletonization of the original source geometry.
The Maximum modifier is a 3D kernel-based filter which replaces each voxel density with the maximum value within its range (ie. neighborhood). The effect results in a dilation of the original source geometry.
IO (Input Output)
IO (Input Output)
Slice files (ie. a stack of images) can be imported for 3D reconstruction. Common image formats (such as .Jpg, .Png, .Tiff, and .Bmp) are supported. Slice files typically work best if the greyscale intensity corresponds to material density, as in magnetic resonance imaging (MRI).
Individual bitmaps (one for the primary and secondary materials) can be exported for 3D printing purposes. Currently, these bitmaps are setup to use the following configurations (600 dpi along X-axis, 300 dpi along Y-axis, and 845 dpi along Z-axis) and are saved as one-bit-per-pixel images.
Mesh files can also be saved out as slices where each individual slice represents a boolean intersection between the Shape and Material channels. If saving to a Rhino multimaterial slice file, then the slices will be saved to individual layers for easier processing. STL multimaterials slice files will save each mesh slice as a new .stl file.
Volume files (extension .vol) contain relevant information about the voxel configuration (ie. resolution, number of channels, etc.) and the density values attributed to each location in space. Volume files can be imported or exported to/from the stand-alone Monolith application. In addition, volume files can be used in 3rd party applications, such as the Rhino and Grasshopper™ CAD environments. The Monolith plugin for Grasshopper (which is included with the installer) provides features for importing, exporting, and modifying voxel files.
Unlike a volume file (.vol) which only saves the density values of the voxel field, a .lith file will save additional attributes about your current work session. A .lith file will save your layer configurations, including expressions and parameter settings. These files are generally more robust and have the ability to save additional resources along with the file.
Similar to typographic half-tone patterns which approximate high-resolution vector graphics into finite printable graphics - 2D bitmap patterns can be used to create 3D mesoscopic half-tone patterns.
When using bitmap images as a mesoscopic pattern, you can choose how you want that bitmap mapped throughout the volume. Current mappings include extruding along the XY, YZ, and XY axes as well as multiplicative and additive blending modes. As evidenced by the images on the right, the way in which an image is mapped to a model can have a profound visual impact.
Three dimensional voxel patterns can also be used as a half-tone pattern. The image on the right shows a 3D Gyroid voxel pattern being propagated throughout a larger macroscopic field condition.
Topology optimization is a process which seeks to find the optimal load path for a particular loading condition and boundary volume. Simply define the constraints of the system (such as the load and support regions and the boundary envelope) and optimization process will attempt to numerically optimize the distribution of material so that it meets the proscribed performance targets.
Monolith contains an analysis module for topology optimization. Images on the right show the process of setting up the loading/support conditions and the analysis routine. Visualization modes allow you to examine the Von Mises and Principal stress distributions as well as simulate deflection under the loading conditions. Principal stress lines can also be extracted from the voxel space.