Recreating the "copter shot" from The Matrix 14 May 01
What do you get when you add up all of these parts?
You get a pretty cool recreation of the shot in The Matrix where the camera is looking up
at the helicopter into the falling stream of shell casings:
Quicktime movie here (160 x 120, 313 KB)
DivX AVI here (320 x 240, 640 KB)
Click here for the Illusion 2 project files. They CAN be loaded by the Illusion 2 demo.
First, the critique. No, it's not a perfect recreation. The bullets aren't quite right, the sky is too
bright, the copter isn't in the same position, the building shows too much. (Anything else?)
I'm still pretty happy with it. I positioned the copter that way so I wouldn't have to deal with the rear rotor. The bullets can probably
be tweaked a bit more, but I'll leave that as an exercise to the reader (I always hated when textbooks did
that). I brightened the sky (and everything actually) on purpose. Looking at the non-captured version of
the shot (on the DVD) it looked brighter and cleaner than the captured version, so I brightened it. (It also
let me work a very simple but powerful emitter into the tutorial.) You may notice that the muzzle flashes
are not too prominent in the 160x120 version. The water streaming down the building isn't either. They
*are* there though (download the project and check them out).
Let's start analyzing it. There are 2 types of emitters in this project (the way I think of it): regular
particle effects (bullet shells, flowing water, muzzle flashes), and "sprites" (copter, blades, building).
The Sprites
I think this is probably one of the least-used features of Illusion: the ability to easily move an image
(single-frame or animated) around the screen. "Sprite animation". Of course in this example the sprites
aren't moving... Anyway, to do sprite animation with Illusion, just check the "single particle" option on
the particles page of the properties dialog. (If you're not sure what I just said, then check an earlier
tutorial like sparkles from scratch or review the
Illusion docs -- I'm not going to go into all of the little details here.)
When the "single particle" option is checked, the particle stays attached to the emitter -- velocity doesn't
matter, nor does emission angle, emission range, or weight. Life doesn't matter either, since the life of a "single"
particle is based on the emitter active property (or is 1000 frames if the active property graph doesn't have an endpoint).
The properties that we're interested in are size and spin (zoom too, but that's the same as size in this
case, since the "single" particles don't move).
Let's talk a little about how I created the sprite images. I should note that it was pretty easy, since I
was grabbing sprites to use against the background from which they were taken, or at least one the same
color. I could be a little sloppy about cutting out the sprites from the original image. Basically all I did
was cut out the image (copter for instance) then color around it using an appropriate shade of grey. At
first I left a little "halo" for the copter, but then had to clean it up when I put the blade under it --
more on that later though. The building was simple -- just cut and that's it. Well, still had to paint a little
with a solid color... I should probably talk about that.
I originally painted around the building with magenta -- that horrible color that you use when you want to
mask using color. Since I knew I'd be using the "full-color" option when importing the image and picking
the mask color, I wanted to use a color not in my image. Problem is when I imported the image, it had a little
magenta fringe around it, as if the image were being resized. The image was already correct size -- it seems
like Illusion was resizing it anyway (to the same size). That's probably a bug, but to work around it I
just used a different color -- grey. I didn't really care if that color was in my image already, because
even if it were made transparent (in some parts of the building for example) I'd have almost the same color
background behind it anyway, so it would probably not be visible.
Here's what it looks like:
And select the "color" option for transparency, then click the little colored window and select
the grey area around the building.
I should point out that the building image was already 128x256. I always do my resizing in my
paint app -- make it 128x128, 128x256 -- whatever, but make sure that I only use the sizes that
Illusion supports (16, 32, 64, 128, etc.)
Ok, so now the building is ready -- just need to set the size property to make it the right size.
I won't go into that, because it's so easy. I will talk about the particle colors though, because
in this case I don't want the color of the building to change -- I want it to look just the way it
does. So, I make the particle color white. Simple enough.
There really isn't too much to say about the sprites. The blades were a little tricky, because much of the
blade is behind the body of the copter, so I had to do a bit of work with the "clone tool" of my
paint app to get a complete blade. I could have also created a 3D blade and rendered that, but that
seemed like too much work -- my 3D skills are soooo rusty.
The cleanup isn't too critical for the blades because they'll be moving. If you look at the
blade image on black below -- yuck! On the correct background color it looks better (with no changes to
the image), and with motion blur applied (after the blade is spinning -- described below) it looks
perfect! (Don't do more work that you have to, right?)
The copter image took the most work, because I had to do a lot of touch-up work to get rid of the
light grey fringe around the copter. At first I didn't think I needed to do this, but as soon as
I added the copter to the stage and put the blade emitter below it (the blades need to be "behind" the
copter body, right?) I saw the light grey fringe (because the blade image is dark).
The copter and building emitters are simple -- they don't do anything. Set the size, move them into
position, and that's it. The blades emitter is one step more complex because the blades need to
rotate. Set the particle type spin (make sure it's turning in the right direction) and scale it up a
little with the emitter spin property if needed (it is):
That's really it for the sprites. On to the particle effects.
The Particle Effects
I'll start with the easiest one -- the muzzle flashes. I started with the muzzle flash emitters I made
in my "Alan_01_04.iel" library. Those emitters just flashed once for a couple of frames. What I want
is a continuous sequence of flashes. I start with the "Side 02" muzzle flash emitter, but want it to
shoot the other way, so I set the particle initial angle to 180:
Next, I want the flashes to be continuous instead of stopping after a few frames, so the emitter number
graph needs to be changed (the old setting is shown in the reference graph):
The size needs to be reduced quite a bit too, but first in order to get more pronounced
flashes instead of a steady stream of white, crank the size variation all the way up:
and reduce the emitter size property to get them in scale with the copter:
A still image doesn't really show much here, just a smaller version of what's above. When
animated though, we have something that is looking more like flashes, but I can easily tell
that it's just drawing different sizes of the exact same sprite. Not so good. An easy solution
is to copy this particle type and flip the shape image vertically (so one particle type
looks like above, and the other is flipped vertically).
When you look at both together, it looks good (at least I can't tell that it's just drawing the
same shape in different sizes).
Muzzle flashes are finished.
The shell casings (bullet shells? I'm not sure of the terminology) are the hard part. What got me started
on this whole project was an emitter that a user (Jason Frank) sent me using animated bullet shells.
I played around with his emitter a little, and thought of The Matrix. I had done some "into the camera"
effects before with Illusion (my "space explosion 2" emitter in the "Alan_00_04.iel" library has "rocks"
that behave that way) so I knew it was possible. Here are the particle images from the emitter that Jason
sent me:
I modified them a little by scaling down their height (so they'd look more slender) and changing them to
greyscale (so I could more easily color them the way I wanted to in Illusion):
The image animation provides spin in one direction, and we can provide spin in another direction using
the spin variation property -- crank it up. The combination of the two spinning motions makes it look like the shells
are tumbling in every direction. Let's do the hard part of this now: making the shells appear to come
at the camera. This involves increasing the particle velocity and size over time, so we use the velocity
over life and size over life graphs. We know they need to increase, and probably more rapidly toward the
end (since they'll appear to be moving faster when they are closer to the camera) so make the graphs look
something like this:
The size and velocity properties should look like this:
And the emitter velocity property needs to be cranked up some too:
Check the "keep particles in order" option or the effect will be ruined. You'll want "oldest in front"
of course.
You may need to decrease the life of the particles if they appear to be moving too
slowly too. A "little bit" of trial and error went into getting these settings, so don't
think that I just knew exactly how to set these graphs to get the results I wanted. It took some
time. It did help that I had the previous space explosion emitter to refer to, and now that I
have this one too the next one should be even easier.
So now we have the copter, building, blades, bullet shells, and muzzle flashes. Position all
of the emitters where you want them, and use the "move up" and "move down" functions to make them
draw in the correct order (r-click on an emitter in the hierarchy window). Now we need a couple of
subtle things. First the water flowing down the building.
The water took me several tries before I got something that I was happy with. I started with a copy
of the bullet shells emitter because in theory the water should be speeding up when it gets closer
to the camera too. In theory. Illusion isn't about theory though, it's about what looks right,
and the water particles needed some tweaking in order to look right. Since this is a pretty good
example of how to get from one emitter to another (that looks completely different) I'll go through
more detail here.
First reduce the emission range and adjust the emission angle so the water (bullet shells right now) are
moving in the correct direction. Also get rid of the spin and make all of the bullet shells start in the
same orientation (check the "specify" angle option):
What you'll notice is that the "water" (still looks like shells) is moving WAY too fast. Decrease the
velocity (previous value as reference graph):
And adjust the velocity over life and size over life graphs so they look like this (easy to say
after quite a bit of experimentation):
They're still moving too fast. You can either decrease the velocity again, or since the
velocity over life and size over life graphs are increasing over the life of the particle, you can
also try increasing the life of the particles. The advantage of increasing life instead of
decreasing the other two is just that -- you're changing only one thing instead of two.
Plus it's a little variety -- a different way of looking at it. Anyway, set them like this
(reference graphs are previous values again):
Here's what we have now:
What's the green from? Set the emitter tint strength property to 0. Now we need to use a particle
shape image that looks more like "waves". This image is perfect (from the "Alan_00_03.iel" library),
so use it and see what we get:
(oops, the tint strength wasn't 0 yet when I grabbed that image). Now set the particle type color
gradient to this, and the flowing water is finished:
To create the other 2 streams of water, just copy this emitter and adjust the emission angle property.
I also changed the emitter size property a little for some variety.
COOL TIP
So we've got the copter, blades, building, water, shells, and flashes. What is left? Something simple,
but powerful: the "increase brightness" emitter.
This is a very simple sprite emitter that can do several things: add a "tint" to your entire movie, make it brighter
(and increase contrast a little I think), do cool "burn in" fades to white (or black I guess), or even
make the entire image flash as if a strobe light were going off. Let's see the basics first. Copy the
"copter" emitter, then make a solid white square image in your paint app (64x64 is fine). Change the copter shape image
to use this white square (import as greyscale, not full-color). Now do three things:
1) Crank the size way up so the sprite covers the entire stage.
2) Make the particle type "intense".
3) Set the emitter visibility to 0.
Now drag the visibility value slowly up, and see what the effect is on the stage. Here are some grabs as
I increased the visibility:
This copter project uses about 15% visibility, just for a little brightness boost.
Here are some other ideas for things you can do with this "increase brightness" emitter:
- By making the visibility graph increase over time, you can get a "white out" effect.
- Make the color gradient of the particle type go from white to black to white and increase
the "repeat" setting to get a "strobing" effect.
- Make the color (or tint color) non-white to add a tint to your scene.
- Make the color (or tint color) black and uncheck the "intense" option and you can
now darken your scene (or fade to black).
Any other ideas for this?
Quick Summary
Three points I wanted to make with this tutorial:
1) Use Illusion to do sprite animation.
2) Make particles come "into the camera" (who needs 3D?)
3) The "increase brightness" emitter is simple and coo-oo-ool.
Did I cram too much into this tutorial? Have fun!
Click here for the Illusion project file
(160 KB)
(This project file CAN be loaded by the demo version of Illusion 2.)
Learn more about Illusion at
The Illusion Homepage
Alan Lorence 14 May 01