So you have your 3D scanner – maybe you bought one, maybe you turned a Kinect into one using our guide. Now; the question becomes – what can you actually do with that acquired data? While we offered a short list in our guide, one of the options, reverse engineering, is a pretty in-depth process that warrants some extra explanation. While we can’t show you everything you’re going to need to do to retopologize scan data, we wanted to at least introduce you to some concepts you can use on the cheap, by using 3D scans of this motorcycle:
The goal of reverse engineering a scanned part is to produce a smooth CAD model that can be easily modified and manufactured. A 3D scan is going to to be too rough and full of anomalies to create a cast part from; and of course you will be unable to modify any of it with any degree of precision. For the purposes of this tutorial, we will be using a 3D scan of a 2006 Kawasaki ZX-6R, provided by the Rochester Institute of Technology’s Electric Vehicle Team. They scanned it using a Primesense Carmine 1.09, which is very similar in technology and operation to a Kinect 1.0.
The first thing you’ll want to do is choose your tools; it’s recommended to have both a solid modeler and a surface modeler for breadth of ability, but you can get away with one or the other (if in doubt, get a surface modeler). Either way, your modeling package needs to support the importation of polygonal files, as all scan data will be in point cloud or polygon format. There are programs specifically made for this task, like Geomagic Design X, but they can cost several thousand dollars. We’ll show you how to do it on the cheap.
For this article, we will be using Rhino 4.0 to build surfaces based on a scan and join them together. This article assumes you have at least a basic understanding of Rhino’s interface, such as how to use the command line and move the camera. Before we get into any actual work, though, we need to create a custom display mode for Rhino; the ones that it ships with make it difficult to see the subtle changes in the scan data’s surface. Check the pictures below for the deets on creating your own Rhino view modes.
1) Import your scan data and align it to the three major axis of your workspace.
2) Map out where your surfaces are going to begin and end. Generally you want to avoid rebuilding fillets and surface blends using manual techniques – you will get better, more predictable results by using Fillet and Blend Surface commands, after you’ve already created the major surfaces.
In the sketch image below, I have printed out a screenshot of the model and traced over it. Blue and yellow are significantly different in their shape and major planar directions, so they will be made as two separate surfaces. The green surface, meanwhile, is a filleted blend between the two, and thus will be done using a Blend Surface command, instead of trying to create it manually.
3) Lay out 2D curves that follow the pattern you drew previously.
4) Use the “Project” command to project your curves onto the 3D Scan. The project command will project in both directions and on all available geometry; delete what you don’t need.
5) Rebuild these projected curves into usable ones. A straight projection will be unusable; it will be very rough and have potentially hundreds of control points; you want to minimize the amount of CPs in any line you draw. You have two options to rebuild these lines; you can either select them and use the Rebuild command for a quick but less precise result, or you can use Object Snap with End and Near selected, and retrace the lines using the Interpreted Curve command for a more precise, manual result. You can also use Point snap to snap to individual vertices on the scan.
6) Use surface commands to create surfaces using these rebuilt curves, following your original sketch. Note: Sometimes, it’s better to project a straight line instead of a curve (such as how I did with the top of the yellow surface), extend the resulting surface, and trim the result using the curve you actually want the edge to follow. I find this sometimes produces better results – the more control points your line has, the harder it is to control it and the resulting surface.
Remember to try and create fillets by using Fillet or Blend Surface. In this case, by using the Blend Surface (BlendSrf) command, I can get much tighter control over the way the surfaces blend together – if I tried to wrap the curves around the fillet, I would end up with difficult to control curves with bulges in weird places.
7) Check your surfaces for accuracy. You can do this by going to Analyze → Surface → Point Set Deviation in your toolbar at the top of the program. Select the polygon mesh and the surfaces that you wish to test.
When the analysis first comes up, it may look pretty bad, filled with red. Don’t worry; the initial parameters are pretty stringent. If you’re using millimeters, try changing your dimensions so that a really good point is about .01mm away from the reconstructed surface, a bad point is .1mm, and all points over 1mm should be ignored. Hit Apply to see your results! Pull out a ruler to see just how tiny .01mm is – this should be good enough for most purposes.
This concludes the basics of reconstructing geometry using connected surfaces! If you have any questions or want more information, please post below and we’ll try to answer them as best we can!