Issues and errors that arise because of the structure of the model can be the most frustrating errors to fix when it comes to 3DPrinting. Holes within the object and inverted normals are the most common. These types of problems tend to arise if the models were produced, or scanned, using software packages that were not necessary designed with 3DPrinting in mind.
In many cases, spending some time to editing the model can produce an object that is viable for 3DPrinting. Note, however, that hand editing individual vertices, edges and faces is only realistic if there problem areas are ether small and localized or if the total number of points is small. It is left to the readers’ discretion to decide if the total amount of the time and effort need to fix the problems with a model is viable.
Following are some details and some of the steps that can be used to fix problems with holes and inverted normals. For the purposes here, Blender, a free open-source package is used, but other modeling packages, commercial or free, can work too.
The Basics: Holes and Normals
A Hole in the Surface of the Object:
- A trivial example is the following cube with 16 faces to each side, except there is one missing face, and this will likely generate an error in when sent to a 3DPrinter.
- Again, this is trivial, but just to get the basics down, the problem is fixable. The first step is to select the vertexes/edges surrounding the hole, and the next step is to fill the hole, or make new face(s) or edge(s).
- The metaphor that is commonly used is: if the object were filled with water it wouldn’t leak.
An Inverted Normal:
- The concept of normal comes from geometry, used extensively in graphics, and is simply a line that is perpendicular to a surface.
- The order in which the vertices are listed and stored determines the direction of the normal. (The previous blog article on the Videre Analytics site, on STL file format, has more detail). For 3DPrinting all the normals need to be pointing outside the object.
- Here again in the trivial example of a cube with 16 faces on each side, and this cube has one face with an inverted normal:
- To fix the problem, simple select the face(s) in question and flip or reverse the normal.
A More Complicated Example: Part of a Scanned Object
- This next model is based on previous scanned bone and fossil projects in which the original physical object had damaged or broken areas. This translated into problems with the digital version of the model predominantly related to missing surface areas. Also, common with scanned objects, this model includes a number of stray vertices. These “extras” tend to be generated from the scanning process and when the software builds a surface, very odd edges and faces can appear.
- And here are the problems areas indicated in yellow/orange:
A Very Brief Orientation to Blender
If you are new to blender the interface can be overwhelming and some of the navigation might seem odd at first, but for this example a very small set of commands are used. The sample model is a bit more complicated than the cubes but the focus is the same: finding and fixing holes, along with finding and fixing any problems with the normals.
The Blender Interface (v 2.69):
Starting blender and the mechanism to read and importing a file is a straight forward matter. Expand the file menu along the top tool bar select the appropriate format. (File format and/or file conversion issues, are however, a different matter, and covered elsewhere.)
Very important: To use blender with a mouse a three button type is needed (I use blender on my laptop but I also carry around a trusted old three button mouse that I’m comfortable with).
Mouse navigation: Default object selection is done by clicking the right mouse button, and rotating the scene is done by clicking and holding the middle mouse button.
Blender (v2.69) after the model has been imported (minus the annotations):
The model is the light grey object in the middle of the scene. The objects with a black outline are the default camera and light used for rendering, but for this example they will not be used.
There are various menus surrounding the scene, but the menus of interest for this example are context aware and will change after the mode is changed.
Setting up the Menus for Editing:
The first step is to change from object mode to edit mode. This can be done by expanding the “object interaction mode” menu near the bottom of the screen and selecting “Edit Mode” (or the keyboard short cut: Tab key):
And, in this case, the Properties shelf is needs to be toggled on, which is in the View menu near the bottom of the screen (or the keyboard short cut: the N key):
Screen capture in Edit Mode (annotations added) :
Finding the Problem Areas:
Manifold / Non-Manifold
The term manifold can get very complicated and very detailed when looking at it mathematical, and for those of you that are mathematically inclined, getting an error stating that the object to be printed is non-manifold can be a bit perplexing. Some liberties seem to have been taken with the term non-manifold when it comes to 3D modeling and 3D Printing.
For 3D printing, non-manifold, is a surface that cannot be realized in three dimensions, i.e., a valid solid object cannot represent by the vertices, edges and faces of the geometry given.
Non Manifold is a very handy tool for finding the problems we are looking for. It can be found in the Select menu near the bottom of the screen.
Select -> Non Manifold (Keyboard short cut: Shift Ctrl Alt M):
Now the problem areas are highlighted. (Click and hold the middle mouse button to rotate the scene to see the model at various angels):
Only 44 vertices are indicated as being a problem so it is realistic to go ahead and fix them.
(For larger objects with multiple areas, the Show/Hide command is very useful to get an overall view of the location of the selected problem areas by showing only the selected or unselected items. It can be found under the Mesh menu).
Editing the Model – Removing Parts:
Finding and Removing Stray Vertices:
Before changing the model making a backup copy would be prudent
Since the origin of the digital model is known to have come from a scanning process, the assumption that some of the problem vertices are a result of the process and not part of the model is taken.
The goal for this step is to select all the vertices connected to the model and remove all those that are not.
Select a point on the Model: The first step of this process is to find all of the linked vertices. To do this, select a vertex (any vertex) that is definitely part of the object. (use the right mouse button to do the selection):
Select Linked: Next use the Select -> Linked command (Key board short cut: ctrl L)
The result is that all vertices linked to that point are selected, and the vertices that are not selected are the ones to be removed.
Select Inverse: To do these, toggle the selection by using the Select Inverse command (keyboard short cut: Ctrl l)
Now only those vertices and edges not connected to the model are selected (in this example there are only a few but with larger models this process can be very useful):
Deleting the selected vertices: The command to do this is in the Mesh menu: Mesh -> Delete -> Vertices. (Keyboard short cut: X)
Removing More Vertices (those that are not likely associated with the model):
It is a good idea to make several back-up copies as the editing process continues, that way it is easy to recover if too many points are removed.
Again, since the origin of the digital model is known to have come from a scanning process, the assumption is still that some of the problem vertices are a result of the process and do not belong to the model.
The goal for this step is to select and remove vertices that are suspicious. The process here is to use an iterative approach, select a few vertices, delete them, and check to see the result using the “select non-manifold” command and repeat:
Use the right mouse button along with the shift key to select the vertices, and the middle mouse button to rotate around the model. Deleting these vertices is the same as described above.
Here is the model with the stray and a few of the suspicious vertices removed:
Check to see the progress with “Select -> Non Manifold”
(Keyboard short cut: Shift Ctrl Alt M) as was done in the previous section:
Round two: Go back through the area, select and delete a few more points, as described above. (Note: There are other options in the “View”, “Select” and “Mesh” menus that are worth exploring as aids to the editing process, but are not covered here.)
After another round or two. The problem area should have a clean edge:
Notice that there is a single line of vertices (and edges) selected. Now the area can be filled.
Editing the Model – Adding Parts:
Filling in the missing part of the model
As described with the cube at the beginning of the tutorial, all the vertices surrounding the hole need to be selected. In this case, the use of the last command has made the selection for us, now the area can be filled.
(Another cautionary note: If there are multiple holes within the model, the “Non Manifold” command will select all of them, and that might not be desirable. Again, explore the other options in the “View”, “Select” and “Mesh” menus. The “Hide” command, the “Circle Select” and “Border Select” can be very useful with larger models).
The “Fill” command can be found on the “Mesh” menu. Mesh -> Faces –> Fill (keyboard short cut: Alt F):
And the results:
Checking and Flipping the Normals:
Because the directions of the normals depend on the order of the vertices and the right hand rule, (again the previous blog article, on STL file format, has a nice description) it is a good idea to check the normals while the new faces are still selected.
The toggle button need to view the normals is located on the properties shelf in the inner menu along the right side of the screen (This was opened in a previous section. If it is missing, or inadvertently closed, it can be retrieved from the “View” menu. View -> Properties , or with the keyboard short cut: N key)
Here is a close up of the area (expand the Mesh Display area if needed). There are two toggle buttons for viewing the normals: at the vertex or at the face. For the example here the face is used:
The normals are shown as blue lines.
And here is a close up. Notice that the normals cannot be seen in the new faces expect for a small blue dot. This is because they are pointing inside:
The command need to flip the normals can be found in the Mesh menu
(Mesh -> Normals -> Flip Normals).
As an aside and a cautionary note: The “Flip Normals” command works on the selected faces only.
There are two other commands that can be found in the “Normals” sub-menu that are very useful and arguable the first method of choice when it comes to an efficient method of fixing normals. Both the “Recalculate Outside” and “Recalculate Inside” can be used on the entire model at once.
To use “Recalculate Outside” for this example:
First select entire model use the” (De)select All” command, (it is a toggle command so it may need to be used twice)
Select -> (De)select All (keyboard short cut A)
Then use the “Recalculate Outside”
Mesh -> Normals -> Recalculate Outside (Ctrl N)
Here is the result (with either method):
Toggle the “Display Face Normals as Lines” button to remove the display of normals:
The Final Result:
Technically there is still an issue with it comes to printing this particular model, and that is with some of the very thin edges along the new faces. In this case, it is justifiable since the original physical object also had a few very thin edges. The quality if the final printed model will depend on the resolution of the 3DPrinter used and on the size of the model. In some cases, the thin edges may give an error, or simply not survive the printing process. In this case, the full model with the thin edges was printed successfully and the client was delighted that the printed object was a fair representation of the corresponding physical object.