Applying Textures to a Starship
So, you've finally finished constructing your baby, the cleanest mesh in town.
You click the render button, and wait for the results. Well, the darn thing sure doesn't look right....
it's missing something....texures! Ok, easy enough....how the heck do you texture that darn thing?
That's why were here, to learn the basics of creating materials and applying the neccessary mapping
coordinates to the mesh. I'm not going to go into actually creating the texture maps, so I've provided
them, as well as an untextured mesh of the cheeziest ship around, the Freedom class USS Firebrand.
Note: This tutorial is written for 3DSMax, though the concepts will be of interest to people using any package.
| || First, a few notes about texturing.
There are two important aspects to creating and applying materials in 3DS Max (actually,
in any 3D software). You create the materials in the material editor, choosing the colors,
adding bump maps and the like. When you apply these materials to an object, the program
needs what is known as 'UVW mapping coordinates', which tell it exactly how the material
is mapped onto the object (U, V, and W correspond to X, Y, and Z in 3D space). When
texturing a model, I prefer to start with uncollapsed objects, as many objects (primitives,
booleans, etc..) have built in mapping coordinates which come in handy. Barring the ability
to use built in mapping coordinates (which is often the case), Max provides you with a UVW
modifier that you can use to control the mapping coordinates. Well, I think it's best to
learn by doing, so lets get on with it.
You'll need the you'll need to download the textures and the model, unzip them both to the same
Load freedom.max, and click click the
Material Editor button so we can construct the first material. You'll find all the material slots except
the first are loaded with the default grey material.
Click the Get Material button to load the material
browser (quick note on the material browser, if you name your materials properly, this is a great tool for
finding materials in complex scene, no need to dig through the material slots). Double click the Standard icon
near the top to load another booring grey material. Close the material browser.
We'll be creating the saucer textures first. Next to the eyedropper tool, type in UpperSaucer (it's important
to name your materials meaningfully, it's very easy to get lost trying to find one in a complex scene or model).
My starship textures are generally made up of three map types: diffuse, shine strength, and bump maps. The
diffuse maps provide the colors, or 'paint', the greyscale shine strength maps provide varying specularity
that makes things look big, and the bump maps, well, they make bumps (panel lines and such).
Click the Maps button to expand the map rollout. Click the None button next to the
Diffuse slot, which brings up the material/map browser. Double click Bitmap. Under the Bitmap Parameters
rollout, click the click the blank Bitmap button which brings up the browse for map dialog.
Load saucer_color.png from the texures zip. You'll see the map loaded on the preview sphere.
Go to Parent button to return to the mapps rollout. Next, click the None button next to Shin. Strength,
and double click Bitmap. This time, you want to load saucer_shine.gif. (note: some people prefer to use both
shine and shine strength maps, even specularity maps, but I find that the shine strength maps work well for
most ships). Click Go to Parent to go back up to the Maps rollout, and load saucer_bump.gif in the bump slot. Again, head back up to
the Maps rollout, and set the Bump spinner to 20. Finally, scroll back up to the top of the material slot
and set Shinyness to 73. Your material should look like this.
3DS Max Material Editor
We're ready to apply the material to the ship. Select the top saucer section in the left viewport,
and click the Assign Material button in the material editor. Rotate the Perspective viewport so
you can see the top saucer, and click the render button (Figure 1). Well, that doesn't look right, we
need to alter the mapping coordinates. Apply a UVW modifier to the saucer. The modifier gives you a
gizmo which you can use to place the map, as well as providing a number of different methods of projecting
the map onto the object. In this case, we want to use Planar mapping, which basically projects the map
straight outwards from the gizmo (planar is the default mapping type). The gizmo is facing the wrong
direction, so check the 'Y' radio button under
Alignment, and the gizmo will rotate to the Y plane, which is what we want. Next, click the Fit button,
which stretches the gizmo to fit the saucer. Click render....ahhh, much better, but a little plain (Figure 2).
We'll worry about windows and such later. Now you can select the bottom saucer, apply the material, apply a
UVW modifier. A quick way to align the gizmo is to click the Aquire button under Parameters and select the
top saucer (chose relative on the popup), which grabs the gizmo from the top section.
Build the material for the Nacelle in the next material slot using the same proceedure
(maps are nacelle_color.png and nacelle_shine.gif, which is used for both bump and shine maps). Select the
nacelle parts that will have hull textures (line30, rectangle501, and rectangle502...sorry 'bout that). Apply
the nacelle material to them, and apply a UVW modifier to them (yes, you can apply a single UVW to multiple objects).
In this case, the gizmo is facing the correct direction, but it's fit to only one of the parts. Click the Bitmap
Fit button under Parameters and select any of the nacelle maps. The gizmo is now proportioned to fit the map so
we just need to get it to fit the object. You'll also notice that it needs a bit of rotating, so click the
Sub-Object button under the modifier panel, rotate the gizmo -90 degrees on the Z axis in the bottom viewport.
Use the Scale and Move tools to center and fit the gizmo to the nacelle (kinda makes you wish it had been built
a bit differently, huh?). You'll have to do a bit of non-uniform scaling on the Y axis to get it to fit
For the dorsal section we're going to use a bitmap that doesn't fit the object,
and we'll tile the image so we get some extra detail. Name the next material slot Dorsal, set shininess to 37,
go to the maps rollout and load panels.jpg in the Diffuse slot. You'll see that the color of the material doesn't
match the saucer and nacelle (Figure 4). You could correct this in an image editing program (or do it right in the first place!),
but I wanted to show you a way to get around it in Max, which comes in handy for minimizing the number of maps you
need to use in a model. Click on the diffuse color slot and set the RGB values to 179, 176, 199 (Figure 5). This is a
darker color than the hull, but you'll be blending the bitmap with the color, so it will even out. Back in the
Maps rollout, set the diffuse amount to 50. The color should now match the color of the other materials (Figure 6).
Apply the material to the dorsal section, and apply a UVW modifier. |
Go back to the Diffuse material slot where you
loaded panels.jpg, and click the Show Map in Viewport button .
If you have the viewport set to
Smooth and Highlites, you'll be able to see the bitmap on the object. Switch to the Left viewport and zoom
in on the dorsal section. We'll use planar mapping again, but the gizmo is facing the wrong way, so switch
the gizmo alignment to X and click the Fit button. Looking much better, but the panels are much
too large for the scale of the ship, we need to increase the tiling of the bitmap. You can do this in the
material itself, but I find that it's often best to do it in the UVW modifier, which enables you to use the
same material on radically different objects. Under the UVW Parameters rollout, set the U tile to 2
(U corresponds to Y in the viewport). Set the V tiling to 3.5 (you generally have to experiment a bit to
keep the map proportions right) (Figure 7). You should have something that looks like figure 8, looking
Now we can add the bump and shine strength maps to the material. Go back
to the material editor and drag and drop the Diffuse botton to the Shine Strength and Bump slots
(select Copy on the popups). Now go into the Maps and set the bitmaps to panels_shine.gif and panels_bump.gif
respectively (by copying the diffuse slot, you save yourself some time setting up the others), and set bump
amount to 10 (there's a higher contrast in the bump map than the other bumps for the ship).
We're going to wimp out a bit and use the same material on the dorsal connector
and that thingie that sticks off of the botom of the nacelle. Select those parts (Box01, Box02, Elipse02, and
Line02, really should have named those objects!), and apply the material. These objects are going to need different
mapping coordinates, we'll start with the thing on the botoom of the nacelle, so select Elipse02 and apply a UVW
modifier. In the Left viewport, align it to X and click Fit. Set the U tiling to .75 and it should fit OK.
Next, select Box01 (the dorsal connector) and apply the UVW modifier.
We'll use box mapping on this one. Box mapping is basically projected as planar maps from the 6 faces of a
box shaped gizmo (good for boxy objects, strangely enough). Check the Box radio button under Parameters.
Set U tiling to 3 and V tiling to .5, and you'll avoid much stretching on the object from any angle. Apply
the same type of mapping to the nacelle spine (Line02), but set U tiling to 6 and V tiling to .5. We won't
bother with mapping coordinates for Box02, as it has built in box mapping coordinates, and you can barely see it anyway.
Render a perspective view and it should look like figure 9.
Wimping out again, apply the panels material to the Bridge modules and lower sensor platform (Circle01, Circle02,
Circle03, Rectangle01). In an ideal world you'd probably paint some better maps for the bridge sections, but I've
got cooler ships to make. :) I didn't mess with the tiling on these objects, just apply a planar UVW modifier to
each in the top viewport (figure 10). Now apply the panels material to the top bridge section (Sphere01). This piece
already has built in spherical mapping coordinates (spherical mapping is sort of difficult to explain, but it's
usually only works well for spheres, it's sort of like wrapping a rectangular decal around a ball, figure 11).
This is all the panel texturing we'll do, the ship is nearly 'painted' (figure 12).
The last new textures we'll need to make are the texure for the bussard
collecor and the blue nacelle vents. Start by naming the next material slot Bussard. In this case we'll
be using proceedural textures instead of bitmaps. Go down to the diffuse slot of the material, click the
None button and select Smoke as the map type. The smoke texture lets you specify two colors which are mixed
together with random smoky patterns, perfect for the bussard collector. Under Smoke Parameters, set the
first color slot to RGB: 255, 0, 0, bright red, and set the second to 255, 217, 5, bright yellow.
Set size to 50 and Exponent to 1 (you sort of have to just fiddle with these settings, depending on your
needs, but these will work for our bussard). (figure 13)
Click Go to Parent, and set self-illumination to 100 in the top level of the
material. We're going to blend this smoke material with another made of red and black, so click the Type:
Standard button, and set the material type to Blend (choose to keep the current material as sub-material
on the popup). You'll see a screen that lets you set up two materials, as well as a spinner for the blend
amount and a mask slot (figure 14). Drag the bussard material to the second slot (choose Copy). Go into the Diffuse
material of the second Blend slot, set Color 1 to black, and use the same red as before in Color 2. Set
size to 100 and Exponent to .5, which will ensure that we get some interesting patters. Back up to the top
of the blend material, set the Mix Amount spinner to 30, which blends the two materials together (a tip for
working with materials, especially blends, you can toggle the Show End Result button , which lets you
see only the sub-material you're working on). You'll end up with a nice smoky bussard texture (figure 15).
Apply the material to the bussard collector (Rectangle507).
For the warp coil vents, we'll use a really small, simple bitmap and a blend material.
Name the next material Nacelle Vents, and set the diffuse color to RGB: 170, 186, 254, a sky blue
(set self illumination to 100 as well). Change the material type to Blend, go to the second material slot
and set the diffuse RGB to 6, 0, 134, dark blue (self illumination should be 100 here too). Click Go to Parent,
click the Mask button, and select Bitmap as the type. In the blank bitmap button, load nacelle.gif. Have a look
at this bitmap (click View Bitmap under Bitmap parameters). There's no need for the lines to be long, the bitmap
will tile to make them fit the nacelle. Black areas will be filled with the first material, white areas let the
second material show through. It looks like things are backwards, we want thin dark blue lines, so go down to
the Output rollout and check Invert (this just inverts the bitmap, figure 16).
Ahhh, that's what we were looking for (figure 17). Apply
this material to the nacelle vent parts (Coils03, Coils04, Rectangle503, Rectangle504).
With all of these objects selected, add a UVW modifier in the left viewport.
Leave it set to Planar mapping, but change the alignment to X. If you do a quick render, you'll see that the
lines are going the wrong direction (figure 18), so click Sub-Object under the UVW Parameters and rotate the gizmo 90
degrees on the Z axis. Click the Bitmap Fit button to re-proportion the gizmo, and scale it up a bit so the
lines aren't too close together (figure 19). Notice that we didn't need to mess with the tiling, any time the gizmo is
smaller than the object, the bitmap will automatically tile. The lines look pretty chunky when you're not zoomed
in close, but this is easy to correct. Go back to the Mask section of the blend material, and set blur to 1.5
(this blurs the bitmap a bit as it gets farther from the camera). Go to the top level of each of the blended
materials and check the Supersample box, which improves antialiasing quite a bit (use this only when neccessary,
as it slows rendering time). The lines still look a bit chunky from some angles, but this will normally be
covered by glow effects in final rendering.
So, Ok, we're done, right? Wait, what about markings and windows?
Here's where the blend materials come in really handy. We'll use masks to add the windows and markings
right onto the materials we've already created. |