A
Lightwave Tutorial by Andrew
Weiler
In
this tutorial we're going to do things a little differently then
you may be used to. Because our goal is to model and texture a realistic
fish, we're going to start with the texture map as the basis for
building our model. Please note that although I'm partial to LightWave,
this tutorial is applicable to any 3d application that supports
images in the modeler viewport. Please feel free to download the
images on this page and follow along.

1. I started out by scanning a photo of a fish on a flatbed scanner
(figure 1), this had to be separated from the background and retouched
with paint and clone tools in Photoshop. The gamma curves were also
adjusted to provide a sharp and saturated image which will become
the color map for our fish. Name this image color_map and save it.
You may also use a real fish as a basis for your texture, although
you may have to fillet it to make sure it lays flat on the scanner.
There are a couple of advantages to this method, 1. it will provide
you with the sharpest, most authentic texture, and 2. when your
boss sees you filleting a fish on your office desk and gingerly
slapping it on a scanner he'll think you're in bad need of a break
and give you the week off.

2. In photoshop, turn the full-color scan into a grayscale image,
and boost the contrast to get a nice definition between the dark
and light tones. This image (figure 2) will be used as a template
to model the fish, as well as a texture map to control diffusion.
Name it gray_map and save.

3. In the modeler of your choice load gray_map and position it in
the x viewport. I used LightWave's MetaNurbs function to draw a
rough box around the image and proceeded to add control points with
the knife tool (figure 3). I then scaled and dragged these points
into position. With nurbs-based modelers like Rhino 3D or Alias,
you may want to draw curves in the z port, pull these into position
and loft them into a nurbs surface.

Figures 4 and 5 show y and z views. Create the fins in a similar
fashion, you may want to create them as separate objects then merge
them into the final model. The eyes are simple spheres, flatened
and moved into place.

In figure 6 we see the final polygonal wireframe, figure 7 shows
the shaded geometry.

4. Note that the fish model need only be tagged with one surface
name, because all material attributes will be modulated with "global"
texture maps. Figure 8 is our transparency map. This map is based
on the original grayscale image, all the areas that need to be opaque
are painted out in black, while white areas signify complete transparency.
Paint a gradual falloff of black to white at the tips if the fins
to simulate the translucency seen in a real fish's fins. I used
a combination of clone, smudge and blur tools, along with soft airbrushing
and dodge/burn to acheive this effect in Photoshop.

5. Figure 9 is a specularity map which provides modulation to the
hotspots and highlights of the finished rendering. Turn the original
grayscale map negative and cut holes out for the eyes, which need
to keep a smooth highlight.

6. Figure 10 is the bump map, which modulates a surface in a way
that provides the illusion of bumpiness and raised texture. This
will provide us with the final and most important touch: scales.
Notice that I've cut out the original gray texture in what would
be the scaley areas of a fish and replaced it with a "scales"
texture. Again, be sure to cut holes for the eyes to maintain their
smoothness.

7. Now that the model and texture maps are ready, load them into
the 3d application of your choice and apply them to the appropriate
material channels: color, specularity, bump and transparency. I
used planar mapping on the x to apply the textures. Finally, load
the original gray image and apply it to the diffuse channel. Diffusion
controls how light is absorbed or reflected, since organic subjects
rarely have uniform diffusion, it's a good idea to modulate it with
a texture of some kind. Auto sizing your textures should place your
textures perfectly because the model is based on them. You'll have
to adjust the percentage of effect each of these channels have on
your rendering, just tweak it till it looks right. In the final
rendering I used a shader plugin for LightWave called HSVBoost form
Worley Labs' (www.worley.com)
Polk collection, this adjusts the saturation-desaturation level
of the fish based on the camera's angle to the geometry, adding
a final touch of realism.
Next time we'll discuss
motion and timing, as well as IK hierarchies as we animate our fish.
Click to see Part
2.
If you would like to see the fish in an animation, we've supplied
a short clip in Quicktime
(1036k), AVI
(1099k) and MPEG
(439k) formats for your viewing pleasure.
Andrew
Weiler is a CG artist and technical director working in the
Atlanta, Georgia area. When not producing animation, graphics and
effects for companies like Bellsouth, AT&T, and GE you'll probably
find him juggling his kids around, and trying to get some sleep.
http://www.mindspring.com/~aweiler/