3D printing from photogrammetry is fiddly and difficult. After a successful but expensive commercial print order, I spent a couple of days trying to prepare a model to print myself. I’ve finally got it to work – so here’s what I learned.
Ordering online – river wreck
My first attempt at 3d printing a model was of the Coombe Shallow Wreck 2 – a Swan River Wreck I recorded last year. Kevin Edwards was kind enough to sort out the file for me and make it all printable. I ordered it through Shapeways – a commercial 3D printing company in the US. It cost just under 50 Australian dollars to print and ship, and took just under a month to arrive. It is a useful model – in the river the visibility is often less than 2m, so seeing this entire wreck site is impossible in real life. Taking measurements off the model is also much easier than taking measurements while your tape measure floats away in the current. However, with a texture and the use of image enhancement, an orthophoto is significantly more useful. The final verdict was if I could print them overnight for a few dollars, it would be worth it – but ordering them wasn’t.
Grave from York Cemetery using UWA Makerbot Printer
This grave was captured by Sam Day using an iPhone and upwards of 800 photos during a training exercise. It was challenging because it was under a tree casting complex and changing shadows, which meant it took days to process and edit, and still came out noisey. Despite this, it’s an interesting grave – its part of the York Historical Society’s walk trail for its historical significance and has been damaged at some point – the Celtic cross is meant to be sitting on top of the block behind it.
I trimmed away a lot of the excess and left just the graves, then opened it up in Blender. I knew that I was aiming for a ‘watertight’ mesh – one that could exist in the real world (and so can be printed). This is also known as ‘manifold geometry’ – where there are no disconnected edges. The mesh had no holes in it, and had just one edge where the ground had been trimmed away.
A common strategy is using a cube and boolean modifier to build the base and close up the bottom. I had tried that the previous day and immediately ran into difficulty because the ground isn’t flat – so I had to extrude it then cut it with the cube, which left me with non-manifold edges I just couldn’t correct.
After a day’s fiddling and testing, and then a very quick complete redo in the lab, I finally settled on a good method.
- Trim the model in Photoscan, and export as an .Obj.
- Load it into Blender – taking time to scale it and orient. I used the measuring tape function and scale command (s) to get it a printable size – 1:25 worked well here. I also set the units to metric. To orient it I used the orthographic view, set the origin to geometry and used the rotation tool (r) in all the predefined views (top, right etc.).
- Swap to edit mode, then use Ctrl-Alt-Shift-M to select non-manifold edges. There were no holes in the model, so the only non-manifold edge was running along the bottom.
- Extrude (e) down on the z-axis (hit z and move the mouse). Scale them along the z-axis to zero, making a flat bottom (hit s, then z, then 0). If you want the sides to be straight, box select (b) along the edges and scale them on either the x or y-axis to zero, depending on which way they are facing.
- Select all non-manifold edges again. Go into the left-hand toolbar, under mesh tools use the Remove Doubles command to clean up the border (I used a value of 0.5) for this one. Then fill the faces (alt-f). You now have a watertight model with a flat bottom.
- Back to object mode, create a text object. Label it with whatever text you want – I included a description, location and scale. Use the ‘convert to’ command to turn it into a mesh. The solidify modifier can be used to give it depth, then make sure it’s positioned so it’s touching the mesh.
- Select the model and set a boolean modifier, select union and the text object. Apply it and delete the text object from the objects bar.
- Export it as an .stl file and import into Makerbot print. Check the scaling and position, then hit print.
A friend recommended I run it through Meshlab’s clean and check filters, which I didn’t have time to do – but on previous models it has helped. I also didn’t have to time to make sure the text was straight so… oh well!
The final print was just under 50g and took 3 and a half hours. For current Australian prices of PLA, that’s around $4.50. After a quick trim of the supporting material, it looked perfect – the structure of both graves is clearly visible. An obvious missing feature is the writing on the grave, so we will have to investigate how to combine the images with it for presentation. The text I added to the ground is barely readable, you can interpret what it says, but next time it should be bigger.