Happy Halloween, folks! In honour of my favorite holiday, today’s post is about how I scanned part of my Halloween costume to be 3D printed.
Let’s start with the costume idea; this year, I wanted to be Krang from the Ninja Turtles. Yeah, this guy:
Aside from the fact that I’m not a 7-foot-tall neck-less battle robot, I also don’t have a brainy overlord hanging around, which presents some technical difficulties. I had to make Krang!
After much deliberation, I made him out of clay. I must say, I’m pretty pleased with the results.
At this point, I started to think: what if I scanned and 3D printed him? It’d be neat to have a copy! Besides, what’s the point of having cool toys at work if I don’t play with them?
For this scan, I used the Occipital Structure Sensor connected with an iPad. I’d never used this device before, so I was very excited to give it a try. Some of the advantages I noticed were that it’s easily transportable (certainly easier than carrying a fragile clay model around on public transit), has a really good price point and is incredibly simple to use.
To scan, you simply fire up the app on the iPad and point the camera at the object you wish to digitize. There’s a bounding-box that you can set to exclude things that you don’t want to capture as part of your model, such as the surface the object is resting on. I had a bit of trouble with this step and caught some of the table that Krang was sitting on. In my case, this was acceptable since I was planning on importing the model into BuildIT anyhow, and I could easily remove the excess plane there. I didn’t look for any editing tools associated to the structure sensor app itself, but I’m sure that, with a bit more patience than I had, you could easily set the bounding box properly.
I took my scan on high-resolution, and did one full rotation of the object, along with a top view. It took a couple of minutes since I had to go slowly in order to capture keyframes and ensure that the images were properly stitched together. Once I felt that I had sufficient coverage of the object, I simply clicked to stop scanning and emailed the file to myself from the app.
Next, I imported the file into BuildIT using a nifty little script that Mathieu (our Director of Engineering) cooked up. It generates a point cloud from the .obj file and then colours those points and applies the texturing from the .mtl and .jpg files. You can check out a video of it in action here. As you can see below, it did a really nice job!
To send this file for printing, I needed an .stl mesh. Before I could create the mesh from my point cloud, though, I needed to clean it a bit. I had to remove the extra surface I scanned by accident. In BuildIT, I went to split the cloud of the desk from the main object and then created a mesh.
To split the cloud in BuildIT and remove the table surface, I simply went to Edit > Point Cloud > Split Clouds
First, I rotated the view so that the table surface was perpendicular to the view, allowing me to easily select the points on a plane.
Then I selected the cloud, used the Polygon Selection tool to select the plane, and applied the command. After that, it was easy to remove the unwanted point cloud from the view.
The next step was to generate a mesh of the main cloud. I went to Construct > Create Mesh from Cloud.
I selected the main cloud, set a Sampling distance of 0.0004 and the Neighborhood scale to small. Then I checked the Fill holes option and had it get rid of anything smaller than 1 inch, to create a fully watertight mesh. You can also fill holes using the Fill Holes command under Edit > Mesh > Fill Holes
Now the mesh can be exported as an .stl file and sent to be printed.
Next time, we’ll look at scanning the 3D printed part and comparing it to the original cloud to see how accurately my new Krang was rendered!