Describes

Most game projects use special effects such as: smoke, rain, snow, fire, explosions, magic fx, etc. To create these special effects it is convenient to use a particle system. Ryzom Core using the NeL engine provides a special editor called Object Viewer to create particle systems.
When working with particle systems it is useful to know the following terms:

Attribute maker

Attrib maker edition widget - attribute maker is the object that can produce an attribute following some rule. This allow, for example, creation of a color gradient, or color flicker, size strectching and so on...

Constant value

Scheme

Float

Value blender
Values gradient
Curve
Value computed from emitter
Binary operator

Arg 1/2
Operator
Arg1
Arg2
Modulate
Add
Subtract

Unsigned integer (link to float param)

Color

Color sampled blender
Color gradient
Color exact blender (unused?)
Value computed from emitter
Binary operator
Texture grouped

PlaneBasis

Basis gradient
Follow path
Projection plane
No projection
XY plane
XZ plane
YZ plane
Spinner
Value computed from emitter
Binary operator

Date
Position
Inverse mass
Speed
Random
User parameter
LOD
Square LOD
Clamped LOD
Clamped square LOD

Workspace

Container for the particle systems.Has the following actions available:

New
Load
Unload
Save
Save as
Insert
New
Reset

Animation Dialog

Play/Stop - ...
Loop - ...
Display bbox - ...
Display helpers - ...
All particle systems - Play all particles systems.
Enable auto count - In this mode, when a particle is spawned, it is guaranteed to be created. Particle arrays are resized accordingly. This helps to tune the size of arrays that contain particles. This is well adapted for editing, but shouldn't be used at runtime because array reallocation costs much performance. When the system is modified by the user, he should click 'Reset auto count' button, so that the array will match the current number of particles. This is useful if the user modified the system causing a decrease in particle number.
Reset auto count - ...

Particles of system

Integration
Enable load balancing - ...
Accurate integration - enables a more accurate integration of movement. When activated, integration is performed in a more accurate way when the ellapsed time goes over a threshold, but it is slower to perform.
Enable motion slow down - allows the system to slow down in speed but to keep accuracy in its movement. It is useful for critical situations where the framerate is very low.
Time threshold - sets integration time.
Max steps - sets the max number of integrations to perform, when accurate integration is activated.

User parameters (1-4) - Saves a user defined value. Ranges from 0 to 1. The values are not saved and their default is 0.f.
Bind - bind/unbind a global value to a user param. For example: global strenght of wind.

Precompute bounding box (PBBox)
Enable precomputed bounding box
Auto - the particle system will recompute the bounding box each time. This may be needed for particle systems that move fast.
Position - ...
Reset - ...

Level of detail (LOD) managment - Hand tuned LOD (for emission, color, size: this uses LOD as an input for attribute makers).
Auto LOD
With non-shared systems: modulates the emission period, quantity etc.. to get the desired result.
With shared systems: one version is animated with full LOD (no hand tuned LOD should be applied !).
All versions are displayed with fewer particle than the full LOD, depending on their distance. Visually however, this is not as good as a hand-tuned system, or auto-LOD on non-shared systems.
Sharable - enable/disable sharing. When sharing is enabled, the state of a particle system is the same for all systems that have the same shape. This allows to save memory. However, such system should not be built with LOD in mind (for example, less emission with distance). LOD should be automatic for these systems (see Auto-LOD). This means that sharing is only useful for systems that have the same state, and if they are numerous: motion is performed once, but only for one system with no LOD. LOD is done during display only (when activated).
Auto-LOD - enable / disbale Auto-LOD. When enabled, less particles are displayed when the system is far away. This applies to all particles in a system (unless they override that behaviour).

A value of 0 means no more emissions at all.
A value of 0.1 means 10% of emission.
A value of 1 means there's no LOD at all.

Particles are skipped in the source container when display is performed (default)
Less particles are displayed. Can lead to 'pulse' effects, but is faster.

Maximum view distance - maximum view distance for the particle system (in meters).
LOD ratio - a percentage that indicates where the 2nd LOD is located.

Global color
Force global color lighting - ...
Edit global color (Warning: By pass multitexturing, not supported by all types) - ...

Life managment parameters
Presets:

Model removed when out of range - Invalidity flags (no direct effect, just indications for a third party, a model holding the system for example). Tell the system that it is invalid when its out of range. This is only a indication flag and must be checked by third party (a model holding the system for example)
PS resource removed when not visible - tells the model holding this system that it will become invalid when its out of the view frustum. This is only an indication flag and must be checked by third party (a model holding it for example). It has no direct effects.
Force life time update - ...
No max numbers steps - when activated, this bypasses the limit on the max number of integration steps. This should NOT be used on FXs that are looping, because it would slow endlessly. Anyway if you try to do that an assertion will ocurr. Typically, this is useful for spell fx because they are short, and it is important that they don't slow down when framerate is too choppy.
Anim Type - tells when animation must be performed
When visible - visible particle systems only are animated.
When visible clusters - particle systems that are in cluster are animated.
Always visible - animate always when not too far.
Die on event - when don't disable, the model holding this particle system will be considered invalid when dieCondition is met. This is only an indication flag and must be checked by third party (a model holding it for example).

Auto delay - tells that the particle system should recompute the delay before death test itself.
This delay is updated when:

  1. The system structure is changed (located added, merge ..)
  2. The lifetime of a located is changed
  3. Emitter parameters are modified

Apply after delay - set a delay before to apply the death condition test. This may be necessary: the particle system could be destroyed because there are no particles, but no particles were emitted yet.

Link to skeleton (future, instead additional settings in animation dialog!)
Link to skeleton - ...
Unlink - ...

Located

Represents any kind of object that has a position in the world and belongs to a particle system. A located doesn't do anything by itself. You must bind objects to it, such as a particle, a force and so on. Note that a located holds all instances of a object of one type (force, emitter, particles or both...), not only one. Instance of these types are created by emmiters or manually by the user. Not sharable accross systems.

General
Coord system:
Particles are local to the system
Particles are in world
User defined
Disgrade with LOD - Force LOD degradation. This will suppress instances immediately, (during the motion pass) so that there won't be more than maxNumberInstance * dist / maxDist instances. This may not be desirable every time since particles dissapear on screen, which may be noticeable.
Parametric motion - enable parametric motion. This is needed in a few case only, and can only work if all the forces that apply to the system are integrable.
Max numbers of particles (instances) - ... . Warning (ovqt bug): can not set count max number < manually created instanciates
Set current count particles - ...

Life time
Limited life time - At the end of the defined life time particles disappear from the screen if life time is enabled.
Triger on death - Enable a trigger on death. This is used to create emissions on an emitter with a given ID.
Value time - Life time duration.

Particle mass
Value mass - Set the mass of locateds.

Emitter

Generate particles.

Types of emitters:

  1. Directional - Emits in one direction. This can be the 0, 0, 0 vector.
  2. Omni directional - Emits randomly in all direction.
  3. Rectangle - Emits directionnally in a rectangle (useful to produce snow, drop of water ...).
  4. Conic - Same as a directional emitter, but user can also specify the radius for emission.
  5. Spherical - ...
  6. Radial - Direction gives the normal to the plane of emission.

General
Emitted type - Sets the type of located to be emitted. Default is no emission. It can fail when this cause the system to last forever, which is incompatible with the 'BypassMaxNumIntegrationSteps' flag in ParticleSystem)
Type of emission - Sets the emission type. Please note that if the type is 'External only', the located needs to be attached to the system (the system is holding the ID-Located map).

Direction:

Force consisten emission - Enable consistent emission. This tries to keep the number of emitted particle constant by allowing more than one emission cycle per iteration. This is useful to deal with poor framerate. This has several drawbacks though: the motion is in straight lines.
Note: In fact, this should be used when there can't be collisions with the emitted particles, and with main emitters only.
Note: this has no effect if the emission period is 0 (which means emit at each frame)
Bypass Auto-LOD - No Auto-LOD will be applied to that emitter.
Speed inheritance factor - Sets a speed value, to add the emitter speed to the emittee creation speed. this can be < 0.
Delayed emission - Sets a delay in seconds before the first emission (regular emitter only).
Max emission count - Sets a maximum number of particle emission (0 means no limit and is the default). Applies with regular emitter only.

Emission param
Emission period - Sets a period for emission (expressed in second).
Emission quantity - Sets the number of particles to be generated at once.
Strength modulation - Sets a speed modulation for the emitter.

Particle

A single particle\mesh in the system.

Types of particles:

Types of mesh:

Force

Description missing

Targets
Available targets
Force intensity
Types of zones:

  1. Gravity - A force that has the -K direction. Mass isn't taken into account (true with a uniform gravity model, near earth).
  2. Directional - A force that has the same direction everywhere. Mass is also taken into account (which is not the case for gravity).
    Directions
    Global
  3. Spring
  4. Fluid friction
  5. Central gravity - Central gravity. Mass is taken in account here
  6. Cylindric vortex - Has a limited extend. It has unlimited extension in the z direction. The model is aimed at tunability rather than realism.
    Radial viscosity
    Tangential viscosity
  7. Brownian - A brownian motion.
    Parametric factor - Tells how fast the force acts on particle.
  8. Magnetic - A magnetic field that has the given direction.
    Direction

Collision zone

This is a kind of specialized force, and it has an attached list of the targets. Not sharable accross systems.

Types of zones:

  1. Plane
  2. Sphere
  3. Rectangle
  4. Disc
  5. Cylinder

Targets

Bounce factor - Only valid if the behaviour is set to bounce...

Light

Dynamic light created by a particle system.

Color light - ...
Attenuation start - Radius for attenuation start, must be > 0 (TODO, OVQT Bug: OVQT do not check (> 0))
Attenuation end - Radius for attenuation end.

Sound

Description missing

Sound name - Name of the sound.
Play - ...
Spawn - ...
Mute - Sets mute on/off.
Keep original pitch - Force the sound to use the original pitch that has been entered in the .sound sheet.
Sound pitch - ...
Emission percent - Percent of sound emission. If set to 1, it tries to emit all sounds.
Sound volume - ...

Instanciate

Description missing

Position - ...
Sub component - ...
Scale - ...
Direction - ...
Scale X/Y/Z - ...

Examples of creating a particle system

Videos

Videos

Ryzom Core: NeL - Force field (tempestintheaether.org)

Ryzom Core: Object Viewer Qt - Turbulence force

Ryzom Core: Object Viewer Qt - Particles editor

Ryzom Core: Object Viewer Qt - Particle System Texture Animation

Ryzom Core: Object Viewer Qt - Particle System Demo