This thread will be used for discussions pertaining to the particle editor. I’ve posted some basic guidelines here, but I haven’t really tried most of the finer features within the editor so it’s not a complete guide. Stuff will be updated in as more information is made available.
The particle editor needs to read the texture files in the game. In order to do so, the texture files must be extracted to this destination:
C:\Program Files\Sega\Universe At War Earth Assault\Art\TEXTURES\DDS
Next, you will need to have (in that same destination) .tga versions of the particle textures. Look through the list of DDS texture files, the textures corresponding to particles will have the prefix “P_” in their name (eg. P_PARTICLE_MASTER). Use a converter program to open all of these and save/convert into a .tga format. This will allow the textures to show up when you use the UV picker to select textures for your particle.
After that, create a new folder (you can name it whatever you want) in the Program Files\Sega\Universe At War Earth Assault destination. Move these files into that folder:
With that you’re ready to use the particle editor. You should see 4 windows:
Petroglyph Particle Editor: The main window, where you see the particles
Simulation: Contains the “playback” features to view your particle in motion. There’s also a feature in there to specify a target for you to observe how an attractor particle behaves when attracted to a target.
Particle Editor Plug In Settings: This is where you edit the various characteristics of your particles by modifying plugins that control size, colour, texture etc.
PlugInGraphWindow: This is where you edit keyframe graphs, which are graphs representing certain qualities with respect to time. The horizontal axis represents time as a fraction (e.g the middle, which says 0.5 is the halfway mark in the timespan of a particle, it does NOT mean 0.5 seconds)
EMITTERS AND THEIR PARTICLES
In the editor, a particle model is an Emitter containing one or more Particles within. The particles are listed in a particular order with the ones at the bottom of the list appearing in the foreground while the ones at the top of the list will be in the background.
In this image you can see 2 particles, a small red one and a big blue one. The blue one is behind the red one because in the list, the blue one appears above the red one. This is the basic idea behind how the different layers are stacked. You can move a particle up or down in a list by right-clicking the intended particle and selecting Move Particle Up/Down. The order is essential for achieving the desired look. For example in an explosion you would want the smoke to be in the background so in the list, the smoke particle must be around the top.
The 3 axes are represented by coloured lines, red = x, green = y, blue = z. The lines point in the positive directions so any directional numbers with negative values will imply a movement in direction opposite to these lines.
Creator Plug In is responsible for basic things like the spawning frequency of a particle, as well how the particles move, etc. There are several types of creator plugins but the most common one is the Shape type. Nearly all known particles use this type so I’ll focus on it.
The shape creator plugin has some LOD (level of detail) sliders, but I’ve never really gone and experimented with them.
The particle-spawning adjuster sliders are labelled with pretty straightforward text, although you’ll notice something called Enable Bursting below the Spawn Interval slider. If Enable Bursting is set to “On”, the particles that spawn every interval will emerge all at once. If set to “off” (the default setting), they will come out one-after-another but very rapidly. The bursting toggle is good for particles like explosions, while for fire, smoke, etc, it is best left toggled “Off”.
Below the spawning adjusters are position and velocity adjusters. “Position” determines the possible places where particles can spawn, while “velocity” determines the speed and direction of movement. A brief description of each of the 7 types:
Point A specific user-defined point in the 3D space. If this is used to define position, the particle will spawn at the specified xyz coordinates. Think of it as a Cartesian system, with the Emitter as the origin.
If this is used to define velocity, the particle will move towards the specified xyz coordinates with reference to where the particle appeared (not with reference to the emitter). Think of it as a Cartesian system, this time with the Particle’s spawn point as the origin.
A particle with point position x:0, y:0, z:200 and a point velocity x:0, y:100, z:100, the particle’s colour is set to change from blue to red so you can see how it moves
Note that you can input negative values for “opposite” directions.
Direction The “direction-type” modifier is similar to the idea for points, but instead of particles spawning from or moving towards a certain point, in this case it’s a series of possible points that lie on an “imaginary line”. The Min/Max Magnitude values will determine exactly where this “imaginary line”.
Sphere In this modifier, particles will spawn(for position) or move towards (for velocity) points on the surface of an imaginary sphere. The size of the sphere is a random variable, ranging from different radii which can be adjusted. Put simply they can spawn anywhere within the 3D space as long as the distance between the spawn point and the Emitter is not smaller than the Min. Radius value, and no farther than the Max. Radius value
Range This one is similar to the sphere except instead of an imaginary sphere, it’s an imaginary cuboid. Particles can spawn anywhere within this imaginary cuboid. One advantage of this compared to the Sphere is that the “spawning/moving region” need not be centred around the Emitter.
In this example, the X-range Is from 100 to 100, while the Y and Z-ranges are both from -100 to 100. This means that the particles can be spawned anywhere on an imaginary 200 by 200 square located exactly 100 points away (in the positive x-direction) from the emitter
Spherical Range This one is similar to the sphere except instead of an imaginary sphere, it’s an imaginary hemisphere around the Emitter. The Min/Max angle adjusters will determine the range of possible angles at which the particle can spawn. A value of 0.00 means 90-degrees (I,e, vertical) and at the other extreme end, 1.00 represents horizontal.
Therefore if you set both the min and max angles to zero, the particles can only spawn directly above the Emitter, and if both values are set to 1, the particles can only be spawned on the horizontal X-Y plane (this can be used for things like smoke spreading on the ground). To get the full hemispherical spawning region, Min Angle must be 0, Max Angle must be 1
Both the red and green particles have a spherical range with min-radius 0, max-radius 100 (which is why they have the same radius). However the red one displays a perfect hemispherical spawn-range, while the green one has a purely horizontal spawn range by having both the min and max angles set to 1. On the right you can see what happens when the green particle has min-radius set to 50, this causes an empty region where no green particles can spawn.
Cylinder Similar to Sphere except in this case it’s an imaginary cylinder.
Torus Similar to Sphere except in this case it’s an imaginary torus, sort of like a “donut” shape.
Red particles spawned within random points in a torus, as well as green particles spawned withing random points in a cylinder.
At the bottom of the Shape Creator are some velocity adjusters which I have yet to try. However I’m quite sure the Velocity in Local Space toggle determines if the direction of the velocity uses the XYZ axes of the Local Space (i.e. the Emitter) or the World Space (the in-game environment). The 2 sets of axes only coincide if the Emitter is upright. Emitters can be tilted (eg. If attached to a moving object) but the axes for the world space is tilted.
Adjusts the size. There are several different types (linear size, keyed size, etc) but the Keyed Size modifier is easily the most versatile. Basically what it does is create a line graph on the keyframe system. You can add points to the graph, and each point will represent the particle size at that exact point in time. This allows you to control the size of the particle at very specific points in the timeframe.
The size variation adjuster allows you to have fluctuations in the size of the particles spawned. It helps give particles a more irregular appearance, suitable for explosion blasts, etc.
There are several of these, the most common ones are acceleration-based plugins which can be used to make a particle change its direction and velocity. Similar to the size plugins, there are linear and keyed acceleration, which both have toggles on whether or not to have the acceleration vector be with respect to the local space (the emitter’s xyz axes) or world space (the environment’s xyz axes). Once again, keyed acceleration is much more versatile since you can edit the acceleration with respect to time via a keyframe graph.
The attractor physics plugin is noteworthy for being responsible for attractor particles. For example if you take a look at the peacebringer’s effects XML, you’ll notice its tractor beam has one particle that starts at the target and has XML tags to specify the particles to be attracted to the source (the tractor beam hardpoint turret). However that alone isn’t enough. The particle itself requires specifically to have an attractor plugin, which happens to be located here.
Used to rotate the textures. This is very good for smoke particles in order to stop a cloud of smoke particles from visibly having smoke puffs that all clearly look identical. There are adjusters in the various plugins to control the extent of rotation as well as how random the rotations are. As with previous plugins, there are linear and keyed versions.
One of the main plugins your particles will need is a colour plugin. For this case I’d definitely recommend using the keyed one over the linear one, since the keyed plugin allows you to have your particle change colour more than once, while the linear plugin only allows you to have one colour that changes into a second colour, that’s it.
One vital thing to note about editing colours: you will see a “transparency adjuster” but that one only applies for certain shaders, most notably ParticleBillboardHeat.fx and ParticleBillboardAlpha.fx. You can see which shader your particle is using by checking out the Renderer plugin (more on that below). Now the shader that isn’t affected by the “transparency adjuster” is ParticleBillboardAdditive.fx. It’s a fairly common shader used for particles that require a bright glowy look. For particles using such shaders, the transparency concept is quite simple, the darker the colour used, the more transparent it becomes.
Therefore when editing the colours of particles that use the ParticleBillboardAdditive.fx shader, don’t bother tweaking the transparency adjuster, it won’t have any effect.
Another interesting colour plugin is the colour variance plugin which allows you to have colour fluctuations in your particle.
In this pic, the particles are actually the same pure red as the ones seen above. However, the addition of a colour variance plugin with max red and green variance both set to 0.5, and max blue variance 1.0 causes a variety of hues to appear. The stronger the variance levels, the more multicoloured the particles will look. There are even sliders to adjust the alpha (transparency) variance although I suspect it also won’t affect any particles using the ParticleBillboardAdditive.fx shader.
Another important main plugin, this one determines which portion of the particle’s texture to use. The texture (just like the shader) is specified in the Renderer plugin. The UV Plugin will determine which part(s) of the texture shows up. Use the Constant UV plugin if all you need is one texture, or if multiples are needed, the Keyed or Slotted Random UV plugins can do the job.
You’ll notice in all UV Plugins there is a button called pick. This will open a window that looks like this:
Recall earlier the instructions to convert some of the textures in the …ART/TEXTURE/DDS folder into tga. This here is the reason why. The editor reads tga images, so if there isn’t a file there for it to read, you won’t get all those pictures up there, just pure black with grid lines.
As you can tell from the pic, the grid can be adjusted to give a nice selection (the yellow border). You can see in the pic that the yellow border is around the hierarchy logo portion of the texture. It’s the same texture used as part of the Emitter for Kamal’s abduct. You can also manually adjust the size of the selection box through changing the values in the width and height.
A Killer plugin determines the lifespan of a single particle (not to be confused with the lifespan of particle spawning, which is controlled by the Stop Time adjuster in the Creator Plugin).
I haven’t really tried the different Killer Plugins, only used the default Age Killer and even then I never really messed with the toggles in there so I can’t elaborate on those. The Stomp Time is the main focus. It determines how long a particle lasts before disappearing. The longer the Stomp Time, the longer it exists.
The Stomp Time Variation is likewise similar to the Size Variance adjuster, by changing it, you can cause random fluctuations in the stomp time. The larger the variation, the stronger the fluctuation, and some particles like missile smoke trails can exploit this so that when the missile trail is shown in-game, the smoke doesn’t fade out in an abrupt termination, but rather over a gradual transition caused by particles that die out at different times due to the Stomp Time Variation.
Pretty simple, no adjusters or features, just a choice between 2 types of plugins, World Space or Local Space. Spawned Particles in a Local Space will seem to disobey the laws of relativity, for example Local-Spaced rising smoke on a moving vehicle would always form a perfectly vertical smoke column over the vehicle regardless of how fast the vehicle moves.
For another example, consider the exhaust trail on the rear end of Figments. The trail extends out while the vehicle moves because it has a world space translater. If it were local space, the particles on the rear would not form a trail because they’d just remain clustered around the particle emitter, even if the vehicle moves.. Most particles use World Space translators because it’s more realistic
Here’s where you choose the shader and texture for your particle. Obviously you can only have one at a time (just like the UV plugins). If you try to insert multiple render plugins, only one will take precedence.
Depending on the renderer you choose, the texture and shader will be automatically changed regardless of whether you want to or not. There are a ton of renderer plugins to choose from, but the main ones are Billboard, Chain, XY-Aligned as well as Heat and Saturation. Bear in mind that every particle you see is actually a collection of several 2D images. A smoke cloud could be 7-8 smoke puff textures floating around for instance. The renderer plugin will determine exactly how these 2D images will appear in the environment.
Billboard: The textures are simply shown as individual “pieces,” always rotated to face the camera.
Heat and Saturation: Uses the special p_particle_heat_master.tga texture and ParticleBillboardHeat.fx shader by default. Also has sliders to adjust the amount of heat distortion. Do take note that the Distance Cutoff slider should be high, a low-amount would mean that as long as your camera is farther than that small distance, you won’t see any distortion. I have no idea what the Saturation Scale slider does, never seemed to have any effect.
Chain: The textures are linked together as a chain. There aren’t really many uses for this and personally I don’t really like PG’s chain particles. For instance look at the missile trails for military units or Mirabel, note that they look like coloured ribbons, yup that’s chain rendering at work. NOTE: if you set a Chain renderer, it automatically sets the texture as W_Clouds01.tga which is useless. Change the texture to one of the more suitable particle textures (the ones whose names start with “P_”). You need not browse the files, a simple copy+paste of the filename will do.
XY Aligned: Pretty simple, the textures instead of aligned to face the camera, are laid parallel to the X-Y Plane. Easiest example of this would be the Hierarchy Symbol in Kamal’s abduct.
[size=1]Comparison between billboard (red) X-Y aligned (blue) and chain (green). The chain particle was given a point velocity so that you can see the “ribbon” flying outwards. Also note that the blue particles, although laid horizontal, are NOT necessarily laid flat on the X-Y plane, some of the horizontal blue particles are "floating" around.
There are lots of other renderer plugins selectable but most are obsolete or have limited uses.
[size="3"] TIME PLUGIN
Never really used it. There’s only one type of Time Plugin called Distance Key Time which I suspect influences a particle’s lifespan depending on how far away the particle is located from a different target.
Well that’s it for now. If you wish to start on your first particle model (i.e. Emitter), simply open the editor and hit “New Emitter” and be sure to choose Default Plugins. Your emitter will start with one particle with default stuff already in, meaning you just need to tweak the stuff already laid out for you. Note that the default colour plugin is a linear colour one. I’d recommend deleting it and replacing it with the more versatile Keyed Colour.
Edited by Valdez, 29 May 2009 - 12:26 AM.