Particles and Effects

Wikis > Game engine manual > Particles and Effects

 

Particles

The Particle system enables a mesh to emit particles (instanced 2D sprites) at its vertices along their vertexnormals.

particlesMeshNormals

Left: a mesh (in Maya) with vertex normals displayed. Right: the resulting particles emitted based on vertexnormals in Nebula.

Creating particles

First, create a polygon-object in the shape you want the particles to be emitted. (The particles will emit from the vertices of that mesh in direction of their vertexnormals – the object itself will not be visible in Nebula). Of course this gives you the opportunity to exert influence on emission direction by turning the vertexnormals as you desire (in Maya: Edit Polygons>Normals>Vertex Normal Edit Tool). Further, the emission travels through the vertex order of the mesh, allowing the emission to “creep” across a surface.

In Nebula, you have two options for creating a particle system in the Content Browser.

The first (and usual) is to use the Particle Wizard from the Create menu. This way, the emitter mesh used won’t be rendered along with the particles.

particleWizard

The Particle Effect Wizard. (Note that, at the time of writing, the “Browse…” button does not in fact work. The emitter mesh can be changed afterwards, though.)

The second way (recently added) is to Append particle nodes to existing models – including other particles, allowing for stacking of multiple particle systems in one model. If one adds a particle node to an existing graphics mesh, the graphics mesh will be rendered along with the particle.

appendParticles

Particles overview

Particles are created as nodes in a model and there are 5 tabs for controlling various attributes. They are:

  • Appearance (attributes such as the emitter mesh used, sprite animation/phases, control over RGBA)
  • Emitter (attributes such as the emission duration, particle life time/length, spread of emission direction from vertex normal)
  • Motion (attributes such as gravity, wind direction, initial velocity along vertex normal)
  • Shape (attributes such as size, rotation, etc)
  • Shading (selecting which shader to use – unlit, additive – and which textures)

A few basic concepts about particles are:

  • They are emitted along vertex normals (unless you check “Use single point emitter mesh” in Appearance)
  • If you have an emitter mesh with several submeshes, you can pick which submesh (“Mesh fragment”) to use under Appearance.
  • There is an emission duration (set under Emitter) which can be be looped for repeating effects (such as a camp fire) or play only once (such as for an explosion)
  • Most attributes can be animated over time – either the emitter duration time, or the individual particles’ life time (set under Emitter)
  • By default, particles are aligned according to their vertex emitter – however, they can be set to always face the camera (set under Shape, “View aligned?”). Further, for sprite sheets with animations you can use the Tiles, Phases and Phases/sec under Appearance.

 

particle1

A basic particle system emitted from the 4 vertices of a plane. Each particle has a 2D texture mapped to it (the Nebula logo) and various attributes that affect size, rotation, etc over its lifetime. The only force affecting these particles is gravity, making them fall down.

 

Many of the particle attributes can be controlled(animated) over time and share a set of similar attributes. Here is an example:

particleCtrls

A particle system, where particles have an upwards velocity and their color animated over time. Early on in their life cycle, they have increased red, and towards the end of their life time, an increase in green color.

 

 

 

Particle settings in depth

The below is simply copied from the old documentation, when attributes were still being set up in Maya. Things have changed – this section will be updated eventually. Hopefully soon.

 

Main Section
part2_main.gifParticle Shader 2 – Main Section

Render Priority:
specifies the position of this particlesystems sprites in the render stack of all particle systems. (Note: Doesn’t work with Additive Particles)Lock To Viewer:
Attaches the origin of the object with this shader to the camera origin of the view. Means its translate-values will always follow the rotation not.

Diffuse Map:
Thats the texture mapped onto the emitted sprites. Keep in mind that Alpha Source/Dest set to One/One doesn’t make use of an alpha channel. For more info on the texture control buttons see Special Attributes of the Nebula Material Editor but note that “Set As …” and “Get From …” don’t make much sense at a particle emitting mesh.

Bump Map:
New in this version is the ability to attach normalmaps to the particles. So each particle can be shaded in realtime enabling one to make particle-rocks, -balls -clouds that look like real.

Emissive Intensity:
Sets the light influence on the particles. Higher values makes them glow.

Depth Density:
Another new feature: The per pixel transparency of the particles is now checked against the Depth Buffer. Here you can set how soon the particle will fade when near solid surfaces.

part2_depth_density.jpgA smoke with depth density 5.0 on the left and 0.5 on the other hand. Actually in both cases the spites interpenetrate the ground! But no hard edges far and wide.

Texture Tiling:
New in Particle2: You can assing “random particle textures”. You do so by creating a vertical strip of several textures and setting the number of them here. For an example see the image below. This can be used to do a lot more realistic looking fire or smoke or whatever you like:

part2_texturetiling.gifRough example: With such a texture set to 2 Texture Tiling would cause something like this

Emission Duration:
Specifies the length of the cycle. If Loop is off the emission stops after the time set here.Start Delay:
From time = 0 the emission will be delayed by the amount of seconds set here.

Precalculation at Start:
Use this to get rid of the annoying “come-into-a-room-and-the-fire-starts-burning”-syndrom. It fast-forwards the particle system by the given number of seconds at creation.

Loop Emission:
If its set the Emission Duration will start over and over again.

Gravity:
Now you can set the gravity global for this particle system. The effect can be manipulated over time by the “Particle Mass” attribute beneath.

Activity Distance:
The Emission will be stopped if your distance to the emitting object is higher than the value set ant Activity Distance and will continue if within the amount.

Particle Stretch:
If higer than 0 this will cause the particles to aim towards their emitting direction and change their lenght according to the speed. Values above 0 influence the lenght-effect and will turn off all rotation specific attributes described beneath.

Stretch Detail:
If your stretched particles perform a curved path caused by gravity or wind you can make the trail bend that way by giving up a number of subdivisions set here. Higher values may have influece on the performance. This only takes effect if Particle Stretch is set.

Stretch To Start:
Checking this makes the stretched particles trail keep pinned to their emitting location. Means only the tip of each particle flyes around.

Avoid Errors by fading:
Especially for the Stretch Detail feature this is a workaround to get rid of a heavy flipping effect that occurs if the particle bows and you look along its moving direction. It fades away the surfaces that are arranged in a close angle towards the viewer.

Render Oldes First:
Makes new emitted particles appear behind the old ones. Setting this depends a lot on usual viewing direction you see that effect from: E.g. in isometric views you’d want that checked on a particle system that creates smoke to avoid a tunnel-effect or a kind of weird looking.

Billboards:
Sets the viewer alignment. If off the particles are just planes aligned to the XY-axis of the emitting object. To turn this you have to make the object a standard hierarchy node.

Editing the Curves

Besides all that unidimensional there are a lot of attributes embedded in curves that change either over duration time or lifetime of a particle.
To every curve applies the following:Selected Position marks one of the four keys in each curve from 0 = left border to 1 = rightborder. This works to the different Emission Duration and Life Time Attributes accordingly(see below). The first and last keys are locked to their positions. Only the middle ones are completely free in position and value. Important Note: only 4 keys will be recognized by the Exporter. If you accidentally deleted or created a new key you better undo so only the default 4 keys are in the graph. More or less keys could result in crashing the preview.

Selected Value is the according value from 0 to 1 on the line between Max and Min. For example if your key has a selected Value of 0.5 and the Max and Min Values are 4.0 and 2.0 the resulting Value is 3.0 at the key time.

Max represents the upper border in the graph.

Min represents the lower border in the graph.

part2_emission-frequency.gifParticle Shader 2 – The Emission Frequency collapsed and expanded

New to this toolkit version is a modified collapsed particle attribute. The work in everyday production showed that you don’t always need to edit the curve and everything but the Maximum Value! So we dicided to display this in collapsed state. As every field in Maya you can slide the value by CTRL+left/middle/right-mousebutton. Here this also works with the realtime remote control.
The only thing left to say is that if you turn the value in collapsed state the minimum value is modified relatively if other than 0.With the following attributes you can modulate the drawn curve with a simple waveform:

Frequency sets the waveform frequency in Hz. 1 Hz is the number of complete waves in 1 second.

Amplitude sets the maximum amplitude modulus to which the modulation can rise or fall. 20 means maximum +20 and minimum -20. Note that a lifetime of < 0 is not valid!!

Function is the waveform mode. Sine starts at waveform amplitude 0 and Cosine on the top of the amplitude.

Edit Curve… Button If you hold the left mouse button over this you have several options to modify the whole curve in a fast way:

  • Flip Curve Vertical – Mirrors all keys on the Y axis. left to right
  • Flip Curve Horizontal – Mirrors all keys on the X axis. upside down.
  • Straighten Curve – Puts the two middle keys on a straight line between the first and last.
  • Copy Curve – Puts the position and values of the curve onto a clipboard.
  • Paste Curve – Takes the data from the curve clipboard and applies it onto the curve.
  • All Keys To … – Takes all keys onto one level so there is no more variation over time.
  • Curve Sharpness Tool – A small helper to create rough or soft envelopes with a slider.
part_editcurvebutton.gifParticle Shader 2 – the Edit Curve… Button

Emission Duration Attributes

the following 5 settings are evaluated over the Emission Duration Time. Means the curves left border represent time = 0 on the Emission Duration Timeline, right border is the end of it to the specified time.Emission Frequency

This allows you to set the amount of particles that will be emitted per second from durationtime start to end.

Particle Lifetime

Allows you to set the lifetime of the particles. The units are measured in seconds.

Particle Initial Velocity

This is the speed that will be set to the particle when it is going to be emitted. This is unit per second. Now Initial Velocity Randomize can be used to have particles with different speeds. There is a random factor between 1 and the given value that is multiplied onto the Initial Velocity of each particle. 1 means all particles will have the given Particle Initial Velocity. If set to 0 the whole range of Particle Initial Velocity to absolutely NO Initial Velocity maybe applied to a particle.

part2_start-velocity.gifParticle Shader 2 – Initial Velocity

Particle Spread Max / MinLike in Nebula1 you are now able to set up 2 cones that represent the emitting angle again. One for adding angle to the emitter and another one to substract from it. Furthermore you can animate these settings over durationtime comfortable with a curve. Here is an example shown below the controls: There is a green cone that represents the MAX value and a red one for the MIN Spread Angle. As you can see the emission occurs between these two cones. Note that the emission will not be outside of the MAX-cone even if the Min exceeds the Max value at any time. Setting both angles to 90° will cause emittion in a flat level.

part2_spreadmaxmin.jpgParticle Shader 2 – Spread Max / Min

Life Time Attributes

All other settings are related to the specified Lifetime. Means the left border of the curves represent the birth of each particle where the right border marks its death.Initial Rotationangle Min / Max

Not yet a Life Time Attributes. But as it is rotation stuff it belongs here: As in Particle1 here you can give each particle a random rotation angle within 0 and the specified value. But you are now able to reduce the angle with the second setting. This is similar to the increasing / decreasing cone of the Particle Spread feature: You can limit the range even up to a single value by setting both values to the same. Here an example:

part2_initialrotationminmax.gifParticle Shader 2 – Initial Rotationangle Min / Max

Particle Rotation VelocityThis sets the amount of rotation for the particle in its lifetime. This is not an absolute value! Its more a rotation speed you set here. Now Rotation Randomize can be used to have particles with different rotation speeds. There is a random factor between 1 and the given value that is multiplied onto the Rotation Velocity of each particle. 1 means all particles will have the given Particle Rotation Velocity. If set to 0 the whole range of Particle Rotation Velocity to absolutely NO Rotation Velocity maybe applied to a particle. Left-Right-Random is used to have the particles rotated clockwise or counterclockwise randomly.

part2_rot-velocity.gifParticle Shader 2 – Rotation Velocity, Rotation Randomize and Left-Right-Random

Particle SizeAllows you to set the size of the sprites over the particle lifetime. Now Size Randomize can be used to have particles with different sizes. There is a random factor between 1 and the given value that is multiplied onto the size of each particle. 1 means all particles will have the given Particle Size. If set to 0 the whole range from Particle Size to absolutely NO Size maybe applied to a particle.

Particle Color

Here you can specify overlay-colors for the image-file. The values can be set in the color-bar an can be changed over time.

Note: The Nebula 2 particle system supports 4 and only 4 keys for the color-ramp. Please do not try to delete or add keys even if there were functions put in trying to prevent you from. Violating this may make your particle shader unusable.

part2_rgb.gifParticle Shader 2 – Particle Color with the Edit Ramp… Button

Edit Ramp… Button: As Particle RGB displays the only color ramp in the Particle System the functions on this button are shown just here:

  • Flip Ramp – Mirrors all keys from left to right
  • All Keys Like The First – If you want the particles to keep their color over lifetime this saves some work.
  • Make Gradient – Like Straighten Curve this puts the middle two keys to a color between the outer ones.
  • Brighter +10% – Adds 0.1 to each color value of each key in a range between 0 and 1.
  • Darker -10% – Subtracts 0.1 from each color value of each key in a range between 0 and 1.
  • Copy Color Ramp – Puts the colors and position of the keys on the ramp onto a clipboard.
  • Paste Color Ramp – Takes the data from the clipboard and applies it onto the ramp.

Particle Alpha

To set the transparency of the particles over their lifetime. This only works with alpha-channel particles. You can make additive particles fade by turning the color to black (see Alpha Source/Dest).

Particle Air Resistance

Defines the wind influence on the particles over lifetime. Since this is a factor you can set higher values to make the particles blow away. Note: “Wind” is a global vector in Nebula2 this attribute listens to. By default its quite unspectacular but theoretical it could be programmed to blow in waves and turn randomly to make it appear more realistic.

Particle Velocity Factor

Allows you to set an additional factor thats multiplicated onto the velocity of the particle over lifetime. Means at 0 the particle stops completely whereas values over 1 accelerate it additional.

Particle Mass

Describes the weight over lifetime of each particle. The resulting movement of course depends on the set gravity. If gravity is set like terrestrial -9.81 a high value will make the particle fall whereas below 0 will cause it to rise. Wich is important for e.g. fire.

Time Manipulator

This is used to take control of the global time of the particle system. Even though its not used very often its able to create some crazy and interesting effects. Last but not least because you can make the particles have negative time.

Skip to toolbar