- Joined
- Sep 27, 2006
- Messages
- 3,747
SFX in MAGOS
Here I will show you the basice knowledge of Magos and how to make special effects with it. Now, I expect you to know some basic modding knowledge, I won't talk to you about how blp's work, what alpha layers are and the like, so if you encounter something you don't know about, feel free to search for a definition/tutorial on it.
GETTING STARTED:
Get Magos' Model Editor.
The first time you open it, you should see a big gray screen, with a tab bar.
In this tutorial, we will make a completly new FX, with only particles, and no geosets. Then we'll move on to geosets and other things Magos can do.
Now, if there's one thing to keep in mind is:
Messing around with Magos, and generaly testing new things is perfect way to learn how it works. In fact, I suggest you always try out different combinations, so you get to know exactly what it can do.
SFX EXAMPLE 1: Random fiery explosion
Step 1:
Click on "file", then on "New"
First thing to understand is the frame system. Warcraft 3 uses a speed of 960 frames per second, don't know why.
Now go to Windows/Sequence Manager and right click in the blank screen, and then click "Create New". A new box will open, where you will see different things. Name the new sequence Birth.
NOTE: Remember, birth anims are single anims, which happen once and stop, like the Steam tank effect.
The first part (upper) is the extent section. Don't worry about it for now.
The second part (middle) has two empty fields: Start and End.
A sequence is basically animations. They start at a certain frame number and end at another. So for our sequence, we'll start it at "0", and end it at "2000" (which means roughly 2 seconds of animation). Then we're going to check "non-looping", to make sure our FX doesn't repeat uselessly. This tag shouldn't be checked for repeating anims like stand anims.
We're done with the sequence manager, now you can close it.
=== === === === === === === === === === === === === === ===
Step 2:
Next part is textures.
Open up the texture manager and the MPQ browser. We'll start with the MPQ browser:
Open the MPQ you want (go to file and click on the MPQ you want to open) and open up the "textures" folder. This is the folder with the most textures. Right-click one of the textures and select "use as texture". This makes sure the texture you're using is ingame, and you won't need to import anything.
However, if you need a custom texture, import it in the texture manager using "right-click/import texture".
Some very commonly used textures include (either in War3.mpq or War3x.mpq):
-cloud8x8.blp (and all other variations)
-Genericglow64.blp
-Blueglow.blp, redstar.blp and similar
-Shockwave10.blp and similar
Keep in mind both MPQ have variants of these textures, and some textures are exclusive to an MPQ.
Ok, so select Cloud8x8fire.blp, Cloud8x8.blp, shockwave10.blp and genericglow64.blp for our example.
=== === === === === === === === === === === === === === ===
Step 3:
Here starts the real editing....
Open up the animation controler. It's easy enough to work with, I doubt I need to explain it. Then open up the node manager, again, it should be a blank page. Right-click on that blank and select "Create Particle Emmiter 2". There are other types of nodes you can create, but we'll stick to this one right now.
So you click and BAM! You have loads of different settings. Stop hyperventilating and calm down, everything will make sense soon.
First thing we'll do is set the texture parameters (left part with the scroll down thingy and filter selector):
Set the scrolly thingy to Cloud8x8fire.blp and the filter to additive.
Here's some useful info for you, so you can better understand how MDX's work. (Thanks to RDZ for the info, but I won't list it all here, its a bit complicated...)
Filters are ways of removing those annoying parts from a texture, like the black background, or the alpha layer. These filters also apply to matrial layers, something that doesn't really habve to to with this. Here's a list of the available filters and how (I think) they work:
-Transparent: This alpha's out the alpha layer. Actually, RDZ just explained what it does... Just remember it doesn't do any fading from opaque to transparent.
-Blend: Works like Transparent, but much more useful. This DOES have some good fading. Anyways, its good for smoke, and dust effects.
-Additive: This removes the black from textures, more or less (see RDZ's post for a full explanation). When used on a regular skin, it will appear ghosty, and does somewhat the same thing to the particles. Good for fire, water, lights and a lot of other things.
-Add Alpha: Works like Additive, however not that much. I haven't experienced much with it, so I'd say you might as well stick to additive.
-Modulate: Does the opposite of Additive, as in, removes the white, and makes the texture darker. This is good for shadowy glows, or other black textures. There aren't many textures that work with this however. Oh, and remember that modulate doesn't allow for a particle to fade out (in the segments part)...
=== === === === === === === === === === === === === === === === === ===
Then we're going to look at the upper parts.
First things first:
-Visibility: controls whether the emmiter emits or not. Right now, click "animate" and you'll see something like:
Code:
0:1
So the question is, how do we stop it from emmiting? Lets say we want a short burst of particles:
Code:
0:1
100:1
You can "animate" loads of other things this way, and not only with 1 and 0.
-Emmission rate: controls the speed at which particles are emmitted. Again this can be animated as well (doesn't have to) and if you want it to grow from a certain value to another value, simply set the setting at the bottom of the animate box to "linear" (bexier and hermite are other types, slightly more complicated).
For now we'll set it to 700, since we want it to release a lot of particles at once (it won't release 700 at once though, since the emmiting time is so short). If you have a constant emmitter, I suggest to go lower, since high values means that many particles at the same time, and some computers can't take that.
-Speed: Controls the speed at which particles travel through 3d space. Simple, no? Set this to 150.
-Variation: Controls the variation of the speed setting. I don't know exactly what the values stand for, but I think they're percentages (1 means it can vary from twice its normal speed, etc...) Experiment with it to get a hang of how it works. Set this to 0.
-Latitude: This is a bit... complicated. This controls whether particles travel directly upwards, in a cone or in a sphere. Directly upwards is the "0" value, than from there to a certain value its all about how wide the emmiting cone is, and at a certain value it becomes a whole sphere. Again, experimenting with it helps. Set this 125 (for a half-sphere).
-Width and Length: Controls the width and length of the emmitter. From there you can make emmitters go from large squares or long bands. Set this to 0 each.
!NOTE! Magos has these two fields mixed! Width ingame is actually length, and length ingame is actually width!
-Gravity: Gravity is the rate at which particles are pulled down. it works just like the real world (you do know what that is, right?). Since fire has a tendency to go up, lets se this to -35
=== === === === === === === === === === === === === === === === === ===
Now lets check out the "Flags" part (left, middle to bottom):
-Unshaded: If it is checked, particles will not be affected by ingame lighting.
-Unfogged: Tells whether fog affects the particles or no. Check this.
-Alpha Key: No idea. Don't check it.
-Line emmitter: Tells whether the particles move in a 3 directional way or 2 directional way.
-Sort Primitive Far Z's: Don't really know, supposedly it fixes the "which particle is in front" problem... Check it (or don't, doesn't matter much)
-Model space: Lets say we put this on a unit, well when its moving, this tells if the particles move with it, or stay behind.
-XY Quad: Allows for Flat particles. NOTE: Only works ingame if Line Emitter is checked as well.
-Squirt: I think this makes the particles face where its going.
-Head and Tail: Particles have two parts, the head and the tail. The head is just the texture, and the tail is a trail left behind the particles. The length is controled by the Tail length setting, and unfortunatly, tails aren't shown in the Model Editor, so the only way you can see the texture is with Head checked. Check Head only for our example. Actually, I hate to make the reference, but a particle is kinda like a spermatozoon.
=== === === === === === === === === === === === === === === === === ===
Now we'll take care of the bottom part...
-Rows and columns: If you had bothered opening cloud8x8fire.blp, you'd see that its composed of 64 little fire images disposed in a grid. So these two field are exactly for that: we tell the editor that the texture is divided in a grid of 8 rows and 8 columns. You'll soon understand how we can use that to our advantage.
-Life Span: Tells the editor how long we want the particle to live. Set this to 0.7.
-Tail length: This is the length of the tail.
-Priority Plane: Let say I have two emmiters, one of smoke and the other fire. I want the fire to always appear on top of the smoke, so I'll set Priority plane to higher than the other ammiters priority plane value. Set this to 1.
-Replaceable ID: Used for team colored particles. Set this to 0.
-Time: Notice the "segments" in the middle of the window. Every particle goes from segment 1 to segment 2 to segment 3 gradually. Time determines what percentage of the life span value is spent going from 1 to 2. So if set to 0.5, this means S1 will go to S2 at the same speed S2 will go to S3. If its 0.1, then S1 will go really rapidly to S2, but very slowly to S3 and etcetera. Set this to 0.2 since we want our fire to rapidly pop into existence.
=== === === === === === === === === === === === === === === === === ===
Lets look at the part right over the one we just took care of...
You'll notice 4 little boxes with three fields each. Remember that the 8X8 texture is like a grid? Well here we can choose whether we want to cycle through the mutiple images, or choose one in particular. I THINK the life span section controls the span of time between segment 1 and 2, while decay controls the span between S2 and S3.
So we want our fire to always be animated, but we don't have a tail so we don't need to modify it, set your fields to this:
=== === === === === === === === === === === === === === === === === ===
Alright next step is to edit the segments... Set the colors to anything you like, it really doesn't matter what you want.
NOTE: remember alpha is the transparency of the particle, meaning 0 means invisible particle, and 255 means completly visible.
But lets say we want our fire to suddenly grow into existence, but then fade away slowly.
IMPORTANT!
Two things can make a computer lag with particles, too many particles and giant particles. So always make sure your particles aren't too big, and that you don't have that many. Usually, 1000 particles is huge, even if they are small. Its important to have a low "lag factor" so your effect can be used more than once at a time without killing someone's computer.
You should get something like this:
=== === === === === === === === === === === === === === === === === ===
WE'RE DONE!
Exit the node editor.
Ok, before viewing your model, do some things:
-Go to the tab "EDIT" on the toolbar, click on properties and go check the "debug messages" flag. This will show stats on the corner of your screen, where you can see the amount of particles, the zoom distance and etc... You can also swith on the "use ground texture" to see where the ground is on your model.
-Zoom out until you get to a distance of about 1600. If you are full screen, 1600 is the average ingame camera distance. This is to make sure your model is of a decent size.
-Go to the animation controller, and pick out your birth anim. Play it, enjoy your FX.
What? Don't find it too amazing? Don't worry, I plan to make new tutorials, explaining other Model editor functions, so you can know exactly how it works and become a l33t modeller.
Last edited by a moderator: