3d Fairing of Table of Offsets

I was wondering if any progress has been made on 3d fairing of data sets.

If one starts with ship coordinates in F-I-S+ format, the rounding transforms continuous curves into steps and zig-zags. Rounding causes most pronounced errors at the bow where things are closer together where even differences of less than 1/16" create noticeable defects. Yet, fairing in the vertical direction often causes unfairing in the horizontal direction (and visa versa).

I am wondering if there is yet a good solution for fairing in 3D.

Could you post an image or Rhino file to give us an idea of your goal?

Here is an example image. It shows a set of data points. The input data has been rounded. This causes zigzags or steps where the data should be smooth. The curvature graph shows these effect.

I could run the FAIR command on a curve. then generate new points from the intersection of the curve. However, that would only fair the data in one direction. When one does that, it tends unfair the data in the other direction.

What I am looking for is a way to fair the horizontal and vertical curves together (or the fair the points some way without curves).

Are you working with offsets from construction plans, or offsets from measurements of an actual vessel?

One approach:

Create a set of edge curves. First create polylines around the boundary from the input points on the edges. Use FitCrv to obtain a NURBS curve from the polyline. The polyline is used as the input to FitCrv because “When the input to the FitCrv command is a polyline, the FitCrv command treats the polyline vertices as a list of points, and it tries to compute a curve that goes near the points but has a reasonable number of control points. The FitCrv command is meant for polylines with many closely spaced points.” Experimentation with the tolerance value in FitCrv is usually needed to find the balance between minimum number of control points and curve fit to the input points and smoothness. Additional refinement of the curve using RemoveKnot and/or InsertKnot and manual edit of the control point locations may be needed. Fit to the input points is checked using PointDeviation and smoothness is checked using CurvatureAnalysis.

Create an initial surface from the edge curves using EdgeSrf. Use Patch to fit the initial surface to the input points using the initial surface as the Starting surface. Preserve edges will probably be desired. Use PointDeviation and CurvatureAnalysis to check the fit and smoothness of the surface. Experimentation with the Stiffness value may be needed. Use InsertKnot to add knots and associated control points if needed to allow the surface to more closely fit the input points. Run Patch with the updated surface to refine the interior control point locations. The trade-off of adding knots and control points is an increased probability of oscillations or similar in the surface.


You’re measuring points from a construction drawing? This is very inaccurate you know that right? Not only that these drawings are scaled but there’s also significant mistake in them for sure. Such mistakes become huge when scaling back to 1:1.

Even when using OffsetTable you simply can’t get accurate numbers. That’s why hull form modeling is considered more of an Art than an Science, at least for now :wink: .

I am using the tabular data.

Offsets on construction drawings are traditionally created by someone measuring the lines plan. The accuracy is limited by the accuracy of the lines plan which is a scale drawing, the accuracy of the measurements, and any rounding/truncation. Typically the rounding/truncation will be smaller the the accuracy of the measurements and the accuracy of the scale lines plan. The standard practice was to loft the offsets full size before building. Today lofting can be done using CAD but as mentioned above it is still part art.

Yep, that’s the problem. When there is a long, gentle slope, you get steps. Where there are curve, you get zigzags. PLUS, there is the problem of intersecting parts. I am trying to see if anyone has come up with a good way to deal with this yet.

Is this of any use here?

What do you define as a “good way”? I described a method I have used above. Usually a fair surface will have fewer control points than the number of input points from the table of offsets. For a shape such as shown in the illustration above the number of control points needed for a good surface would be a small fraction of the number of offset points.

This is the problem I am running into:

Let’s say I have am an hull data set (not fair). I have a main deck data set (not fair). I would like to add the main deck set to the hull set and use them to generate a fair set of curves. From there, I could generate a reduced curve set.

If I take the hull curves on their own and fair them. Then I wind up with a deck curve that is more off when what I stared with.

In reality I have multiple sets. One for each deck. Stringers locations. Strake edges. I would like to get a set of curves that work for all the pieces together.

You are just making things hard on yourself. Table of Offsets belong in the past where they served their purpose. Too Much Info is what they are using surface modeling.

But I am working with the past. :frowning:

Tables of offsets are all I have to work with.

Here is an an specific example of the one of the problems. The red black lines go thorough the point at the center. The red lines are curvethroughpt use the same points but omit the center point. Fairing the vertical line wants to take the curve to the left. Fairing the horizontal line wants to take it to the right.

I’ve worked from table of offsets before and it can drive you nuts. You have to realise the limitations of that process and not reproduce the errors inherent in such tedious measuring.

 I find that if faced with this challenge one should go through the table and plot each point in its 3d space. This will create a point cloud of sorts and then instead of creating curves for frames to loft you should just create a relatively simply NURBS surface and tweak it through point editing to get a 'best fit' to the points of your Table of Offsets 3d data. There are a lot of tools that will help achieve this 'Point Deviation' being probably the best start.


Good luck!

I wouldn’t model my surfaces directly from the table of offsets. Instead, add the points in the table of offsets as points on a separate layer and then use PointDeviation to test distances between your surfaces that you make and the points from the table.

When boats or ships are built from a table of offsets the lines are traditionally lofted full size, and an important part of the lofting process is reconciling the curves as well as fairing the curves. That is the reality of working with offsets taken from a scale drawing. It can be tedious and occasionally frustrating. If a very fair hull is needed then additional fairing may be done during the construction process.

When working with a table of offsets in software such as Rhino two different approaches are possible. One is to fair and reconcile the curves similar to process used in traditional lofting. The other is to create a surface model directly based on the offsets. That is the approach I usually use.


@stevebaer Why would’t you use the points from the table of offsets directly as the input points in Patch after creating an appropriate starting surface. That is an approach I’ve used (described in more detail above) to create fair hull surfaces which are close to the offsets.

What is making this project complicated is that there is the hull data points. Then there are data points that indicate where the plating goes. Deck offsets. Armor offsets. And a few more. All of these need to match up.

Because of rounding and a few erors, they don’t match up. That’s why I was hoping that there may have arise a way to fair the point sets (or curve along the point sets). From there I could generate a curves for each set that would line up.

In ye olde days, this was not a problem because they could just take a a persuader a make things fit. Our 20 digits of precision computer systems make things harder. The ship itself was 2 inches narrower and 7 inches longer than designed. In a way, it is kind of silly trying to get giant sets of data points to match up to 1/16" but to get everything to join up in the computer, that seems what has to be done.

1 Like