Pilot3D Tutorial

On Fairing

Curves and Surfaces

 

 

 

 

Copyright 2001, by New Wave Systems, Inc., All Rights Reserved

 

 

 


Fairing Overview

 

 

In spite of what you may have heard, these two statements are true:

 

1. There is no mathematical definition of fairness. 

 

2. The fairness of a curve or surface is based on human interpretation and judgement.

 

This does not mean that everyone would disagree on the fairness of a curve or that there are no mathematical tools to use to check for bumps and wiggles.  It just means that there are no good ways to automatically fair a curve or surface by computer without some form of human input.

 

Let’s start by examining the traditional fairing process on the drafting board or on the loft floor.  The first tool of fairing is the large size of the drawing and the use of the human eye.  Given a large enough drawing, the human eye can easily pick up subtle shape changes (within building tolerances).  There is nothing like putting your head near the drafting table and sighting down along the curve.

 

For the traditional lines drawing process, there are two interrelated processes taking place: fairing the curve and matching up the three different views: front, top, and side views.  Matching up the three lines views refers to the process of matching up the shape of the different lines in the different views.  This matching up of the three views is under the complete control (is the responsibility of) the designer or the loftsman.  Many times a designer will fair a curve only to find that the three views no longer match and define a legal object.  Producing a usable lines drawing involves matching up the lines in all three views AND making sure that the lines are fair.  This two-part process is what makes lines drawing or lofting by hand so difficult.

 

Using a computer program for defining and fairing an object, however, removes the matching problem.  This is because the program defines the complete surface mathematically using something akin to a stretchable rectangular-like spline membrane.  If you pull the surface in one direction, the surface is updated in all three views.  The program can “cut” the surface at any time to determine the shape of any of the lines, and there is a guarantee that all of the lines match in all of the views.

 

The only thing that a computer design program cannot do is to automatically shape and fair the curves and surfaces of the object.  It doesn’t know what a good shape is and it doesn’t know what a fair shape is.  Therefore, it is up to the designer using the program to define a proper shape and make sure that the shape is fair.  The big benefit of the computer program is to eliminate the view-matching problem.  This makes it much more easy for users to design accurate surface shapes (the lines are guaranteed to match in all views).

 

Some design programs insist that there is no need for fairing because the surface is automatically fair.  This can only be true if the program severely limits the range of shapes that can be defined.  It is kind of like defining a curve using a batten and only three ducks.  It is virtually impossible to create an unfair curve with this limitation, although it is also impossible to create anything but the most simple of shapes.  With a computer program, the tools may be fancier, but the limitation is the same.  You don’t get automatic fairness for free.

 

If the computer program does not fair the shape, then how do you smooth a surface on a small computer screen?  For traditional drafting and lofting, you can use a number of the following techniques:

 

1.     Examining a large curve by eye

2.     Fore-shortening the drawing in the long direction

3.     Lifting a duck from the batten to “relax” the curve shape

 

 

The most important fairing technique is examining the curves by eye.  On a small computer screen, this is impossible.  It is aggravated by the “jagged” display of the curves due to the resolution of the screen.  Some designers hope for a large (6 foot) flat panel computer screen to replace their traditional drafting board, but it is quite unlikely to see this in the near future or for any reasonable cost.

 

If you cannot use your eye to fair a curve or surface on the computer screen, what can a surface design program do?  Although there is no mathematical definition of fairness, many feel that the use of second derivative or curvature techniques hold the solution.  These two techniques are variations of each other since curvature is based on the second derivative of a curve or surface.  What these techniques do is to magnify and define all of the bumps, wiggles, and inflection points of a curve or surface so that the designer can alter the surface shape to achieve his/her own criteria of fairness.  What would be an invisible unfairness of the lines of the surface on the computer screen, become clearly visible when using one of these derivative techniques.  All surface design programs approach this fairness magnification in different ways and each technique greatly influences how easy it is to fair a surface.

 

Pilot3D uses a dynamic curvature curve overlay technique that is felt to be the easiest and fastest fairing technique to learn and use.  It can be applied to both NURB curves and NURB surfaces.  A related technique for surfaces is the coloring of the surface based on one of its curvatures: Gaussian or mean curvature.

 

This tutorial will first discuss the shaping and fairing of curves using the curvature overlay technique.  Then it will discuss the shaping and fairing of surfaces using both the curvature overlay technique and the Gaussian surface curvature display.


Shaping and Fairing Curves

 

 

To understand how to use the curvature overlay technique in Pilot3D, it is best to start by studying curves.  The process is nearly the same for surfaces, but it is easier to see when applied to curves.

 

 

 

 

 

Follow these steps:

 

·        Start the Pilot3D program

·        Display the Curve set of menu choices as shown above

 

 

 

·        Select the Add Curve function

·        Pick (enter) about eight points to define a curve like the one shown above

·        Space the points evenly along its length

·        Do not worry about fairness at this point

 

 

 

 

 

For rough fairing, you need to use the Move Point command in the Edit set of pull-down commands as shown in the picture above.  All entities are defined by points and all entities can be shaped (by eye) using the Move Point command.

 

 

 

 

 

·        Use the Move Point command to change the curve into a shallow bowl shape as shown in above

·        Try to maintain an even spacing of the points

·        Fair the curve by eye

 

 

As you can see, the curve achieves the fairest shape when the points are evenly spaced.  This even spacing is not mandatory, but it is a good goal.  Think of the traditional spline batten and the spacing of the ducks along its length.  The ducks are evenly spaced, except for the areas of tighter curvature, where their spacing is evenly reduced.  This works exactly the same for B-spline or NURB curves, since they are mathematical equivalents of the draftsman’s spline.

 

At this point, the curve may look fair, but there is no way to know for sure, unless you plot it out full size and use your eye to judge its shape.  On the small computer screen and with the “jagged” display of the curve, it is impossible to fair using the Move Point command.  You could “Zoom In” until you have enough resolution, but only a part of the curve will be visible to judge fairness by eye.

 

That is why Pilot3D provides a tool called the dynamic curvature curve overlay technique to magnify the bumps, wiggles, and inflection points in a curve.  It is turned on as follows:

 

·        In the Curve pull-down menu, select the K_Curve Toggle command

·        “Pick” the defined curve.

 

[You can also use the ‘K’ toolbar button to turn on/off the curvature curve for any curve or surface row or column.]

 

 

 

 

You should now see an orange curve drawn on top of the defined NURB curve, something like the one shown above.  The command is called a “toggle” because to turn off the display of the k-curve, you simply pick the curve again with the same command; once to turn it on and once to turn it off.

 

 

This curve (sometimes called a ‘K’ curve, since many books use ‘k’ to represent curvature) represents the curvature of the curve overlaid on top of the curve it represents.  Its shape is very, very sensitive to the shape of the curve it represents.  Try the following:

 

·        Use the Move Point command to move one of the curve points

·        See how a small change in point position causes a large change in K-curve shape

 

(Note: you will learn about a fine-tune move% command shortly which you will use to perform fairing.)

 

 

Key points about the K-curve:

 

1.     The k-curve will lie on the inside, concave side of the NURB curve.

[This can be flipped to the other side of the curve, if you want.]

2.     The k-curve will cross the NURB curve at all inflection points

3.     If the NURB curve is exactly flat, then the k-curve will lie on exactly top of the NURB curve

4.     If you make the k-curve reasonably smooth, then the underlying NURB curve will be very fair.

5.     The shape of the k-curve is important, not its size

 

 

 

 

Sometimes, the k-curve is so large that it is drawn off the visible part of the window.  The size of the k-curve can be reduced (but not its shape) by using the downward ‘K’ arrow on the tool bar.  Every time you “click” this toolbar button, the magnitude of the k-curve is reduced.  The picture above shows the same k-curve after the K-down toolbar button has been picked three times.  Be careful not to reduce the magnitude of the k-curve too much, because you will reduce its sensitivity to the unfairness of the NURB curve.

 

·        Click the K-Down toolbar button three times

·        Click the K-Up toolbar button three times

 

 

 

 

 

Likewise, if the k-curve is drawn very close to the NURB curve itself, you may wish to increase its sensitivity or magnification by using the K-Up arrow on the tool bar.  It has the opposite effect and the K-down arrow.

 

 

·        Click the k-Up toolbar button three times

·        Click the k-Down toolbar button three times

 

 

 

So how do you know when you have enough magnification of the k-curve?

 

You have enough magnification if the k-curve visibly changes shape when you move one of the defining points by the building tolerance (perhaps 1/32 of an inch or one mm).  The distance a point is moved is always dynamically displayed in the status line while you are dragging the point.  If the magnification is set too low, then the k-curve will not show unfair changes in the shape of the NURB curve.  If the magnification is set too high, then the k-curve will be drawn outside the window and will be overly sensitive to editing changesand will be difficult to smooth.  Note that with enough magnification, you could fair the curve to within 1/1000th of an inch.  Keep in mind that there is no such thing as perfect fairness.  You only have to fair the curve to within building tolerances.  However, it is preferable to err on the side of too much magnification, rather than too little.

 

 

 

 

For those who are interested, this picture shows how the k-curve is calculated.  The process is as follows:

 

At each defining point, the program:

 

1.     Calculates the curvature value of the NURB curve.  Curvature is the reciprocal of the radius of curvature of the curve at that point.  (k = 1 / rho)  The curvature is zero when the curve is flat, increasing in value as the curve becomes more rounded.

2.     The normal vector of the curve at that point is calculated.

3.     A k-curve point is determined a distance along that normal vector from the NURB curve.

4.     The distance along that normal is equal to the curvature value times the k-curve magnification factor.

5.     A polyline is drawn connecting the k-curve points of each defining point.

 

The magnification factor adjusts the scaling of the k-curve and does not change the character of its shape.

 

[Note: A more exact curvature curve display is show later in this tutorial.]

 

 

 

This screen shows two arrows pointing at two adjacent defining NURB points.  The curve in the area of the left arrow is relatively flat, because its k-curve point is closer to the NURB curve than the k-curve point at the right arrow.  If the goal of fairing is to smooth the k-curve, you could approach this problem in one of two ways.  One, you could pull the left-arrow curve point away from the k-curve to create more curvature and cause the k-curve to move away from the NURB curve. (Move the NURB curve in a direction opposite to the direction you wish to move its k-curve point, but wait until the fine tune Move% command is introduced, since you won’t have enough control with the Move Point command.)  Two, you could move the right arrow point towards its k-curve point.  Remember that many different curve shapes will create a smooth k-curve shape.  You, the designer, have to decide on the shape you want and use the k-curve to guide you with the final fairing.  If you wanted the curve to be rounded in that area, you would move the left arrow point.  If you wanted the curve to be flatter in that area, you would move the right arrow point.

 

This same kind of problem arises with the traditional hand drafting approach using a batten and ducks.  One way to fair a batten is to temporarily lift one or more of the ducks, thereby relaxing and fairing the batten and the resultant curve.  If this technique is done too often, however, the batten will be designing the surface rather than the designer.

 

 

This screen shows a typical k-curve shape for a NURB curve that has inflection points, one of which is marked by the cursor arrow.  Many times this is a clear indication of an unfair spot on the curve, although some curves (like S-shaped curves), are supposed to have inflection points.  The goal is not to get the k-curve to lie on one side of the NURB curve, the goal is to smooth the k-curve.  This means that the underlying NURB curve is very fair.

 

Use the “saw-tooth” up-and-down nature of the k-curve to determine how to fair the curve.  Look for a k-curve point that is a valley between two peaks or for a k-curve point that is a peak between two valleys.  In the picture above, the point to the left of the cursor arrow has a k-curve point that is a valley between two k-curve peaks.  If you move that point down, its k-curve valley will disappear and the two surrounding k-curve peaks will be lowered, thereby smoothing the overall k-curve.  With a little bit of practice, you will be able to quickly fair a curve.

 

 

 

To flatten out a NURB curve, you need to get the k-curve to lie exactly on top of the NURB curve.  This picture shows the results of flattening the curve using just the Move Point command.  It is not very exact because the standard Move Point command is too coarse of a modification tool.

 

·        Turn on the Move Point command

·        Adjust the shape of the curve by eye to obtain a flat portion like that shown above

 

 

 

Detailed k-curve fairing is done using the Move% command in the Edit set of pull-down commands.  The Move% command works exactly like the Move Point command, except that when you drag the point on the curve, the point only moves a small percentage (1%) of the distance in the direction you drag the cursor.  When this is done with the k-curve turned on, you can dynamically and accurately control the shape of the k-curve.

 

 

 

·        Turn on the Move% command in the Edit set of pull-down commands

·        Adjust the curve (just like using the Move Point command) to obtain a flat portion

 

 

The picture above shows the results of flattening and fairing the curve using the Move% command.  If you think that the k-curve moves too much for a very small change in curve shape, then you probably need to use the k-Down toolbar button to reduce the sensitivity and magnification of the k-curve.

 

 

 

 

This picture shows a different curve shape, faired by eye using the Move Point command.

 

·        Select the Move Point command

·        Edit the curve by eye to get the shape shown in the picture above.

 

At this point the curve is only roughly faired by eye.

 

 

 

 

·        Select the Move% command

·        Fair the curve as shown in the picture above

 

This picture shows the same curve after fairing was performed using the Move% command.  Note the peaks in the k-curves at the ends of the curve.  Otherwise, the k-curve (and NURB curve) is very fair.  The peaks in the k-curves at the ends indicate that there is a non-zero curvature at each end of the curve.  It doesn’t necessarily mean that the curve is unfair.  It depends on what kind of shape you want at the ends of the curves.  A different end condition is achieved in the following example.

 

 

 

 

·        Select the Move% command

·        Fair the curve as shown in the picture above

 

This picture shows a slight variation of the curve with no k-curve peaks at the ends.  The k-curve matches the NURB curve in the ends which means that at those points the curvature goes to zero.

 

 

 

 

This picture shows the Options-Set K_Curve dialog box for k-curve options.  The “K Scale Factor” magnification factor relates to the K-Up and the K-Down toolbar buttons.  The “K Curve Steps” field refers to the number of intermediate steps along the NURB curve to calculate the curvature.  The default is 1 which means that the curvature curve is calculated and drawn at each defining point.  If this value is set to 2, the program will calculate and display the curvature at each defining point and at each intermediate position between defining points.  For a value of 3, then there will be two intermediate k-values calculated and drawn between defining point, and so on.

 

·        Open the Options-Set K_Curve dialog box

·        Set the “K Curve Steps” field to 5

·        Pick the OK button

 

 

 

 

You will now see a more accurate curvature curve drawn, like the one shown above.  The k-curve is smooth, but one might wonder if the two k-curve “humps” should be removed.  Try it and see what happens.

 

·        Select the Move% command

·        Move the defining points to try and remove the “humps” in the k-curve

 

It can’t be done, or at least, not very easily.  As you might guess, the exact shape of the curvature curve is not always important for fairing.  What is important is that the k-curve does not have any abrupt changes or unwanted inflection points.  As you increase the step size above 1, the k-curve takes on a more accurate shape, but it actually makes it more difficult to fair the curve.  That is why we recommend that the step size be left at 1.

 

Since you can only control the shape of the curve by moving the defining points, you only need to display the k-curve based on the curvature calculated at those points.  By increasing the step size and drawing a more accurate k-curve, you confuse the fairing process by displaying k-curve shape that you have no control over.  For NURB curves and surfaces, you can also control the shape by changing the “knot parameterization” or the “weight values”.  These changes are not discussed here.

 

·        Select the Options-Set K_Curve dialog box

·        Set the step size to 1

 

 

 

This picture shows a faired k-curve for an S-type of NURB curve.  Remember that the inflection point is defined as the place where the k-curve crosses the NURB curve.

 

·        Select the Move Point command

·        Move the curve points to create the rough S-shape

·        Select the Move% command

·        Drag (fine tune) the points to smooth the k-curve as shown in the picture

·        Select the Curve-K_Curve Toggle command

·        Pick the NURB curve to turn off the k-curve display

 

Do all rough shaping with the Move Point command and do all fairing with the Move% command.

 

Now you are ready to tackle the fairing of surfaces.  The k-curve technique is the same, but it is applied to one or more of the rows and columns of the surface.

 

 

 


Shaping and Fairing Surfaces

 

 

This section discusses the shaping and fairing of generic surfaces.  It is assumed that you have gone through the material in the previous section on shaping and fairing curves, since many of the topics discussed there will be applied to surfaces.

 

 

 

 

Since we will be creating, shaping, and fairing surfaces, you will need to use the commands listed under the “Surf” pull-down list of commands, as shown in the figure above.

 

 

 

 

Start by adding a simple surface to a blank screen, as shown above.

 

·        Select the “Add Surf command in the Surf pull-down list of commands

·        Pick the four corners of the surface - lower right, lower left, upper right, upper left

 

 

 

 

 

Change the shape to match the one shown above.

 

·        Select the Move Point command in the Edit pull-down list of commands

·        Move the point to get a shape like the one shown above

 

This is an arbitrary shape used only for demonstration.

 

 

Add one row and one column to the surface.

 

When you create a new NURB surface, you enter the corner points by rows.  This defines the orientation of the surface relative to its rows and columns.  In general, however, you do not have to worry about what are really rows and what are really columns of the surface.  All of the surface commands work for either rows or columns.  For the clarity of this tutorial, we will refer to horizontally oriented surface curves as rows and vertically oriented curves as columns, even though internally, the rows and columns might be oriented otherwise.

 

·        Select the Surf-Add Row/Col-Add Row/Col Angle command

·        Add a row by splitting the distance between the two existing rows.  Pick a location along one of the columns about half-way between the two rows.

·        Add a column by splitting the distance between two existing columns.  Pick a location along one of the rows about half-way between the two columns.

 

As a rule, always try to add a row or column by splitting the difference between two existing rows or columns.  You might end up with more row or columns than you think you might need, but the additional lines will help greatly with the shaping and fairing process.

 

 

 

After you add one or two rows and columns, use the Move Point command to roughly shape the surface by eye.  This is a much better approach than adding in a bunch of rows and columns before you begin any rough shaping of the surface.  Don’t worry yet, however, about fairing the surface with the k-curve.  This will be done after a number of rows and columns have been added and the rough shaping has been completed.

 

·        Select the Move Point command from the Edit set of commands

·        Move the surface points to get a shape like the one shown above.

 

 

 

 

 

 

Now add two more columns to the surface, as shown above.

 

·        Select the Surf-Add Row/Col-Add Row/Col Angle command

·        Add two more columns by splitting the distance between two existing columns, like in the picture above

 

As mentioned above, it is always best to add new rows and columns by splitting the difference between two existing rows or columns.  This keeps the rows and columns fairly evenly spaced, which will help the shaping and fairing process.  If you don’t keep the rows and columns evenly spaced, you might end up with a surface like the one below.

 

 

This surface was created by moving some of defining points to create unevenly spaced rows and columns.  This demonstrates some of the odd shapes that can happen when the row and column spacing is not even.  Please note that the spacing does not have to be completely even.  We generally suggest that the spacing between rows or columns not be anything greater than a 2:1 ratio of spacing.  This means that if you have two columns one foot apart, then the “next” column should be no more that two feet further away, or less than ½ foot away.  This spacing rule will be met if you always add rows and columns about one-half way between two existing rows or columns.

 

 

 

 

This picture shows the final, rough shape of the surface.  (This is an arbitrary shape used only for this demonstration.)

 

·        Select the Move Point command

·        Move the surface points to match the surface in the picture above

·        Only fair the surface by eye using the Move Point command

 

Now that the surface has been roughed into approximately the correct shape, the fairing can begin using the dynamic k-curve overlay technique.

 

 

This picture shows the surface with a k-curve turned on for the top row.  (If you haven’t done so already, please review the previous section on fairing curves before you continue.  This section assumes that you understand some of the topics discussed there.)

 

·        Select the Surf-K_Curve Row/Col command

·        Pick the top row of the surface (pick the row somewhere away from a defining point)

·        If the k-curve appears too large (magnified), you may wish to use the K-Down toolbar button to reduce the magnification of the k-curve

 

 

Note that your k-curve may not match the one shown above, because the k-curve is very sensitive to the shape of the surface.

 

 

 

 

The goal of this tutorial is to fair this surface using the k-curves, starting with the top row.   The shape we want for the rows is slightly curved on the left and fairly flat on the right.  This is shown above in that the k-curve for the row is drawn away from the curve on the left and drawn on top of the row at the right (which means that it is flat in that area).   Remember that you are the designer.  Do not let the fairing process define the shape of the surface.

 

·        Select the Move% command

·        Move% the points in the top row to achieve the k-curve shape shown above

 

 

 

 

Now turn on the k-curve for the middle row and leave on the k-curve for the top row.

 

·        Select the Surf-K_Curve Row/Col command

·        Pick the middle row of the surface

 

 

 

 

 

Use the Move% command to fair the shape of the middle row and use the top row k-curve shape as a guideline.  You want to avoid the mistake of fairing the rows and columns of the surface without regard to the shapes of the surrounding rows and columns.  The k-curve shapes of two consecutive rows or columns must be relatively the same.

 

·        Select the Move% command

·        Move% the points of the middle row to get the shape (row and k-curve) shown above

 

Note that the shape of the middle row k-curve is very close to the shape of the top row k-curve.

 

 

Now turn on the k-curve of the bottom row and leave on the k-curves for the other two rows.  The screen is starting to get a little cluttered, but the different color for the k-curves help them stand out.

 

·        Select the Surf-K_Curve Row/Col command

·        Pick the bottom row of the surface

 

 

 

 

Use the Move% command to fair the shape of the bottom row and use the middle and top row k-curve shapes as a guideline.  Follow the same process as before to shape and fair the bottom row.

 

·        Select the Move% command

·        Move% the points of the botom row to get the shape (row and k-curve) shown above

 

Note that the shape of the bottom row k-curve is very close to the shape of the upper row k-curves.

 

Now that the rows have been faired, you can turn off their display.

 

·        Select the Surf-K_Curve Row/Col command

·        Pick all three rows to turn off the k-curve display

 

Note that the same command is used to turn on and off the display of the curvature curve lines.  That is why it is called a “toggle”.

 

 

 

 

Fairing the columns is not as important, since they are defined with only three points, and are guaranteed to be fair automatically.  However, you want to make sure that all columns have the same general k-curve shape.  Remember that you have to both fair the k-curves and make sure that consecutive row or column k-curves have roughly the same shape, or at least, make sure that there is a reasonable change in shape from one k-curve to another.

 

·        Select the Surf-K_Curve Row/Col command

·        Pick all of the columns to turn on their k-curves, as shown above

·        Use the K-Down toolbar command to reduce the k-curve magnification, if necessary

 

 

Note that the k-curves are all relatively fair, but their shapes do not match very well.

 

 

 

This picture shows the results of moving points on the middle row to make sure that all k-curves have the same general shape.  Since all of the columns are part of the same surface, you want them all to have the same characteristics.  This doesn’t mean that the surface cannot change its shape dramatically from one end to the other.  It just means that you must pay attention to the change in k-curve shape from one row or column to another.

 

·        Select the Move% command

·        Move% the points on the middle row to match up the shapes of all of the column k-curves.  Tip: If you move the points in a direction tangent to the middle row, you will not (greatly) affect the fairness of the rows themselves.

·        Move% the points to get the shape of the surface shown above

 

 

 

 

This picture shows the final surface with all of the k-curves turned off.

 

·        Select the Surf-K_Curve Row/Col command

·        Pick all of the columns to turn off the display of the k-curves

 

 


Conclusion

 

 

This was a brief introduction to the process of fairing curves and surfaces.

 

The following reviews the basic steps for creating and fairing a surface.

 

1.     Create the basic surface.

2.     Position the surface in space.

3.     Rough out the topology or shape of the surface.

4.     Do some rough fairing (using Move Point) in all views each time you add a row or column.

5.     Add in rows/cols by splitting the difference between two existing rows or columns

6.     Once enough rows and cols have been entered and roughly shaped, start on the detailed fairing (using the Move% and K-curve commands) of the edges of the surface.  It is no use to fair the insides of a surface unless the edges are exact.

7.     Use the K-curves to fair the interior shapes of the rows and columns.

8.     Check sequences of K-curves to see if their shapes match.

9.     Check the surface fairness using the Gaussian curvature display.

 

 

Also, remember the following points:

 

·        A NURB surface is a rectangular-like grid of rows and columns

·        It is more difficult to fair a distorted, non-rectangular shape

·        Spread the rows and columns evenly over the surface

·        The fewer the rows and columns you use, the better

·        Keep the spread of rows and columns within a 2:1 spacing ratio

·        Rough shape the surface after adding each row or column

·        Wait to fair the surface until after you have added in all rows and columns

·        Use the K-curves on the rows and columns with the Move% command

·        Turn on selected plane cuts to see them dynamically change shape

·        Fair the surface only to within building tolerances

·        Use the Gaussian curvature display to check for unfair spots

 

 

Fairing is not an automatic process and there are different degrees of fairness.  Keep in mind that it is not necessary to fair a surface perfectly.  All you have to worry about is getting the surface fair to within building tolerances.