Adding Detail to Spaceships with Texture (Part 1)
So now we have built a fairly decent object with lots of surface detail, but there are still large areas of pristine flat colour, and we need to break these up a bit.
Textures can never replace actual geometric detail in the mesh, as they will never cast shadows, and can become invisible when viewed at the wrong angle. However, textures can be used to great effect to enhance geometric detail without increasing the polygon count, and that is what we will be doing here.
This lesson will begin our look at texturing with a technique that allows you to 'model' an image map.
|1)||Previous Step | Next Step|
The first step in this lesson involves doing a bit of modelling. I will use techniques that we have gone into before, so I'm not going to hold your hand through building this paticular model, except to give some dimensions for the object you must create.
Build your details in a 100 x 100 meter square, this will help later when it comes time to map the textures.
|(top view) object is 100m x 100m x 2.1m|
The precise details that you build do not matter, and for once, you don't have to worry about keeping the polygon count down, as we will neer actually be using this geometry on our object.
|completed detail object geometry|
When you are creating your details, try to keep the height of all your bevels and extrusions to between 0m and about 2.5m.
The object shown above is 2.1m high at its tallest point.
When you are done building the object, press q and apply a new surface called Texture Maker to the entire object.
Save your object as textureMaker.lwo.
|2)||Previous Step | Next Step|
Open Photoshop, or whatever image manipulation and painting software you have and create a new greyscale image 10 pixels wide by 256 pixels tall.
Set the background colour to be black and the foreground colour to be white.
Now use the Gradient tool to create a gradient from black to white vertically over the whole image as shown here.
Save this image as an Amiga IFF format image called b-wGradient.iff.
|3)||Previous Step | Next Step|
Open Lightwave Layout and load your textureMaker.lwo object.
Now open the Image Editor/ Images Panel and load in your b-wGradient.iff image.
|object loaded into Layout|
|4)||Previous Step | Next Step|
Open the Surface Editor and select the Texture Maker surface.
Apply the following settings to the texture:
Leave all the other surface settings at their default values.
Click the next to the colour settings in order to apply a texture map to the colour channel.
Apply your temporary nebula image map as a Planar projection through the Z axis.
Turn OFF both Texture Antialiasing and Pixel Blending. Set the Width Tile and Height Tile behaviours to Edge.
Next, press Automatic Sizing.
Click Use Texture and close the Surfaces panel.
Save all your objects at this point.
|5)||Previous Step | Next Step|
If you turn on the OpenGL preview for the Layout viewport and enable textures you can see the effect this has had.
You can see the effect more clearly if you Stretch the textureMaker.lwo object to 7.5 times its normal height.
|object temporarily stretched|
As you can see, the new texture has had the effect of shading the object so that it is black at its lowest point and white at its highest point, with shades of grey in between. If we render this object with the camera directly above the object, we can use the resulting render as a bump map.
Reset the scale of the object to X=1, Y=1, Z=1 before proceeding.
|6)||Previous Step | Next Step|
Give the camera the following position, rotation and zoom.
This will move the camera directly over above the object, pointing down.
Open the Camera Panel and set the following options:
|camera panel settings|
Note that we will be rendering this image Without antialiasing. This is because we want sharp edges to our image, rather than a nice looking render. If you have the inclination, you could render a larger image than 500x500, but this will not really be necessary.
|7)||Previous Step | Next Step|
Go to the Render Options panel and choose to save an RGB colour version of the render, and also save an Alpha channel image. Use a lossless format, such as Amiga IFF or Targa format for the images.
Set the beginning and end frame numbers to 1 and press F10 to render your image.
When the rendering is completed, save your scene and objects.
|8)||Previous Step | Next Step|
Return to Photoshop and load up the two images that were just rendered out by Lightwave.
We will now optimise these images so that they use as little memory as possible when we use them in Lightwave.
Begin with the RGB image. Currently, this image is using the 24 bit RGB colour mode, which means that each pixel is represented in the file by a 24 bit number, allowing 16,777,216 colour variations. This is obviously rather wasteful, both in terms of disk space and system memory used to load it.
A 24 bit number looks like this to the computer:
Convert the colour mode from RGB colour to Indexed Colour be selecting Indexed Color from the Image \ Mode \ menu. This will allow us to only use as many colours as are actually contained within the image.
|Indexed Colour Options|
Set the Palette to Exact mode, and the requester will report the exact number of colours in the image. As you can see, my image has 183 colours, which would be represented in the file by an 8 bit number (allowing 256 colour variations). This 8 bit number takes only one third of the memory of a 24 bit image, so we are saving resources.
An 8 bit number looks like this to the computer:
Save this file as Detail-Panel.iff in Amiga IFF format (this is one of the few image formats that Lightwave can load that support indexed colour modes).
|9)||Previous Step | Next Step|
Now we will deal with the Alpha image. It is clear to see that this image uses only two colours, black and white. It is currently in Greyscale colour mode, meaning that it is using an 8 bit palette to store the colour information.
To store a black and white image (without greyscales) we need only a 1 bit palette capable of storing only two colours.
We will now convert this image to Photoshop's Bitmap colour mode, which uses a 1 bit palette.
Convert the colour mode to Bitmap by selecting Bitmap from the Images \ Mode menu. If you find that Bitmap is not available as an option, convert the mode to Greyscale first.
Set the output mode to 72 pixels / inch, in order to maintain the size (in pixels) of the image following the conversion to Bitmap mode.
Save the image as Detail-Panel-Alpha.iffusing Amiga IFF format.
We can now quit Photoshop.
|10)||Previous Step | Next Step|
In Modeler, load up the object we finished building in the last lesson.
Hopefully, you saved this object with its layers separated, which will make our life easier now.
Select Layer 1 so that you are looking at the main object with its attached details.
Carefully select the polygon shown below.
Press q and apply a new surface to the polygon called Upper Detail Panel. Don't worry about surface settings for this, we will deal with them later in Layout.
Deselect the polygon when you are done.
|11)||Previous Step | Next Step|
Next use the Polygon Statistics panel to select all polygons with the Details Panel surface.
Now carefully deselect most of the polygons that were selected until you are left with only the polygons shown opposite selected.
Finally, press q and assign these polygons a new surface called Forward Recessed Detail Panel.
Deselect those polgons and once again, use the Polygon Statistics panel to select all polygons with the Details Panel surface.
Deselect all polygons until you have only the polygons shown here selected.
Apply a new surface to these polygons called Rear Recessed Detail Panel.
|Repeat these steps again and apply a surface called Forward Bevel Pits to the polygons shown opposite.||
We will now take the object into Layout and apply a few textures.
If you are using Lightwave , save your object as myDetailObject.lwo
If you are using Lightwave 5.6 save a version with the layers separate, then save the contents of Layer 1 as myDetailObject.lwo
|12)||Previous Step | Next Step|
Download the following scene file. tut9-scene.lws and load it into Layout. When Layout asks for an object called myDetailObject.lwo, point it at your own detail object that you just saved from Modeler.
If you are using Lightwave , Move the objects for layers 2 and 3 so that they do not obscure the Layer 1 object (as seen below).
Now open the Images Editor and load up the texture maps we saved from Photoshop earlier on: Detail-Panel.iff and Detail-Panel-Alpha.iff.
|13)||Previous Step | Next Step|
Open the surfaces editor and apply the following settings to the following surfaces:
In the surface called Upper Detail Panel Click the or next to the bump settings in order to apply an image as a bump map.
Apply your detail image map as a Planar projection through the Y axis.
Turn OFF Texture Antialiasing and Pixel Blending. This is especially important for bump maps, because we want a nice clean edge to our bumps, and texture antialiasing and pixel blending would fudge the image around, destroying the clean lines and ruining the bump effect.
Next, press Automatic Sizing.
Click Use Texture and close the Surfaces panel.
|14)||Previous Step | Next Step|
I have already set up camera positions in this scene, so go to frame 1 and view the scene through the camera. You should find yourself looking at a close-up of the first polygon we applied a new surface to in this lesson.
Press F9 to have a look at the new bump map in action.
|our first render|
As you can see, our bump map has done a pretty good job of imitating some extra detail to the panel, based on the detail object we built at the beginning of this lesson.
The bumps could do with being a little more pronounced, so return to the bump map settings and change the Texture Amplitude to 2.0 (200% in Lightwave 5.6).
Render again, and see if you like the results.
|15)||Previous Step | Next Step|
The bump map works pretty well, but I'd like to see a little more variation of tone in the details.
In the surface editor, go to the bump settings again and copy the texture. In Lightwave 5.6 this is done by simply pressing Ctrl+c while in the bump map settings panel, and in Lightwave  this is done by pressing the Copy button and choosing Current Layer from the pop-up menu.
Now exit the bump map settings panel and press the or next to the Diffuse level input box to apply a texture map to the Diffuse channel.
Once inside the panel, Paste the texture from the bump map into this channel. In Lightwave 5.6 this is done by pressing Ctrl+v while in the diffuse map settings panel, and in Lightwave  this is done by pressing the Paste button and choosing Replace Current Layer from the pop-up menu.
Simply doing this will present a problem, as there are pure black areas in the image, which will correspond to a 0% diffuse level, meaning that no light will affect these areas. To combat this, we will reduce the effect of the texture map by changing the Layer Opacity (Texture Opacity in Lightwave 5.6) from 100% to 20%.
Exit the diffuse map panel and click the or next to the Specular level input box to apply a texture map to the Specular channel.
Repeat the steps to paste the bump texture into this channel, but swap the image from Detail-Panel.iff to Detail-Panel-Alpha.iff, and set the opacity to 50%. Changing the image to the 1 bit Alpha version will have the effect of applying one specular setting to all of the raised areas of the panel, and another to all the areas with no detail.
Render your object to see the difference this has made.
|diffuse and specular maps applied|
We now have some fairly respectable detail added to the previously flat panel. It's not good enough to be used in place of actual detail in the mesh for large areas, but it does add a little extra detail to smaller areas, or areas that already have some geometric detail. Most of this panel will be covered by the detail from Layer 2 of the obect eventually.
|16)||Previous Step | Next Step|
Make a copy of this whole surface as we did when we duplicated surface settings for stars in Step 6) of Lesson-2.
Paste the surface settings into the surface called Forward Recessed Detail Panel.
Now open the Diffuse map settings for this surface and press Automatic Sizing, then do the same for the Specular and Bump maps, Automatically Sizing the texture each time.
Go to frame 2 of the scene and render it out to see the new settings applied to Forward Recessed Detail Panel.
|forward recessed detail panel|
|17)||Previous Step | Next Step|
Now go to frame 3 so that you are looking at the polygons with the Rear Recessed Detail Panel surface.
The surface settings for Upper Detail Panel should still be stored in the copy buffer, so paste these settings into the Rear Recessed Detail Panel surface.
Now open the Diffuse map settings for this surface and press Automatic Sizing. You will see that this will stretch the image map to fit the elongated rectangle shape defined by the polygons that have this surface. We don't really want this to happen, so in the Texture Size settings, alter the X-size of the texture so that it is identical to the Y-size. This will return our image map to its original square shape, and as our image will tile seamlessly, this will have no unfortunate errors where the map repeats.
|Automatic sizing results...||...manually altered to|
Repeat the last two operations for the Specular and Bump maps, each time automatically sizing and then altering the X-size of the texture.
|rear recessed detail panel|
This results in an unstretched, tiled version of our texture map being applied to the flat areas on the rear panel.
|18)||Previous Step | Next Step|
Go to frame 4 and you will find yourself looking at the polygons to which we applied Forward Bevel Pits.
In the surface editor, paste the texture we have been working with into the Forward Bevel Pits surface.
Go through each of the maps in turn and apply Automatic Sizing, but this time, alter the Z-size to be equal to the X-size.
|forward bevel pits|
As this surface is curved, you can see one of the inherent problems of using textures rather than actual mesh detail, because the texture detail tends to disappear under unfavourable lighting and camera angles.
|19)||Previous Step | Next Step|
We'll now go back to Modeler to prepare some more polygons for image maps.
If you are using Lightwave , your object can simply be passed automatically through the Hub to update Modeler... in fact, if you have left Modeler running while we were setting up those textures, it will probably already be updated.
We now have a rather tedious task ahead. We must select individual groups of polygons and assign them new surface names so that we can map them individually. If you plan your modelling carefully, this step would become unecessary, as you could assign each mapping group as you create the bevels and extrusions... but this is a worst-case scenario.
The coloured images below show the faces of each of the bevels and smooth-shifts and extrusions we have made, each colour coded and given a number. Select the polygons indicated by the colours and then assign them a new surface name according to the surface key provided here.
|polygons selected for Detail Panel 01|
The image above shows the polygons selected ready for a new surface to be applied. Looking at the surface key, we can see that this group of polygons will be assigned the surface name Detail Panel 01.
Now use the surface key to assign new surface names to the polygons shown. When all the detail panels are assigned, we will apply some new surfaces to the main surfaces of the object.
Note: The colours shown are just for easy reference, you should not apply different colours to all of your surfaces like this!
When you have finished assigning all the new surfaces, save your object as myDetailObject.lwo. If you are using Lightwave 5.6, you can merge all your layers together now.
|20)||Previous Step | Next Step|
Load the scene you downloaded earlier into Layout, if it is not already loaded.
If you are using Lightwave  and still have the scene loaded, reset the positions of the Layer 2 and Layer 3 objects so that they return to their correct positions in relation to the Layer 1 object.
Go to frame 5 and you should see something like this:
We will now quickly assign some settings to the new surfaces we just defined. We will do this by copying settings from other existing surfaces.
This will assign the correct colour, specular level and smoothing settings to the surfaces, leaving you with something like this.
|frame 5 after surface duplications|
Save your object now, and we will start to add some texture to some of the detail panels.
|21)||Previous Step | Next Step|
Go to frame 6 and you will see that the camera is pointed at the two large detail panels on the top of the object.
These two large panels have the surfaces Detail Panel 06 and Detail Panel 07.
Open the Surface Editor and select Detail Panel 06.
Apply Detail-Panel.iff as a diffuse map to this surface. Give the map the settings in the table shown opposite.
When this is done, apply a map with the same settings to the specualr and bump channels, but with the following alterations:
Next, copy this surface and paste it into Detail Panel 07, then go through each texture map for this surface and alter the Position / Center of the texture to X=25.0m, Y=0.0m, Z=25.0m
If you render your object now, you should be left looking at something that looks a lot like this:
|maps applied to Detail Panels 06 & 07|
|22)||Previous Step | Next Step|
Go to frame 7 in the scene and you will find yourself looking at the two large pipes on the front of the object.
These pipes have the surfaces Detail Pipe 01 and Detail Pipe 02.
Open the Surface Editor and select Detail Pipe 01.
Apply Detail-Panel.iff as a diffuse map to this surface. Give the map the settings in the table shown opposite.
When you have entered the settings, press the Automatic Sizing button. If you look at the texture size, you will find that the Z-size is much larger than the X and Y size. This will stretch our texture, and we don't want that to happen, so manually alter the Z-size to be equal to the X and Y sizes.
When this is done, copy this map and paste it into to the specualr and bump channels, but with the following alterations:
Next, copy this surface and paste it into Detail Pipe 02, then go through each texture map for this surface and perform the Automatic Sizing and manual size adjustments described above.
Rendering out frame 7, we find ourselves looking at the pipes with our detail texture wrapped around them.
|maps applied to Detail Pipes 01 & 02|
|23)||Previous Step | Next Step|
You can now go around the other panels of your object applying maps of this kind if you wish. Do not apply this generic mesh to all of the panel surfaces, or your object will start to look over-cluttered and it will become obvious that you have used the same texture map all over the place.
If you are using Lightwave , a very convenient way to pick up the surface that you want to edit is to render a low-quality image of the whole object with VIPER enabled, and then you can click on panels in the VIPER window to select the corresponding surface name. Very cool indeed. Sorry Lightwave 5.6 users, you have to do it the hard way, referring back to my panel key.
The larger surfaces with the Main prefix would look too generic if we applied our detail map to them, so we will be creating and applying some custom-painted maps for those in the next lesson.
For my object, I applied the detail map to the following surfaces:
|surfaces with detail map applied|
And after all that, I was left with this:
|finished for now|
|© 2000 Kier Darby and Alternate Perspective 3D Ltd.|