Demorize Digital Signage Software

17.1.9. Particle System

A particle system simulates a large number of graphical objects which can be affected by natural or chaotic forces. This can be used to create a wide variety of effects that are otherwise hard to animate with individual objects. Particle systems can for example be used to create natural phenomena such as fire, explosions, smoke, stars, snow, sparks or just simply basic abstract art.

Figure 17.1. Particle systems can be used both for abstract art and for natural phenomena. When combined with rendering filters, they can for example be used to simulate animated light streaks.

Particle systems can be used both for abstract art and for natural phenomena. When combined with rendering filters, they can for example be used to simulate animated light streaks.

A particle system in Demorize uses Emitters and Affectors to create and control the particle objects produced by the particle system. An Emitter creates new instances of a particle object by the use of a Particle Template. This template defines how each created particle looks and behaves during its life time. The Affectors can be seen as the physical laws that each particle is controlled by. An example of an Affector is the Linear Gravity which applies a constant force to particles. This makes them accelerate in the force direction over time like a falling object.

New Emitters and Affectors are added to a particle system from the context menu of a particle system object.

Particle System Properties

  • Kickstart time - Since a particle system creates particles over time it does not contain any particles when first viewed. If you want your particle system to start by having evolved a bit before it is shown you can use this property. This property tells how many seconds into the future that the particle system shall simulate before it is first being displayed.
  • Max Particle Count - This property sets a limit on how many particles that are simulated at any given time. Particles die when their life time is exceeded which leaves room for new particles. If the roof of the particle count is reached, the system stops creating new particles until some old have died.
    [Note]Note
    Increasing the particle count too much may cause your computer to slow down and be unresponsive. Try increasing in small steps.
  • Depth Fade End - Particles are fully faded out and invisible when they reach this Z-coordinate.
  • Depth Fade Start - At this Z-coordinate a particle starts to fade out. The particle increasingly fades more and more with Z-coordinate depth until it reaches the Depth Fade End where it will be fully invisible.
  • Field Of View - This defines how wide angle, in degrees, that the camera projecting the particles to the screen is using. Increasing the field of view will create more perspective, giving the viewer a greater feeling of depth.
  • Particle Blending - The blending mode defines how the graphics of the particle is drawn on the screen. Normal blending means that the particle will replace the pixels of what is currently on the screen with care taken to any alpha channel that blends it with the background. Add blending means that the pixel values will add to what is currently drawn to the screen, disregarding any alpha channel of the particle. Subtract blending will decrease the pixel colors of what is already drawn on the screen.
  • Sorting - Before particles are drawn to the screen they can be sorted with regard to their Z depth. Sorting large number of particles may slow the animation so turn this off if you don't need your particles sorted. When for example using the Add or Subtract blending modes, the particles do not need to be sorted since the final result will be the same with or without sorting.

Particle Emitter

Particle Emitters makes use of their Particle Template to create new particles. You will find the emitters and templates by expanding the Particle System object in the Project View tree.

A particle system may contain many emitters, each with its own properties and template. A Particle Template may also contain an emitter of its own that is started by a trigger in the particle that owns it. One such trigger is that it can be told to start when the particle dies. This can for example be used to create fireworks. Imagine one rocket launching into the sky. This rocket is simulated by a single particle from an emitter. When the rocket reaches the end of its life time it will die, but also trigger another emitter that creates a burst of stars. Each of these stars can in turn trigger another emitter that creates pixie dust around the star.

Particle Emitter Properties
  • Burst Interval - If greater than zero, particles will be created in bursts with this number of seconds in between. The number of particles that will be created in the burst is accumulated with the frequency defined by the Frequency property.
  • Frequency - This property defines how many particles per second that are created.
  • Life Cycle - An emitter has a life time that is defined by the Life Time property. When the life time of the emitter is at its end this Life Cycle property defines what shall happen to the emitter. If the life cycle is set to Repeating, the emitter will restart its life and continue to produce particles. If the life cycle is set to SingleShot the emitter will stop producing particles after its life time has exceeded the first time.
  • Life Time - A particle emitter will only produce particles this many seconds before it stops. What shall happen to the emitter when it reaches the end of its life time is defined by the Life Cycle.
  • Start Trigger - When adding an emitter to a particle template, this property is used to define when that emitter shall begin producing particles. When the trigger is set to Always, the emitter will start creating particles as soon as its owning particle is created. If the trigger is set to ParticleDeath, the emitter is starting after its owning particle has died.
  • Emission Scale - Normally, when this property is set to 1.0, particles are created within the rectangle of the Particle System on the screen. This property can be used to scale, both up and down, the space in which particles are created. This is particularly useful when using emitters on particle templates. An emitter that is attached to a particle template will spawn particles within the rectangle of the particle that owns it. If you for example want this spawning to be narrower to the center of the particle you can decrease the Emission Scale value.
  • Z Max - New particles are created with a random Z-coordinate between the Z Max and Z Min values. This is thus the maximum creation depth of any newly created particle for this emitter.
  • Z Min - New particles are created with a random Z-coordinate between the Z Min and Z Max values. This is thus the minimum creation depth of any newly created particle for this emitter.
  • Radial Particle Velocity Center Offset - When using the Radial Velocity property, newly created particles will be given an initial radial velocity based on its creation location from the particle emitter's center. The Center Offset properties can be used to offset the radial center in order to direct the velocity towards an angle in space. If you for example want to give particles a radial velocity towards the viewer but not away from the viewer you can set the Center Offset Z value to 1.0. This will create a hemisphere facing the viewer.
  • Center Offset X - Radial center will be offset by this amount in the X-axis. A value of 1.0 means that the center is at the right of the emitter. A value of -1.0 means that the center is at the left of the emitter. The values can be greater than 1.0 which will move the center even further away from the center.
  • Center Offset Y - Radial center will be offset by this amount in the Y-axis. A value of 1.0 means that the center is at the bottom of the emitter. A value of -1.0 means that the center is at the top of the emitter. The values can be greater than 1.0 which will move the center even further away from the center.
  • Center Offset Z - Radial center will be offset by this amount in the Z-axis. A value of 1.0 means that the center is behind the emitter. A value of -1.0 means that the center is in front of the emitter. The values can be greater than 1.0 which will move the center even further away from the center.
  • Radial Velocity - Created particles will be given an initial radial speed from the emitter center based on this value. You can think of this property as a way of creating an explosion that is radiating its particles outwards from the explosion center.

Particle Template

Particles created by an emitter will get the same properties as the emitter's Particle Template. The emitter will thus create clones of the particle template, including if it contains sub-emitters.

Particle Template Properties
  • Life Time - A particle will only be alive and visible on the screen this many seconds before it is removed.
  • Gravity Factor - Some particle Affectors use calculations that involve gravity formulas. The gravity in those cases is multiplied with the particle's Gravity Factor. This can for example be used to create buoyancy if a factor less than 1.0 is used.
  • Mass - Some particle Affectors use calculations that involve particle mass, or weight.
  • Speed - The initial movement speed vector when the particle is created. If the emitter uses Radial Velocity, that velocity will be added to this velocity.
  • Height - The height of the particle. This value can be modified by the Scale property. When using sub-emitters to a particle template, the Height is also used as the height of that emitter space.
  • Width - The width of the particle. This value can be modified by the Scale property. When using sub-emitters to a particle template, the Width is also used as the width of that emitter space.
  • Scale - The width and height properties are multiplied by the Scale factor.
  • Orientation - Sets how the particle is oriented in space when drawn. When this property is set to Screen the particle is always facing the screen as a square. When this property is set to Velocity, the particle is oriented along the velocity vector. When using Velocity orientation, the Height property is used as the length of the square but is also multiplied with the speed of the particle. This means that a particle with zero speed will not be visible while a particle with a total speed of 2.0 will be twice as long as a particle with 1.0 in speed. When the orientation property is set to Trail, the particle is drawn as a line to the previous particle and thus creating a trail between the particles.
  • Animation Speed - When multiple images are used as texture on the particle and the Usage property is set to Sequence, the animation will change image this number of times per second.
  • Color - Particle color is multiplied by this color. If you don't have any image set as texture this will be the particle's color. If you have an image set as texture and doesn't want to affect that texture's color, set this Color to white.
  • Images - One or more image files can be used as texture on the particle. When multiple image files are used, the Usage property defines how these images are to be used. Separate image file names with a semicolon if you want to specify more than one image.
  • Texture Usage - This property tells how images are chosen from the list of images if more than one is specified. Selecting Random will choose one random image from the list and use that image for the duration of the particle. Selecting Sequence will play the images as an animation over and over. The Animation Speed tells how fast it changes image.