Basic Particle Properties
There are a wide range of properties to tune the behavior of the particles in the system including their lifetime, size, color, emission rates, speed, direction of travel, orientation and application of gravity.
On this page we will consider them and how to set a range of values for them. On the next we will show how these settings can be changed either over a particles lifetime or the duration of the system when it is set.
Size
The size of the particles can be varied randomly within a given range,
particleSystem.minSize = 0.1;particleSystem.maxSize = 0.5;
Size range: Particle Size Range Example
Scale
When you want to change the particle base shape from square to rectangular scale x and y values using
particleSystem.minScaleX = 0.1;particleSystem.maxScaleX = 0.5;particleSystem.minScaleY = 0.2;particleSystem.maxScaleY = 0.4;
Scale range: Particle Scale Range Example
Color
There are three colors that can be set for the particle system, two which are combined (or blended) during the lifetime of the particle and a third that it takes on just before the end of its lifetime.
particleSystem.color1 = new BABYLON.Color4(0.7, 0.8, 1.0, 1.0);particleSystem.color2 = new BABYLON.Color4(0.2, 0.5, 1.0, 1.0);particleSystem.colorDead = new BABYLON.Color4(0, 0, 0.2, 0.0);
Speed
The speed of a particle is governed by the amount of power applied to a particle when emitted. The more power the faster it goes. The emission power, and hence the speed, of the particles can be varied randomly within a given range,
particleSystem.minEmitPower = 1;particleSystem.maxEmitPower = 3;
Power range: Particle Power Range Example
Rotation
You can define a range of angular speeds in radians per second:
particleSystem.minAngularSpeed = 0;particleSystem.maxAngularSpeed = Math.PI;
You can also define a particle's initial rotation angle with
particleSystem.minInitialRotation = 0;particleSystem.maxInitialRotation = Math.PI / 2;
Rotating: Rotating Particles Rotating with set initial angle: Rotating Particles With Initial Angle
Translation Pivot
By default the center of transformation for a particle is at the middle of its plane. You are able to set it to a different point relative to its middle. To change the pivot position use
particleSystem.translationPivot = new BABYLON.Vector2(2, 2); // across and up the containing plane
Rotation with translation pivot: Changing Particle Pivot Points
Direction
Two directions can be specified. If you specify just direction1 the particles will travel randomly in the general direction given. When both directions are given the particles will travel in a direction between the two. In practice the vectors act as giving a velocity (direction and speed) to the particles; i.e. particles with direction (10, -10, 10) travel 10 times faster than those with direction (1, -1, 1).
particleSystem.direction1 = new BABYLON.Vector3(-7, 8, 3);particleSystem.direction2 = new BABYLON.Vector3(7, 8, -3);
direction range: Particle Direction Range Example
Gravity
A value for gravity can be applied as a vector3 in any direction. For example if negative in the Y direction the particles will slowly be pulled downwards.
particleSystem.gravity = new BABYLON.Vector3(0, -9.81, 0);
Direction and gravity: Direction And Gravity
Emit Rate
The emit rate determines the number of particles emitted per second. The larger the number the more dense appears the emitted cloud of particles. As particles die they are recycled to be emitted again. If their lifetime is long enough and their emission rate fast enough it is possible for there to be a gap in the emission of particles.
particleSystem.emitRate = 1000;
You can stop the continuous emission of particles by setting a manual emit count.
particleSystem.manualEmitCount = 300;
In this case the number of particles given by the count are emitted and there is no further emissions of particles.
Slow emit rate: Slow Emission Rate Fast emit rate: Fast Emission Rate Emit just 10: Emission Limits
Lifetime
The time taken for particles to disappear (or die) after being emitted can be varied within a chosen range. A particle's lifetime is set as a random value between a minimum and maximum
particleSystem.minLifeTime = 0.3;particleSystem.maxLifeTime = 1.5;
Short lifetime: Short Particle Lifetimes Long lifetime: Long Particle Lifetimes
Adjustable Examples
Adjust Min & Max of EmitBox: Adjust Min And Max of EmitBox Adjust Emit Life Time, Rate, Power and Update Speed: Adjust Various Particle Properties