Particle Editor

Download link for the newest version of the Alamo Particle Editor

Basic video tutorial by Pegasus Chronicles

Basic tutorial (external link to the original article)

= The Particle Editor Part 1:

An overview of the editor =

*If you have not figured it out from the name, the Particle Editor is a tool that can be used to create or edit particle .alo files.*

## The UI, layout, and navigation

The particle editor is set up much like the Alo viewer. You have a viewport and a sidebar with tools and options, but unlike the ALO viewer you are given even more options with the lower bar.

### Layout

1. This is where emitters are kept. These are parts of your particle, and when combined and played back together create your final particle. You may also save and open.. ect from this location
2. This is the left sidebar and its also where you will be doing most of your editing. This sidebar has 3 tabs: Basic, Appearance and Physics.
3. This is your viewport for viewing your particles. Any changes made in the particle editor will update in real time.
4. This is what I like to call the Trax *(Don't ask why =D)*, or the track editor. This is used to change color, scale, rotation speed, and index.

### Navigation

Navigating through the viewport is similar to navigating through the ALO viewer.

Click and drag the left mouse button to pan the camera left and right.

Click and drag the right mouse button to turn the camera.

Scrolling with the middle mouse button will zoom in and out. For people without a middle mouse button you can zoom in and out by holding the controll key and dragging with the left mouse button.

You can place emitters in the scene by pressing shift and clicking in the viewport. You may also change the altitude of the emitter by pressing shift and dragging with the left mouse button.

## Area 1: Emitters

Before you can make any particles at all in your blank scene you must place emitters and name them. To add an emitter you may simply right click and click "new root emitter" To rename an emitter you can simply right click and rename. Simple eh?

*Ah yes, organization is key*To delete emitters you may right click and click on delete, or you may use the delete button below the emitter window. Also note that you may create emitters using the button to the left of the delete button. Name them something useful, this will make working with large particles easier.

## Area 2: The side panel

We have arrived at the part of the editor where you will spend most of your time. There are three main sections to this side panel: Basic, Appearance, and Physics. Lets start with the basics =D

### The "Basic" tab

#### Emitter timing

As I have said before this controls when this particular emitter will go off.

Initial spawn delay sets the time before this emitter starts from the second the entire particle system is spawned. Explosion first, smoke later? This is how you do it. Please note that this timing controls this emitter ONLY, as it should be.

Skip time tells the particle how much time to "skip ahead" at the start. This appears to be rather useless as you could simply "make" your particle not start without the need of 5 seconds of "preheat", but it will be usefull in the future.

Freeze time is the time before the emitter freezes and locks itself in its current state, still rendering the output from when it was frozen. Setting this to 5 seconds will cause a particle to freeze after 5 seconds.

*An example of skip time and freeze time in use: The two particles on the right are frozen after 5 second of being "alive" because the only thing it does is get smaller, it gets frozen half way through the process \*perspective makes them look different sizes but they are indeed the same\*. The particle on the left has not been frozen, and will continue bursting and getting smaller as the particles die. Great way to make clouds or flak?*
#### Generation

This controls how many particles come out, and at what rates.

Bursts: As its name implies, this makes particles come out in a predetermined amount of bursts, with certain particles per burst, with a delay per burst. Setting the number of bursts to zero will make the bursts infinite, as long as the emiter remains in the scene.

Continuous: Particles come out at a steady rate forever as long as the emitter exists. Simple and default.

Weather: Weather generation mode is used for creating particles that are used for... you guessed it.. weather. These particles will typically stay in front of the camera and this setting overrides many particle spawn options that will be discussed later.

Maximum and Minimum Lifetime: The maximum lifetime is the amount of time \*in seconds\* that a particle will remain in the system. The minimum lifetime is a percentage. This is the minimum percentage of the minimum time that a particle must live before dying. For example if you have a 2 second lifetime and a 50% minimum lifetime, ALL particles must live to at least 1 second, however all the particles after that may die anytime but not life anylonger than 2 seconds. It is completely random.

#### Connection

Link particles to instance

Emit from mesh: If this box is checked, any mesh that is linked to this alamo proxy will emit this particle from all of the verticies that compose the model.

### The "appearance" tab

This tab allows you to define the shape and color of each individual particle.

#### Texture

This section is where you define what texture your particle will use.

Color texture: You can specify the color texure here.

Bump texture: You can specify a bump texture here. Bump textures for particles are used mostly for calculating how particles are shaded.

Texture elements: Ever seen the P\_particle\_master.dds file? Notice how they put a whole bunch of particles on one DDS file? How could you possible map one of those small parts of the image to a particle? This is how. The texture elements just tells the program how many images are in the file you pointed to in the "color texture".

If you want to make your own master particle.dds file follow this scheme. However, this only works with perfect squares. 8x8=64 7x7=49.. and so on. All other numbers in this texture elements slot will be rounded down to the nearest number. This has nothing to do with image size, but it will be hard to put 64 particles on a 256x256 image file, and it would be inefficient to put 4 particles on a 1024x1024 image.

*Notice how when you reduce the texture elements to 4 \*so the Particle editor thinks there are only 4 textures in this image\* the area that the Particle editor takes from the image as the skin increases. Play around with it. It will start to make sense once you play with it.*Minimum scale: If not set to 100% this will randomize between the minimum and 100% size of the texture image. Each individual particle will have its scale randomized upon generation.

*Notice the differences in size between the particles. I believe only the scale of the texture is manipulated. \*note\* Because the number of particles per second is two, you should see two particles in each "cloud there ", however if you look closely each one is a different size. The bright spot in the middle is where the two particles overlap thanks to their rendering properties which will be covered shortly.*
#### Random color addition:

If the colors in the graph editor arent fully colorizing the particle \*we will cover this later on\* you may use this to randomly add color to a particle. You may controll this by color, or even have varying shades of grayscale with the grayscale box checked.

#### Tail

This creates a tail in the opposite direction of movement, that has a fixed length.

*Notice the stretching,I tend to avoid this unless I want to save some processing time by not using many particles to do the same effect. A texture without as many details \*a gradient of a circle for example\* would probably look just fine even stretched because of its lack of details. Its fixed nature also drags me away from this.*
#### Rotation:

Random Roatation Direction: Will randomize the rotation direction with each new particle

Fixeed Random: Randomizes the rotation of the particle upon spawn, but then stops it from rotating.

#### Rendering:

Always face camera: This tells the particle to face the camera perfectly at all times. Never at an angle.

Heat particle: This makes this particle a heat particle.

No depth test: This stops the game engine from checking weather there is anything above it that may block this particle from view. This means that this particle will render if it exsits, irregardless if there is something blocking its view.

#### Blend mode

Blend mode defines how the particle will blend with other objects. Controls transparency and rendering of this particle in general.

#### Blending modes

None:

Just the plain texture rendered. No rendering effects at all.

Additive:

As its name implies, additive is a type of blending that will "add" to the colors below it. Black = no addition. Basically black = transparency.

Transparent:

Anything black will be transparent. Everything else will be rendered normally.

Depth Modes:

Depth modes are "clones" of the already mentioned blending modes, except for the fact that these attempt to make particles appear to have volume. It will make them more "3d" ish if you will. Requires a depth map to work \*placed as the bump texture\*. Notice how the green and white particles' intersection points with the ground are different. The green particle intersects with a line. The white particle with deptph additive intersects at a curve to give the illusion of volume.

Bumpmap:

Apart from showing some bump effects to particles, bump also causes particles to light up differently according to how you view at them with the camera, ideally reflecting what one would see reflected off of the particle.

Decal bumpmap:

### The "physics" tab

#### Initial Position

Type: This controls where particles are spawned.

Types

Exact: This means that all particles will be spawned from the same location... Every time. An exact point.

Box: Particles will spawn randomly within a box's boundries. The box's dimentions are defined with XYZ distances.

Cube: Similar to box, but this has only one parameter for side lenghts. \*its a box c'mon guys! =D\* Again generation within this box is random

Sphere
This uses a spherical shape as boundries. Constraining to surface means that particles will ownly spawn on the surface of the sphere and not inside of the circle itself

Cylinder
Same as sphere, but with a cylinder

*With "Constrain to surface" on**WIth "Constrain to surface" off*
#### Initial speed

Type: These control the initial speed of particles after they are spawned.

Types: All of these work nearly the same way that spawn locations work, except they speed outwards in these general directions

Sphere

Cylinder

*Constrain to surface off**Constrain to surface on*Inward speed:

Parent speed inherit: This specifies how much of the parents speed to inherit. If the proxy is moving fast \*due to the fact that it is some fast moving missile or something\* having this value at 100% would mean that the entire scene of the emitter would be moving in parralell with the proxys motion. To visualize this notice how the particles move with the A-wings attract fighters ability.

Affected by wind: pretty much self explanitory.

#### Acceleration

Ah yes acceleration. First of all before you ask \*I know at least a few will ask\* The difference between speed and acceleration is speed is a constant, \*at least here\* and acceleration is change in speed per second. Constantly getting faster and faster. Adjust with XYZ velocities

*"wee!"*Gravity Acceleration: Acceleration caused by gravity. If you want this to be affected by gravity in game, use this as there may be times when gravity might not be -z.

Inward Acceleration: Acceleration towards the center of the particle system when using the box,cube,cylinder, or sphere.

Object Space Acceleration: All acceleration in XYZ will use the local axes of the proxy, and not the scenes XYZ directions.

#### Ground interaction

This tells the particle what to do when it hits the ground.
Behaviors:

None: nothing happens.. it keeps going
Dissapear: Particle dissapears upon collision
Bounce: Particle bounces upon collision. You may set bounciness with the slider below the Behaviors drop down menu.
Stick: particle sticks to ground upon collision

*Wii!*
## Area 4: The Graph editor, track editor, or simply "trax"

The graph editor is where time sensitive options are held. If you have ever used any animation programs this will be fairly familiar to you.

### Using the track editor

Using the track editor is quite simple. The track editor lets you change properties about the particles that may change as its lifetime goes on. Want it to start out large and then go small?, or how about a gradual fade to invisibility? You can do that here by moving and adding keys.

#### Graph editor tools and options

1. Lock to: This locks this particular graph to another. Essentially makes this an instance of another graph, if you change the other graph this graph will follow. Graphs locked to another graph can not be directly edited until they are unlocked.
2. Selection tool: Select and move keys with this tool. You may also click and drag with this tool to select multiple keys.
3. Add Keys tool: This tool will add keys to the graph.
4. Linear Interpolation: This setting makes all the "connections" between all the points a line, or linear if you will. This causes constant gradients of change.
5. Smooth Interpolation: This makes all the "connections" between points smooth.
6. Step Interpolation: Like its name implies this causes the "connections" between points to become harsh and stepped. For quick and precise changes in settings.*The different interpolation settings.*
7. Delete keys: If you have one or more keys selected, you can use this key to delete them. Alternatively you may use the "delete" key on your keyboard to delete keys. \*wow that was a great sentence\*
8. Time:If you have one or more keys selected you can use this button to change the keys' X time component. 0% would be at the particles' lifetime, 100% would be at death. Selecting many keys displays the average, and allows you to move keys together.
9. Value: The value of the key or the y component. For example, if a certain key was 1.0 red at a certain key the particle would have 100% red at that specific time. If the key has a value of .5 for red it will only show up as 50% of the normal value for red. Not all values are from 0-1. Some values may be scaled up indefinately as far as I know. Selecting many keys displays the average, and allows you to move them up and down toegether.

### The graphs

#### Red, Green, Blue, Alpha

These are graphs used to change the different amounts of color a particle has. This works best with Grayscale images, although full color can also be used. The alpha graph controls the transparency. -note: The Alpha setting may do nothing in certain blend modes (such as Additive)

#### Scale

It scales the size of the particles. It does its job well.

#### Index

Remember texture elements from earlier in this tutorial? That number corresponded to the number of images in the entire DDS file. Thats all fine and well, but if you have no way of selecting between those what good does it do? Thats what the index does. The index allows you to "animate" or simply call a certain teture slot into play. Setting the index to 2 will show up the second image in the file \*or at least those coordinates according to the texture elements number\*.

*Notice how the index steps up each time and fairly quickly to give the effect of frames in a movie. Each time it steps up and moves to the next part of the image is like a frame. All these frames combined make up a fluid, or not, animation.*
#### Rotation speed

Controls rotation speed of particles. Pretty straight forward.

**Advanced tutorial and tips**

This is an extended tutorial and some advanced tips for those brave souls, who want to make their own particles, and do not want to figure out the following things on their own. Feel free to post your own experiences, tips and questions below.

Blend modes:

- additive mode is for grayscale or RGB picture files without alpha channels; what you see as black in the picture file, will be transparent ingame; further transparency is controlled by RGB channels under the viewport.

- transparent mode is for RGBA (rgb+alpha channel) picture files; transparency is controlled by the alpha channel under the viewport, if you want to see darker colors (or black) set RGB channels to lower numbers.

Color tabs:

- particle editor uses a R/B/G color scale of 0-100. "Real life" RGB color code 0 is 0, 255 is 100 in the editor.

- there is an upper limit to particle size, emitter scale size should not exceed 5000 units on the scale tab or else it will not be displayed ingame.

Navigation in the preview window:

- X axis+ points horizontally right, Y axis+ points horizontally up (away from the viewport on ground level), Z axis+ points vertically upwards.

The three axes in the editor: x and y are horizontal, z is vertical compared to the plane displayed (ingame ground). If you check "link particles to instance" in basic, and not check "always face camera" in appearance tab for e.g. shield hit emitters, the models hit surface will become the ground plane.

A particle is consisted of emitters. There are three types of emitters:

-burst (summa sign) - a limited number of appearances

-continous (infinity sign) - infinite number of appearances until the emitter exists

-weather (cloud sign) - infinite number of appearances for the camera

I mainly use bursts for explosions, continuus for smoke trails and engine glows, and weather... well guess it.

The particle editor is capable of making child emitters (meaning an emitter is born of another emitter), but there are some bugs you should consider before making child emitters.

1. this particle editor can manage only one child emitter per particle file, setting two or more child emitters will crash the particle editor, and render your particle inoperable

2. the single child emitter is often mixed up when saving after cut/paste actions, be sure to double check (close particle editor and reopen it) the emitter sequence after saving / before testing ingame

3. If you cut/delete a parent/child emitter, make sure to test the particle before saving (press shift and play it), because this action often leads to crash. If the particle is saved while it is destined to crash, you'll lose the particle forever.

The particle editor needs texture (dds or tga) files in the vanilla games (needed for the particle editor and vanilla game changes) or your mods (needed for your mod) data/art/textures directory. You can also add textures in the same spot you browsed them from, or in the same directory as the .alo file to display, but these won't show textures ingame. If textures are not displayed in the particle editor when viewing a particle file from the particle editor or ingame, check the texture files name and placement again.

Ingame total -burst type- particle lifetime depends on the topmost in the emitter list burst particles lifetime, hence it should have the longest liftetime in the particle file. If the particle doesn't show up correctly ingame, try rearranging the emitter sequence.

Particle lifetime in realtime ingame is set in the particles.xml in frames. I use 30 frames per seconds, so if you're particle should last 1 second, you give <Particle\_Lifetime\_Frames>30</Particle\_Lifetime\_Frames> to your particle in the xml.

Delayed (initial spawn delay in basic tab) and burst emitters of more than one bursts are only previewed properly if shift is held down for the total particle lifetime duration.

The topmost emitter determines the maximum total time of the particle.

Imagine particles as a bunch of paper cutouts put on one another, the emitters being the layers. The bottommost (last) emitter in the list is visible as closest to the viewer, while the topmost emitter in the list is the last one in the background (the bottom of the paper cutout stack).

If you use fixed random rotation option, the first number must not be 0, always use 1 instead. Totally random rotation is 1 +/- 180 degrees.

If you use fixed random rotation option, 0 degrees means pointing vertically upwards (positive z axis, away from ground) if always face camera option is checked.

Setting up a particle for your mod:

Every new particle .alo file you want to see shall be put into \*your mod\*/data/art/models directory.
Every new texture file (.dds or .tga) your particle uses shall be put into \*your mod\*/data/art/textures directory.

You can add particles into the game two ways:

1. use the name of a vanilla particle, your creation will replace the vanilla effect

2. set up a new particle in your mods particles.xml file (\*your mod\*/data/xml)

Testing your particle:

The particle editor uses lots of system memory. Every time you press shift to preview the particle, it takes memory equivalent to all the texture files displayed, and you don't get it back until the particle editor is closed). If system memory limit is reached, the particle editor will crash, and you'll lose your unsaved particle. If you have problems with previewing your particle, use the map editor for such purposes instead (and to display the correct emitter layer sequence). Put the files of the map editor into your mods main directory, and start it from there so it'll see your particles.