Reverse Engineering 3D Computer Hull Shapes From 2D Lines Drawings and Offsets Tables


Stephen M. Hollister

New Wave Systems, Inc.



There is nothing new under the sun. This quote from an unknown source has been applied many times to the design of boats and ships.  Virtually all boats are developments or extrapolations of previous designs.  With the advent of computer-aided design for boats and ships, there is a desire to recreate many of these tried-and-true designs as 3-dimensional surface models to use as references or starting shapes.  For others, however, the goal is to recreate a classic design on the computer for study purposes or to build a replica of the vessel.  This 2D to 3D reverse engineering problem will be discussed in this article.


First, let’s make it very clear that there is no one unique solution to fitting exact 3D mathematical surfaces to a set of curves and offsets points.  In fact, the lines drawing and offsets data might not agree.  The traditional lines drawing approach by hand required the designer to both create fair curves (stations, waterlines, buttocks, diagonals) and to make sure that the curves matched up to each other in the three main drawing views: Profile, Plan, and Section. Generally speaking, however, one will find when studying lines drawings in books that the curves might look smooth and fair, but the lines do not agree exactly in the three views. For example, the half breadth of station 5 at waterline 3 in the section view might not agree with the half breadth of waterline 3 at station 5 in the plan view. On top of that, the designer creates the traditional offsets table by measuring or scaling off the half breadths and heights from the lines drawing. 


Hopefully, these errors will be within building tolerances. But, if you ever talk to loftsmen who have worked with these offsets tables, you will hear some great stories.  After dealing with possible errors in the offsets table, there is the variation between how loftsmen interpret the shape of the hull between the defined offset points and curves.  If you give a table of offsets and a lines drawing to five different loftsmen, you will end up with 5 different boats.  Another problem occurs during lofting when you begin to recreate and fair the curves full size. You tweak a little bit here and fair a little bit there and before you know it, the boat changes shape!  One story goes that when a designer came back to check on the final, full size loft patterns of his design, he said to the loftsman … “That’s a nice, fair hull, but that’s not my boat!”


Before going on, I need to comment on another term you might encounter: “a faired table of offsets”.  Well, most designers liked to think that the original table of offsets that were measured from the lines drawing was fair and accurate. However, loftsmen knew better. They knew which designers were the best draftsmen.  This led to the practice where the loftsman would create a new table of offsets based on their full-size templates.  These offsets were called “faired”, even though the original table of offsets might be perfectly fine.  Since these faired offsets were used to build the boat, then one might consider that they more closely represented the true shape of the original boat. But, then you hear all of the stories about how hulls were modified in shape during construction.  This now becomes a question of historical accuracy that is independent of the problems discussed in this article.



These traditional hand drafting and lofting problems are important because they are the exact same problems encountered when you try to recreate the 3D hull surface shape on the computer. Namely, given a limited set of 2D curves and offsets on a hull, there is no single way to fit a 3D surface to this collection of points and curves. Secondly, once you fit a surface to the original curve and offsets data, there is a great tendency to change the shape of the hull during the final shaping and fairing process.  The computer program is not smart enough to do this final shaping itself.  It needs the judgment of an experienced designer or boatbuilder. The next section will discuss the general process of using a computer-aided design program to recreate the curves and offsets data as 3D surfaces.



Before going further, you need to read the article called “Reverse Engineering”, by Stephen Hollister in the Tutorials section of This article goes into great detail about the techniques that can be used to get input curves and coordinate points into a CAD program.  It also talks specifically about using our Pilot3D program (which is a subset of our ProSurf 3 program for boats and ships) for performing these tasks.  You can also read the Reverse Engineering Example on the same tutorial web page.  This example explains how a Romer digitizing arm was used to digitize a damaged portion of a ship’s hull (with a radiused cut-out) and how the raw data was read into Pilot3D and fit with a NURB surface and then finally unwrapped to create the 2D pattern to be cut.



The following discussion will talk about how these techniques can be applied to the reverse engineering of a hull surface.



You need to start by figuring out what you want to do with the hull shape once you get it into the computer.  This really affects the effort you need to put into the task.  I will break the job into the following levels of difficulty:


Calculations Only - You only wish to get the shape of the vessel into the computer to do some calculations.  This means that you only need to define the shape for a series of stations along the length of the boat.  These shapes do not have to be perfectly fair because all calculation programs for hydrostatics and stability and resistance are not sensitive to the smoothness of the hull.  A one to three percent error is perfectly acceptable.  All calculation programs are based on station shapes so you do not need to convert the stations to a full surface model to perform their calculations.  All calculation programs, like NWS, SHCP or GHS, are based only on station shapes.  The conversion from stations (or other curves) into a full surface model is where the trouble begins.  You do not need a hull fairing program if all you want to do are the calculations!


Surface Fitting -You need to convert the stations into a surface model to take advantage of the capabilities of hull surface modeling and fairing programs.  This means that you need some CAD program that will allow you to skin, loft, or fit surfaces to the input station or curve data that describes the hull.  As I said, this is where the trouble begins.  Most surface programs use NURB surfaces (see the tutorial on NURB surfaces) to describe the shape of the hull.  NURB surfaces are very powerful, but they have their problems.  It takes some experience to figure out the best way to skin or loft the curves of a hull with these surfaces.  (By the way, some reverse engineering programs that use NURB surfaces for the non-marine market cost ten to twenty thousand (or more) dollars, like Raindrop Geomagic and Paraform.) You will notice that the quality of the fit of the surfaces to the curves will vary greatly depending on how you orient the surfaces and the quality and amount of input curves that you have.


Surface Clean Up - Once you have fit the curves with one or more NURB surfaces, you will have to clean up or fair the shape, just like the job of the loftsman.  How much of this clean up you have to do depends on what you need to do with the hull. If you want to take the hull and stretch or modify its shape greatly, then you probably do not want to spend the time to clean up the initial hull shape.  You should wait until you pull and tweak the initial shape into its final form.


Surface Fairing - If you want to recreate the original hull, but you do not care if it is perfect, then you can go ahead and use the program’s shaping and fairing tools to clean up and fair the hull shape.


Surface Accuracy - If, however, you want to recreate the original lines drawing and offsets table as accurately as possible, then you have to do the final shaping and fairing by changing the hull as little as possible.  This requires the exact same judgment as the loftsman on the loft floor.  Using a computer program, there is a great tendency to change the shape during this final fairing process.  One way to control this process is by keeping the original input lines drawing curves in the CAD program to show you how far you are changing the hull shape. Again, this is where experience is critical.  No computer program can make these trade-offs between accuracy and shape.



As you can see, this reverse engineering process is one of the more difficult tasks to perform, especially right after you first purchase your boat design program.  It is better to tackle this process after you have has a little practice with the program.  However, here are a few extraneous notes.


Note 1:  When you fit or skin or loft a surface through a set of defining curves, you often have control over the number of edit or control points or curves to use.  (We call them rows or columns of the surface.) The more rows or columns that you use in the fitting process, the more accurate will be the surface fit to the defining curves, but the more difficult it will be to perform the final shaping and fairing. More edit or control points mean more tweaking and fairing of the surface.  If you plan on modifying the shape of the original input hull curves, then you may wish to use fewer rows or columns in the fitting process


Note 2:  See the article on “The Dirty Little Secrets of Hull Design by Computer”, by Stephen Hollister for a good explanation of the problems associated with fitting NURB surfaces (or any type of surface, for that matter), to a set of input curves.




Finally, the following is just one example of recreating a 3D hull shape on the computer.  It starts with offsets of a classic canoe defined in an Excel spreadsheet, not necessarily in the most convenient format.



1. Opened up the BNMorris.XLS file in Excel.


2. For each station (spreadsheet tab), I saved them to separate TXT files using the File-Save As command.  I had to do this because Excel only allows me to output one tab sheet per TXT file.  I used the "Text (Tab Delimited) *.txt option for the Save As command.  Station 0 I called BN0.txt; Station 1 I called BN1.txt ... to the stem, which I called BNstem.txt


3. I used Start-Programs-Accessories-NotePad to read each TXT file and edited them to fit the following ProSurf TXT File Input format for polylines:




X1   Y1   Z1

X2   Y2   Z2

X3   Y3   Z3

X4   Y4   Z4

X5   Y5   Z5


This is the general layout for defining a polyline.  The ones I created typically had more points.  I did this for all of the station files.


4. Started up ProSurf 3 and changed it to display just one Window showing the section or body play view.  (Many people like the 4 view split screen, but I really prefer to look at one large view of the boat.)


5. For each TXT station file, I used the following commands:

    A. File-Data File Input-TXT Input to read in a TXT station file.

    B. Curve-CurveFit command to convert the 3D station polyline to a curve.

    C. Curve-ReFit Curve-Equal Spacing command to evenly re-space the points on the curve. This improves the fairness of the station curve.

    D. Right-clicked on the curve (not near any of the edit points) to see the attribute box for the curve. Turned the "Symmetric" check box to make sure that I will create both halves of the boat.


6. At this point, you should have all of the stations (and stem) read into ProSurf and curvefit and partially faired. Evaluate the hull in 3D View to make sure that you have both sides of the hull.


7. Now, you need to create the mirrored "other half" of the boat.  Start by selecting the Modify-Mirror Entity/Group-Mirror by Set Plane command and fill in the following values:

    X1 = 8.5    Y1 = 0.0    Z1 = 1.0

    X2 = 8.5    Y2 = 0.0    Z2 = 0.0

    X3 = 8.5    Y3 = 1.0    Z3 = 0.0

This defines a mirror plane at X = 8.5 [3 points define a plane] but it does not do anything.


8. Select the Modify-Mirror Entity/Group-COPY Mirror by Set Plane command.  Note that we want to make a COPY of each command and mirror it about X = 8.5


9. Pick the station curves at X=7, X=5.5, X=4, X=2.5, X=1.75, X=1, and the Stem. [But, do NOT pick the X=8.5 station, since there will be only one of these.]  Each time you pick a curve, the program will make a copy of it and mirror it about the X=8.5 plane.


10. Look at the boat in the 3D view to see if everything is OK.  Remember, all we have right now are 3D curves that run the length of the boat.


11. Display the boat in the profile view.


12. Select the Create 3D-Skin/Loft command. Then pick each station [near the top of the curve], starting at the bow station and continuing aft to the stern station.  As you pick each station curve, the program will "highlight" [invert its color] the station.  After you have picked the stern station, pick the right mouse button (anywhere) and a dialog box will be displayed.  Take the default values and just pick the OK button.  The program will then fit one NURB surface through all of the picked stations.  When I did this, I got the result shown below:





Actually, this is a "hidden line" view of the hull.  This is what I got even though I did no preliminary fairing of the input curves other than to curvefit the polylines and re-space the curves.  The fairness is not perfect, but it shouldn't take too much effort to fix it up.