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:

Illusion version (313 KB MOV)       screen grab from The Matix

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:

0% 15% 30% 50% 70%

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