Professional Documents
Culture Documents
Have any of you noticed the proliferation of Sub-division surface tutorials and discussions lately?
How about low poly modelling? Well, now for something completely different. I find that NURBS are
ideal for building organic mechanical objects like cars. I feel there’s a level of control and precision
that you just don’t get with Sub-Ds or polys. There must be a reason why major car manufacturers
choose to design their cars with NURBS, often with Alias AutoStudio, a distant relation to Maya.
The first model I ever built with Maya (apart from Salty the seal and primitive man) was a Ferrari. I
used reference images from all over the web, but I couldn’t find decent orthographic plans. Well
when I stumbled across Thomas Suurland’s fantastic site, I knew it was time to do the job right. So
I downloaded some plans and reference images and off I went…
This is part-tutorial and part over-the-shoulder look at how I work. Building a car is a very
repetitive and time consuming task. I have detailed here every step I took to build this car from the
ground up, so many of you may get bored going through every step, and may want to skip forward
and back, as your attention span dictates. There is really nothing technically difficult here, and any
intermediate modeller should have no trouble replicating these steps. Hopefully some of you may
learn something about NURBS modelling.
I am a 3D animator based in Sydney, Australia, working full time for a small post production
company. I can be contacted at mikethomson@mac.com
Navigation
There are two ways to follow the tutorial. One is the list view with linked thumbnails, and the other
is the linear picture book. Be aware though, that if you follow this right through, you will chew
through about 15MB of images and 8500 words of text.
List View
Book View
12. Too many Cvs. The offset curve had far too many
Cvs and would have generated an uneven surface.
23. Create curves from surface. All was not lost with
the previous surface attempt. I selected a couple of
isoparms and generates curves. These will form the
profiles for a new Bi-rail.
31. Split door curve. To get the boundary curves for the
back section of the mudguard, I split one of the ooriginal
curves defining the front of the door.
55. Bi-rail door. Using all the new profile curves, I bi-
railed them along the pathe and got a much better result.
56. It fits! A quick check of the three panels so far
showed no major problems.
66. Boot. I deleted the hulls around the profiles to get rid
of their tangency information. Like the bonnet, this
smoothed out the isoparms.
67. Split boot. The next step was to split the boot into
two panels.
68. Create curves. By selecting the end isoparms and
creating curves, I now has a starting point for the rear
mudguard.
81. Panels. That’s it for part I. Here are all the basic
panels with the construction curved I used.
51. Detach curve. I split the second profile curve at the window sill.
52. Loft. A first attempt at lofting the curves showed that I had some rebuilding to do.
53. Create bi-rail profiles. In the side view, I traced some prominent curve lines using the CV curve tool set to
degree 1.
54. Align curves. I then aligned these profile curves with the two door path curves.
55. Bi-rail door. Using all the new profile curves, I bi-railed them along the pathe and got a much better result.
56. It fits! A quick check of the three panels so far showed no major problems.
57. Move back image plane. In order to see things at the back of the car more clearly, I moved the back
camera’s image plane to the middle of the car where it blocked out all the geometry at the front of the car. This
can also be achieved using the camera’s clipping planes, if you don’t have image planes.
58. Create boot curves. I decided to create the boot before the rear mudguard, and use it to generate
construction curves like I did for the front mudguard. Usinf the top and back views, I created outline curves for
the boot.
59. Bi-rail boot curves. I bi-railed the boot curves and found some weird isoparms in there.
60. Select Isoparm. I selected the worst isoparm…
61. Create curve. Then I generated a curve…
62. Too many points. Which needed rebuilding…
63. Match Cvs. I rebuilt the curve to match the CV count of the other curves.
64. Tweak Cvs. I straightened out the curve, so that the boot would be a nice even grid.
65. Bi rail curves. I birailed these curves to get a surface that had similar problems to the bonnet.
66. Boot. I deleted the hulls around the profiles to get rid of their tangency information. Like the bonnet, this
smoothed out the isoparms.
67. Split boot. The next step was to split the boot into two panels.
34. Rebuild and stitch. The surface wasn’t well constructed, so I rebuilt the surface to match the front section
of the mudguard. I then stitched the two surfaces together to get a smooth join.
33. Bi-rail. I used the Bi-rail 2 tool to connect the curves to form the surface.
35. Attach pieces. Then I attached the two pieces with the ‘Blend’ option to create a smooth single panel.
36. Create curves. To finish off the panel I had to create the piece between the wheel and the door. In order to
be able to attach the pieces together, I had to create a new panel as long as the top section. I created a curve
from the bottom isoparm of the top panel and duplicated it down. I duplicated and simplified the lower door
profile a few times along the new rails. The shape of the panel from the wheel forward was not important, as it
was going to be trimmed away.
37. Bi rail curves. I bi-railed these curves together, paying particular attention to the area between the door
and the wheel.
38. Attach surfaces. I attached the upper and lower panels to get one continuous smooth panel. The next
thing to do was to do a quick trom of the wheel arch. First I selected the wheel arch curve, then the mudguard.
39. Project curve. In the side view, I projected the curve onto the surface.
40 Trim surface. I selected the trim tool and clicked on the area I wanted to keep.
41. Completed trim. Now it was starting to look more like a car…
42. Extend panel. Things got a little tight around the door seam, do I grabbed the end hull and extended the
panel back a little.
43. Prepare trim edge. I loaded up an old curve for the door seam.
44. Trim. Again in the side view, I projected this curve onto the surface and trimmed it.
45 Select trim. Now I wanted to split the trim into two curves. First I selected the trim edge, and then offset
the curve.
46. Select curve point. Then I selected a curve point where I wanted to separate the curves.
47. Detach curves. I then detached the curves to get two new curves that could be used to build new surfaces.
48. Detach again. Using the same procedure, I detached the curve again at the window sill.
49. Compare profiles. I loaded the other curve for the door profile and compared their curvature.
50. Refine curves. After modifying the second curve’s Cvs, I got the two profiles to match.
17. Uneven isoparms. The next problem was with the uneven spacing of the isoparms running along the
length of the bonnet.
16. Hulls Deleted. I deleted hulls 2, 4 and 6 to get rid of the profile tangency information from the Bi-rail
operation. This allowed the surface to flow much more smoothly in the region.
15. Weird hulls. Closer inspection of the front of the bonnet showed that there were some weird things going
on with the last Bi-rail operation. The Bi-rail tool seems to want to keep the surface perpendicular to the profile
normals.
18. Rebuild surface. I rebuilt the surface with 6 spans each in U and V.
19. Clean surface. With the reduced number of Cvs, it was easier to manipulate the surface into the exact
shape I wanted.
20. Load front mudguard curves. To build the front mudguard, first I loaded the original curves.
21. Clean up and align curves. I adjusted all the curves so that their ends touched. I also added another
prominent curve where the panel is highly curved.
22. Need more curves. Bleech! This was the result of Birailing the 6 curves. Hmmm. Needs more work.
23. Create curves from surface. All was not lost with the previous surface attempt. I selected a couple of
isoparms and generates curves. These will form the profiles for a new Bi-rail.
24. Curves cleaned up. I cleaned up the Cvs on the two new curves and made sure that their end points were
touching the other curves.
25. Bi-rail new curves. I bi-railed the new curves and got a much better result.
26. Split bonnet surface. The next thing to do was to get the panels tangents to be continuous. To do this I
needed to stitch the panels together. The first step was to split the bonnet panel into two pieces, so that the
mudguard’s U and V axes (top and front edge) would have an edge to stitch to.
27. Generate new curves. From the bonnet and light panels, I generated new edge curves that would be used
to rebuild the mudguard.
28. Select new curves. I aligned all the new curves together, making sure that I didn’t move the two newest
curves along the bonnet. I decided to build the new mudguard in two pieces and then attach them together
later.
29. Bi-rail new curves. I bi-railed the new curves to get the front section of the mudguard.
30 Rebuild and stitch. I rebuilt the panel to get a more even distrobution of isoparms. Then I stitched the top
of the mudguard to the bonnet, and the front of the mudguard to the headlight. This endured that the surfaces
were tangential.
31. Split door curve. To get the boundary curves for the back section of the mudguard, I split one of the
ooriginal curves defining the front of the door.
32. Select curves. I made sure that the curves were touching before moving on.
1. Set up image planes. This is probably the most important step (along with the phantom previous step in
Photoshop.) Once the plans were downloaded, I took them into Photoshop and aligned the fronts, wheels roof
etc. I saved the separate views into files that would be easy to arrange. ie. The front is 512x512 pixels, the side
and top are 512x1024.
In Maya, I added image planes to the top, side, front and back cameras. The image planes were ‘Fixed’ rather
than ‘Attached To Camera’ so that I could pan and zoom around the model with the geometry staying registered
with the image plane template.
2. Draw outline curves. In the front, top and side view, I traced the silhouette of half of the car. As it is
perfectly symmetrical, I only had to build half the car, and at the very end, mirror and stitch both halves
together.
3a. Add character curves. These are the curves that help to define the look of a car. They were easily
identifiable in all views, so lining them up in 3D space was not too much trouble. I drew most of these curves in
the side view, and then moved the Cvs in the top view along the x-axis only.
3b. Snap to grid. It was pretty important to have these curves start along the origin of the x-axis, so I
switched on snap to grid for the end Cvs. To assist with tangency issues later on, I kept the 1st and 2nd Cvs
aligned along the x-axis.
4. Select spoiler curves. The first panel I built was the spoiler, so I selected the path and profile.
5. Extrude spoiler profile. I extruded the profile along the path to get this basic shape. The extrude options
were ‘Tube’ ‘At Profile’ and 'Component Pivot on’.
6. Tweak Cvs. On of the first things I do when modelling is to assign a shiny blinn to any model I’m working
on. The defaulf Lambert shader doesn’t give as mush surface information as a Blinn shader with diffuse and
specular. Here, I moved some Cvs to get closer to the desired shape.
7. Get organised. It’s about now that things started to get dis organised in the outlined, So I grouped the
construction curves together in a group called Construction_Curves_GRP. I like to call my groups GRP and layers
LYR. This prevents duplicate naming. Eg the surface ‘Bumper’ would be in Bumper_GRP on the layer
Bumper_LYR. Mhis may seem a little pragmatic, but in big scenes with expressions, things are definitely less
confusing.
8. Align Cvs on bonnet. The next panel I built was the bonnet. I started by snapping the edge curve’s end Cvs
together, and then snapping the middle curve’s end Cvs to the edge curves. Wow… now I’m confused. Just make
sure that all the curves are touching. Maya’s curve snapping takes some getting used to (particularly after by
background in CAD) but it does work.
9. Bi-rail bonnet curves. The Bi-rail 3+ tool is a tool that is very useful for building cars. It’s like an extrude
on steroids. You can have as many profiles as you like and two extrude paths (rails). Here I selected the three
curves running along the bonnet as the input profiles, and the two boundary curves running along the bonnet as
the rails. As you can see, It’s not the best surface, but it’s a start along the long road of ‘build and re-build’ as
you’ll see.
10. Select isoparm. I wanted to get more control of the surface around the front of the bonnet, so I selected
an isoparm in the area of interest.
11 Offset curve. I used this isoparm to create an offset curve. [Edit Curves > Offset > Offset Curve] with offset
distance set to 0.
12. Too many Cvs. The offset curve had far too many Cvs and would have generated an uneven surface.
13. Clean up Cvs. I rebuilt the curve with the same number of spans as the other bonnet curves. I aligned the
Cvs so that they would give a predictable result with the next Bi-rail operation. I used the original middle curve
as a guide for locating the new Cvs.
14. Bi-rail again. I Bi-railed the bonnet curves again, this time running the other way along the bonnet. This
gave a much better result than the first bi-rail.
Part II – Detailing Main Panels
The next step was to put some detail into the panels. These include rolling the edges
of panels to catch highlights, detail the lights and bumpers.
84. More fillets. I did the same along the side of the
bonnet.
109. Draw curve. The notch inside the main air scoop,
was created by drawing a curve in the top view.
110 Modify curve. I then extruded the curve in the –ve
y axis and repositioned the surface. Then I modified the
curve and the surface updated as it still had history from
the curve.
111. Fillet and trim. Then I filleted and trimmed the two
surfaces to give a smooth corner.
115. Blend and trim. The next step was to fillet blend
between the spoiler’s curve on surface and the edge of
the thin strip I created in the previous step. Then I
trimmed away the excess along the wheel arch curve.
82. Create curve and extrude. The first step to create a curved edge, was to create a perpendicular plane. I
selecter the end isoparm of the bonnet and extruded it one unit along –Z and –Y axes.
83. Circular fillet. I selected the bonnet and the extrude, and created a circular fillet between them, creating
curves on surfaces also.
84. More fillets. I did the same along the side of the bonnet.
85. Create light surface. In the front view, I traced around the light where it intersects with the front
mudguard. I then extruded it back so that it intersected fully with the mudguard.
86. Fillet and trim. Duplicated the mudguard and hitd the copy. I circular filleted the two surfaces and trimmed
away the area inside the light.
87. Fillet and trim. I showed the last object I hid and filleted and trimmed it with the extrude surface.
88. Fillet between light. Using an isoparm on the light panel, I created an extruded surface and did the same
procedure as the previous steps to create a seam between the light and the front of the bonnet.
89. Project curve. In the front view, I traced around the line of the air intake at the front of the bonnet. I then
projected this curve onto the surface.
90. Extrude curve. I extruded this surface along the Z axis to create an intersection plane.
91 Select Curve on Surface CV. I then filleted between the surfaces. This gave me a fillet that didn’t reach to
the end of the extrude surface because of it’s acute angle.
92. Drag CV to edge. I took the end CV of the curve on surface on the intersection plane and dragged along
it’s U axis until it reached the edge.
93.Ready to trim. I was then able to trim the extruded surface.
94. Delete fillet and blend. I deleted the circular fillet and fillet-blended the two furfaces together.
95. Clean up fillets. If I was going to clean up the fillet joins, I would fillet blend the ends of the circular fillets
like this. But I’m not. The purpose of these curved fillets is just to catch the light in animation. They will end up
being less than one pixel across and more than likely motion blurred. So this step is more like a FYI.
96. Create plane. I created a plane to intersect and fillet with the light.
97. Curves. In the front view, I traced the outlines of the events and light in the spoiler.
98. Refine and extrude. I extruded these curved along Z so that they intersected with the spoiler surface.
68. Create curves. By selecting the end isoparms and creating curves, I now has a starting point for the rear
mudguard.
69. Align new curves. Like the front mudguard, I decided to build it in patches so I could stitch panels and get
their tangents aligned. Using old profile curves, I split and aligned the curves to form bi-rail curves.
70. Bi-rail. I then birailed the curves together.
71. Rebuild and stitch. The surface paramaterisation was uneven on the surface, so I rebuilt it and then
stitched the edged to the top and back of the bonnet.
72. Loft down. I selected the bottom isoparm and duplicated a curve down. Then I lofted it to create a taller
patch.
73. Create and align. Using existing curves, and creating new ones, I built up a network of curves aligned in
the top and side view, whilst still touching existinf surface edges.
74. Bi-rail curves. I used these curves to birail the rest of the panel. The isoparms were pretty uneven, but the
surface looked alright.
75. Rebuild and trim. Next, I rebuilt the surface to match the back half of the panel. Then I attached the
surfaces together using the blend option. I projected the wheel arch curve onto the surface and trimmed it
away.
76. Create bumper curves. The bumper curves were a combination of curves I made back in step 3 and
curves generated from the boot and rear mudguard isoparms.
77. Loft curves. I was getting some strange results with bi-railing these curves, so I decided to loft them
instead.
78. Window panel curves. The window panel curves were easy to register in 3 dimensions, as they were so
prominent in the top, side and front views. Using the long pathe and two short end paths, I birailed them
together.
79. Roof curves. The roof curves were also a combination of old and new curves. I duplicated and shortened
one of the curves for the window panel.
80. Roof. I bi railed the roof curves to get a nice clean surface.
81. Panels. That’s it for part I. Here are all the basic panels with the construction curved I used.
116. Select trim edge. To put an edge around the front
mudguard wheel arch, I started by selecting the trim
edge.
123. Rear wheel arch. I used the same process for the
rear wheel arch as I did for the front wheel arch.
130. Trim light. Then I [Display > Show > Show Last
Hidden] to get back the duplicate panel with the light
curve on surface. I then repeated the process from step
129 and circular filleted and trimmed between the two
surfaces.
137. Trim boot. To get the small seam under the light, I
repeated the previous steps… you must be sick of them
by now…
138. Trim rear window. The rear panel has a notch cut
into it by the window trim. I loaded up an old construction
curve, projected it onto the panel and trimmed it.
140. Trim blend. Using the same curve from step 138, I
trimmed the blend to fillow the curve of the window trim.
141. Select edges. For the profile curve for the window
trim, I decided to make a new curve, rather than use the
original curve I drew back in step 3. I worked my way
around the window frame and selected isoparms and trim
edged and created curves. Then I joined the se curves to
form one closed curve that matched the surfaces exactly.
210. Roof vent curves. Using the front and side views, I
created curves for the roof air vent.
214. Mirrored half. This is what the car looked like with
the other half mirrored. There are many obvious seams
where the surface’s tangents aren’t continuous. Sone
serious stitching work was in order.
223. Tyre profile curve. I drew the profile for the tyre
in the front view, using the wheel rim as a guide. I then
adjusted the Cvs using the side view as a guide to get the
height correct.
224. Tyre revolved. I revolved the tyre profile around
the same axis as the rim and hub.
236. Brake disc. I drew a profile for the brake disc in the
front vire and revolved around the X axis.