Make Solid Tool

The property panel for the Make Solid tool is shown below. There are quite a few settings here, and some significantly change the behavior of the tool, so they are explained in detail below.

Unlike many tools in Meshmixer, the preview in the Make Solid tool does not automatically re-compute as you change the parameters. In some cases this tool can take quite some time to compute, so to kick off a new preview you have to click the Update button. In most cases you will see a progress bar with a Cancel button, however the cancel is not instantaneous, in extreme cases it can still take a minute or two for a click on the cancel button to have an effect.

Note that for the Solid Accuracy and Mesh Density settings, a Cell Size option is shown below the slider. Each of these sliders specifies a sampling rate for the surface, essentially a number of "steps" that the object is split into. Higher numbers mean more accurate results at the cost of slower computation and, in the case of Mesh Density, significantly more triangles. For casual use, the sliders are sufficient, but if you need repeatable results, the Cell Size boxes, which are editable if you click them, are a more precise way to define the subdivision step size.

The Offset Distance and Min Thickness sliders are only available when the Solid Type is set to Accurate. Details below.

When you Accept a Make Solid operation, we do not modify the input object. Instead, the solid is added to the scene as a new Mesh object, with "(solid)" appended to the original object name. The original object is also hidden, but you can turn it back on in the Object Browser.

How Does it Work?

Make Solid is a powerful tool that you can use in many situations, but it really helps to understand how it works. What Make Solid does internally is create an approximation of your input shape using a large number of tiny cubes known as voxels. This representation allows us to create an unambiguous solid from whatever input you send. It might not be the solid you intended, but it will be solid.

Once we have the voxel representation, we can do various things to turn it into a better approximation of your input shape. However, it is always an approximation. Like pixels in an image, these little blocks have a fixed resolution. Details smaller than a few blocks will likely be lost, holes may appear in regions thinner than two blocks, and sharp edges will likely be smoothed. You can improve the situation by reducing the block size, at additional computational cost.

The most obvious use of Make Solid is that you can throw in any set of overlapping shells, and get out a single non-self-intersecting mesh suitable for 3D printing. There are other uses, as described below. Note, however, that if you send in ambiguous parts—meshes with holes, coincident sets of triangles, or non-manifold geometry—the results may not be what you hoped for.

Solid Type

The Solid Type drop-down controls the basic behaviour of the Make Solid tool. There are four modes available, described below. The image below shows an example with an original object (left) that has two overlapping shells.

The Fast mode (top left) is the default. In this mode we mesh the voxel approximation, and then re-project the vertices back onto the input surface. This is quite fast and works well in easy cases, but the re-projection can introduce artifacts in complex areas.

Accurate mode (top right) takes the voxel approximation and computes a signed distance field which approximates the input object. We then mesh this distance field. Computing this distance field is significantly more expensive than Fast mode, and in some cases the result will not be as good as Fast mode (like in our example below). However, the signed distance field has other uses, as we will see.

Block mode (bottom right) simply meshes the voxel cubes, giving a blocky object. Note that sometimes non-manifold junctions will exist in this mesh.

Sharp Edge Preserve mode (bottom left) is based on Fast mode, but after the re-projection we try to recover sharp edges in the input. The way this is done is similar to the multi-step workflow described in the Edit > Attract to Target tool. This mode can be extremely slow, and still does not give perfect results, however you can quickly resolve small flaws using Attract to Target.

Color Transfer Mode

After we have resampled your input mesh, we can also resample the colors on those meshes. Currently we only support Vertex colors on the solid mesh. So, if your input object has Vertex colors, we evaluate the interpolated vertex color at each vertex on the solid mesh. This is Vertex-to-Vertex mode. If your input object has UV-mapped textures, then Material-to-Vertex mode will result in the color map being "baked" to the Vertex colors in the solid mesh. An example is shown below. The leftmost image shows the original textured mesh (with many holes). Middle is the default Make Solid result. You can see many artifacts on the shirt because the vertex density is quite low compared to the texture resolution. In the rightmost image we have increased the solid mesh density to get a crisper approximation. Note that the holes have also been filled with colors.

No Colors mode disables color transfer. The Automatic mode is the default. In this mode, the Material-to-Vertex mode is used if the input object has UV-mapped textures, otherwise vertex colors are transferred.

Solid Accuracy and Mesh Density

We explained above that Make Solid approximates your object with voxels. This approximation actually happens twice. First we voxelize the shape using Solid Accuracy as the sampling rate. Then we use a second set of voxels to create a mesh of the first voxel approximation. Mesh Density is the sampling rate of this second voxelization. These sampling rates can be the same, but they do not have to be.

The example below shows Fast mode with solid/mesh rates of 128/128, 32/128, 128/32, and 32/32. The effect of reducing the Mesh Density is clear - fewer triangles. Reducing Solid Accuracy is a bit less obvious in this mode because of the reprojection step. However even in the second image we can see that some details are lost due to the low-resolution underlying solid.

The next image shows the same solid/mesh rates as above, in Accurate mode. Here, because we do not reproject the mesh onto the input surface, the effect of the lower Solid Accuracy is more obvious in the second image. A high-resolution mesh of a low-resolution solid makes it clear that the underlying surface is essentially a smoothed-blocky version of the input object. The smoothing is done by a linear filter.

Offset Distance

A significant benefit of the Accurate Solid Type is that we can compute offset surfaces of the signed distance field that we have computed. This is done via the Offset Distance slider. Positive distances result in outer shells, and negative distances create inner shells. We use this capability in the Hollow Tool. The accuracy of the offset surface is on the order of one cell-width. The offset is still a solid with no self-intersections, which is one advantage over our mesh-based Edit > Offset tool. Note, however, that if the original Make Solid has lost thin features, the offset surface will usually have the same artifacts. Also, we only compute the distance field out as far as necessary, so large offsets will take longer to find than small ones.

Min Thickness

Another capability of the Accurate Solid Type is that we can attempt to selectively thicken thin regions of the input, using the Min Thickness setting. The example below shows a horse model which is quite small (about 25mm tall). At this size the legs are very thin. The right image is the Solid version with a min thickness of 1.5mm. Note how the thin legs have been locally thickened, but the body is unmodified.

Currently the way we achieve this thickening is to add in small spheres with a diameter set to the minimum thickness. This can unfortunately lead to artifacts. The image below shows the same horse but with Min Thickness set to 2.0mm. Notice how the legs have gotten quite bumpy and rounded. This is, of course, due to the spheres we have added. Our detection algorithm can also go wrong, like it has on the horse's right ear above. This capability is somewhat of a work in progress, but you may find it helpful in some cases.

Cull Edges Threshold

The strategy we use to mesh the solid approximation we create initially produces meshes with many small and thin triangles. The Cull Edges Threshold slider controls a post-processing pass that discards these tiny edges. We throw any edges away that are a fraction of the voxel edge length. The slider is specifying this fraction, with 100 being 25% of the edge length. Note that this cleanup can introduce artifacts, particularly on very smooth or thin areas. You can get better results by setting this value to 0 and manually remeshing using the Edit > Remesh tool, however it will be much slower.

Close Open Boundaries

Make Solid works best with input objects that are a set of closed shells. However, you can also run it with meshes that contain holes. In this case our default behaviour is to automatically fill the holes before we try to create the solid, using the Minimal mode of the Edit > Erase & Fill tool. However, in the special case where your input object is a set of adjacent open patches of mesh, then each patch boundary will be treated as a hole and filled. This will likely produce terrible results, as shown in the example below. In this case you can un-check Close Open Boundaries to skip the hole-filling step.

Auto-Repair Result

The meshing algorithm we use inside Make Solid can in some cases leave tiny holes and/or create a few non-manifold edges. You could clean these up by running the Inspector afterwards. The Auto-Repair Result option saves you the trouble and does that automatically. However, sometimes you might wish to clean up these artifacts manually. And, in rare cases this auto-repair can be the source of a crash. So, we provide this option to disable the auto-repair postprocess.

Transfer Groups

When enabled, the Transfer Groups option attempts to map the face groups of your input objects to the output solid mesh. This is done much like the Color transfer above. For each triangle in the solid mesh, we find the nearest triangle on the input mesh, and use that triangle's face group. However, because the triangles have different shapes, this will always lead to a jaggy boundary on the solid mesh, and in some cases, disconnected triangles from the same face group. You can try to clean this up using Select > Modify > Smooth Boundary.

Other Resources

The Meshmixer 101 video series has a short Make Solid tutorial, which you can find at this link.