This tutorial covers how to fix bad geometry to produce printable STL files using netfabb Studio and Blender. In addition to netfabb's STL repair we will explore Blender's geometry extrusion and boolean operations, two very powerful tools that make 3D work a lot easier.
One of the many awesome things about 3D printing is it gives us the ability to create real-life models of exotic animals that could otherwise only be experienced through books and video. The Toucan Museum (http://www.toucan.co.jp/3DCGE.html) offers some very nice models of fish, plants and insects, but becuase they were designed for 3D rendering rather than 3D printing they have some issues that we will need to address in order to produce a viable physical object. Most of them have geometry holes because the gills aren't connected to the rest of the body. Also, the fins are extremely thin and far too fragile to print if the slicing software even picks up on them at all. We need to fix both of these in order to get a printable model.
- Open Blender and import the desired 3DS file. For this example I used Toucan's rainbow trout (nizimasu) model.
- Note all the black lines that aren't part of the geometry. Those are an artifact of the 3ds file and I want to get rid of them. Select all of the geometry parts of the fish.
- Object>Join (ctrl+J) to join them as a single polygon group.
- Delete all the stuff except for this polygon group, so just the fish remains. I did it by moving the fish out of the way, followed by a control-drag select and delete and then moving the fish back to the origin.
- Press shift+D and then Enter to duplicate the mesh in place. Name one of them Fish and one of them Fins.
- In the Fish mesh, delete the eyes and fins. In the Fins mesh, delete the fish body.
- Move Fish out of the way, then select Fins and enter edit mode. Our model's fins are actually two planes instead of a single convex polygon and we want to get rid of one of the planes so we don't have orphan geometry. Select and remove one of each of the pairs of planes (easiest is probably to select a vertex on each fin and then Select>Linked and delete).
These fins are razor-thin and won't print unless we make them thicker. Luckily for us Blender can do this in a single operation.
For each fin, select a vertex, then select linked verticies, and (E)xtrude. Type in the number 0.0015 or similar small number. What this does is extrude the selected geometry (a plane) along the normal of that plane by 0.0015 units, turning our plane of zero thickness into a flat polygon of 0.0015 thickness. By extruding along the normal rather than along an axis we keep the right shape even if the polygon isn't axis-aligned such as the bottom fins.
- The fish will look funny if the vertical fins aren't lined up right and they are currently a little bit off to the side. Select the vertical fins and (G))rab, Y +/- 0.00075 (depending on which of the planes you deleted). This will shift them over by half the extrusion width so they're centered.
We now have two parts of our fish, the fish body and the fins. We could combine them with the Join operation but this can cause some slicing problems due to internal geometry. Instead let's turn them into a single solid mesh with a boolean union.
- Select the Fish object and move it back to the origin at 0,0,0. The Transform pane makes this much easier. In the right-hand Object Modifiers pane, select Add Modifier>Boolean. In the modier pane, set the Operation as Union and the Object as Fins. Then select Apply.
We now have a solid mesh of our fish body as well as the fins. We are ready to export, though we may want to scale it up first.
(optional) (S)cale up by some value because this mesh is rather small. I scaled it by a factor of 15 to get a 6 unit long model.
You may have some duplicate verticies. In Edit mode select all verticies, and Mesh>Vertices>Remove Doubles.
- File>Export>STL. Give it a name and you've got an STL. Close Blender, we are done here.
We now have an STL but it has holes. We still need to fix it with netfabb.
Open netfabb Studio and import our newly created STL.
Select Extras>Repair Part.
Select Automatic Repair, Execute, and Apply Repair.
- Select Part>Export Part>as STL. Give it a name and export.
At this point we have a perfectly fine fish that should print without issue. However, if you want to go an extra step and can print using soluble support, let's adjust our mesh so that it fits on a display stand. This might sound like it's going to be a lot of work but it's actually very simple with another Boolean operation in Blender.
Open Blender and import our fixed STL.
Create or import a stand such as the one included in my upload.
We are going to use the stand to punch a hole in our fish. Scale it up by a very small amount, like 1.008. Note that you might have to print the base at a slightly different scale to get it to fit but it's going to be a much faster and easier print than our fish.
Move the base so that it sticks into the fish around a quarter inch near the center of mass.
Select the fish, and in the Object Modifiers pane select Add Modifiers>Boolean. In the modifier pane, set the Operation as Difference and the Object as our base. Click Apply.
- Export the STL.
Now we have our finished fish and it even fits on a stand, no drilling required! Note that printers can be a bit finicky with model dimensions so for a really good fit you might need to adjust the stand slightly, but it's a lot quicker and easier to print than the fish. I have also included a version that has some minor reinforcement around the bottom fins which was accomplished using another boolean operation.