Everyone knows that when you image-map
a surface, the image should be seamless. That means all sides
should match with each other so when the image is tiled, there
should be no visible seams. This is an easy task and there are
many programs that help this task (especially using OFFSET and
RUBBER STAMPING in Adobe Photoshop).
But, what if you need to have an
image-sequence tiled across a surface? How can you make a series
of images look seamless? In this tutorial we will look at the
various steps that need to be taken to achieve a seamless image
The example we will use here is
a "wispy-like" image sequence. You might be wondering,
why not just use a procedural? Well, there are a couple of reasons
why image-sequences are sometimes preferable. First, procedurals
can slow down rendering. The second reason is that image-sequences
are really the only way to go for real-time 3D applications.
Besides using image-sequences for
3D purposes, they can also be used for real-time animations
for various multi-media applications and web pages (wow your
audience with a moving background from an animgif that has no
Okay, lets get to work here.
First thing we need is to make the wispy image. Just for the
sake of speed and simplicity well make a very basic cloud
render in Adobe Photoshop.
Open up Photoshop. We will need
to make a new image so go to the FILE menu and select NEW.
Here we will determine the size
of the image we want to make. The reason why I want to make
a cloud image is because Photoshop has a very easy way of making
clouds. One of the bonuses of Photoshops clouds is the
fact that if you make them at a horizontal and vertical size
that is multiples of 128, they will automatically be seamless!
So if we make a new image at the
size of 512 by 512 and render a cloud, it will be completely
seamless, thus saving us the work of making one seamless image.
Set the width and height to 512
(figure 01). This will give us a nice square image,
Now we will add the cloud to the
image. Lets make this some dark foggy water, go to the
tools palette and make the foreground color a dark blue. Make
the background color black (if it isnt already).
Go to the FILTER menu and select
RENDER then CLOUDS (figure 02). Youll see that you now
have some blue and black clouds (figure 03). Keep hitting this
filter a few times (Ctrl-F) to see the different cloud effects
you can achieve. Stop when either you find a good looking one
or when your fingers bleed.
Believe it or not, thats
it for the image! To make the image come alive, we need to take
it into Lightwave and work some magic on it (or just some good
Save your cloud image as a Targa
file named "wispy.tga".
MAKING THE OBJECTS
We need to first make an object
to put the object onto. This is pretty easy to do, all we need
is a square polygon.
Go into Modeler and select the
OBJECTS tab and hit the BOX button. Hit "n" on the
keyboard to bring up the numeric options for BOX.
We want to make a flat box with
many segments facing the viewer. Input the settings in figure
04 and hit OK.
You will now see a blue outline
of the box we want to make. Hit the "enter" key on
the keyboard to make the object (figure 05).
Hit the "q" key and give
it a surface name of "wispy". Save this object as
Great, there is our first object.
The image map that we made in Photoshop will be mapped onto
this polygon. Now we just need to mess with the points on this
object to distort the image. Dont worry, this will all
make sense in a few more steps.
WARPING THE BOX
Copy this object into another layer.
We need to deform this object. The fastest way is to select
points and jitter.
Select all of the points inside
the box, make sure not to select the points that are around
the edges of the box (figure 06).
Go to the TOOLS tab and select
JITTER. Input the settings in figure 07.
You will now see that the points
inside the box are now moved around (figure 08).
You can stop at this point or move
the points around some more by hand. I usually use the DRAG
tool to enhance the jitter some more. Try exaggerating some
areas and stretch other parts around (figure 09). Really look
at the lines connecting the points and think of them as motion
Hit the "q" key and give
this object a surface name of "target". This object
will eventually be used as a morph target and it is always a
good idea to give morph targets their own surface names.
Save this object as "wispytg01.lwo.
SETTING UP THE OBJECTS
Now comes the fun part, making
the wispy image come alive. Go to Layout and load both objects
up. Also, load up "wispy.tga" into Layout.
Open the SCENE EDITOR and hit SHOW
ALL OBJECTS AS TEXTURED SOLIDS. Close the SCENE EDITOR.
First thing we need to do is make
"wispytg01.lwo" not visible to the camera. We only
want its point information.
Go to the OBJECTS PANEL. Make sure
"wispytg01.lwo" is the CURRENT OBJECT. Select the
APPEARANCE OPTIONS tab and turn on UNSEEN BY CAMERA (figure
10). This will make this object completely invisible to the
Close the OBJECTS PANEL and go
to your CAMERA VIEW. Make "wispy01.lwo" the SELECTED
ITEM. Youll see your first object. The morph target object
is now invisible. We do want to use the morph target though.
With "wispy01.lwo" selected,
re-open OBJECTS PANEL. Select the DEFORMATIONS tab. Set MORPH
AMOUNT to 100% and select "wispytg01.lwo" as the MORPH
TARGET (figure 11).
What we have just done is force
the points in "wispy01.lwo" to conform to the points
of "wispytg01.lwo". If you go back to your CAMERA
VIEW you will see that "wispy01.lwo" now looks like
the morph target object.
PLACING THE IMAGE
Now lets texture map the
object. Go to the SURFACES PANEL and make "wispy"
the CURRENT SURFACE. The color of the surface doesnt matter
because we will be using an image map.
Hit the "T" button next
to SURFACE COLOR to bring up the COLOR TEXTURE panel. Here we
will add the image to the objects surface.
Set TEXTURE TYPE to PLANAR IMAGE
Set TEXTURE IMAGE to "wispy.tga".
Hit the AUTOMATIC SIZING button.
Set TEXTURE AXIS to Z.
See figure 12 for this setup.
Hit USE TEXTURE to close out this
Close all panels and go to the
You will now see the image on the
object and it looks slightly warped. The warping is caused by
the points in the object being moved off of their original positions
by the morph target. Lets see how this affects the texture
MOVING AND WARPING
Go back to the COLOR TEXTURE panel
for "wispy" (figure 12). Youll see a button
called ADD REFERENCE OBJECT. This button will make a null object
that controls the placement of the image on the surface.
Hit this button and youll
see the name "ref obj" as the TEXTURE REFERENCE OBJECT
selection (figure 13) Hit USE TEXTURES and close all panels
and go back to the CAMERA VIEW.
Now you will see a null object
in the center of our object. Select it (if it isnt already)
and move it up and down on the Y axis. You will now see the
image warp as it travels up and down the surface of the object.
Okay, now that we did that, we
need to get rid of that null object. We really do not want to
use the null to control the motion for this example. Lets
go back to Go back to the COLOR TEXTURE panel for "wispy"
again. Set the TEXTURE REFERENCE OBJECT to none (you can also
just delete the null object). We will use the TEXTURE VELOCITY
We want to move the image up on
Y and make it cycle seamlessly through a set number of frames.
The object is 1 meter tall (trust me, it is). If we want the
image to move up the object in 20 frames all we need to do is
figure out how far to move the image up per frame. The easiest
way of doing this is to use Lightwaves built in calculator.
Hit the TEXTURE VELOCITY button
to bring up its panel. We want to move the image only on the
Y-axis. We know that the object is 1 meter tall, so type in
the Y field "1m". Next to it add "/20" so
it looks like figure 14 . Hit "return" and youll
see that 50mm is now the Y setting. What we have just done is
divide 1 meter by 20 frames.
This example is pretty easy and
you might be asking, "why not just use the reference null
and move it up 1 meter for 20 frames?"
The reason why is that if you had
a more difficult sized surface it is actually easier to just
use this calculation method. Lets say you have no idea
how tall a surface is. Hit AUTOMATIC SIZING and use the resulting
TEXTURE SIZE number for Y and place it into the TEXTURE VELOCITYs
Y field and do your calculations. This method is much more exact
and prevents excess objects in your scene. It is also easier
to adjust for different frame amounts.
Okay, close all panels and go back
to your camera view. Cycle through the frames and you will see
the texture moving.
Now all you have to do is render
out the sequence. I would normally render out the full frame
even with the empty areas and crop it later in a program like
Photoshop. You can also crop in Lightwave before rendering by
using LIMITED REGION in the CAMERA PANEL.
If you use LIMITED REGION, you
need to scale the LIMITED REGION box down to the very edges
of the box. If are not right on the edge, it will render the
background or crop too much, thus defeating the whole seamless
process. A safe thing to do for LIMITED REGION is to set the
BACKGROUND COLOR to a bright pink or green. Set the LIMITED
REGION box to as close to the edge as possible from the outside.
Render a test and see if you see any background poking through.
If you do, then carefully bring the LIMITED REGION edges closer
to the objects edges.
The cycle should look something
like the quicktime movie. All of the edges will match each other
perfectly when tiled together. How? Because the image was seamless
and we only moved the points inside the morph target object,
we never affected the points on the edges of the box.
Well, I know this was a long tutorial
for a fairly simple process, but I hope you picked up on a few
"hidden" things in Lightwave that most people never
use. Youll find another example of this process to create
seamless fire among other tutorials in my book LIGHTWAVE X-TREME.
The book uncovers the hidden powers of LIGHTWAVE 3D.
Tsui is a game designer for Midway Games. Among his credits
are the MORTAL KOMBAT games, WWF Wrestlemania, and NHL Open
Ice. His new book LIGHTWAVE X-TREME is now available. For more
information, go to http://www.lightwave-x-treme.com