Optional
duration?: numberDuration of the particle system in seconds. Must be a positive value.
Optional
emission?: EmissionDefines the particle emission settings. Configures the emission rate over time and distance.
Optional
gravity?: ConstantDefines the gravity strength applied to particles. This value affects the downward acceleration of particles over time.
Optional
looping?: booleanIndicates whether the system should loop after finishing.
Optional
map?: THREE.TextureDefines the texture used for rendering particles. This texture is applied to all particles in the system, and can be used to control their appearance.
Optional
maxParticles?: ConstantDefines the maximum number of particles allowed in the system. This value limits the total number of active particles at any given time.
Optional
noise?: NoiseConfigNoise configuration affecting position, rotation, and size.
Optional
onComplete?: () => voidCalled when the system completes an iteration.
Optional
onUpdate?: (Called on every update frame with particle system data.
Optional
opacityOverLifetime?: { isActive: boolean; lifetimeCurve: LifetimeCurve }Controls the opacity of particles over their lifetime. The opacity can be adjusted using a lifetime curve (Bézier or other supported types).
Optional
renderer?: RendererRenderer configuration for blending, transparency, and depth testing.
Optional
rotationOverLifetime?: { isActive: boolean } & RandomBetweenTwoConstantsControls the rotation of particles over their lifetime. The rotation can be randomized between two constants, and the feature can be toggled on or off.
Optional
shape?: ShapeConfigConfiguration for the emitter shape. Determines the shape and parameters for particle emission.
Optional
simulationSpace?: SimulationSpaceDefines the simulation space in which particles are simulated. Determines whether the particles move relative to the local object space or the world space.
Optional
sizeOverLifetime?: { isActive: boolean; lifetimeCurve: LifetimeCurve }Controls the size of particles over their lifetime. The size can be adjusted using a lifetime curve (Bézier or other supported types).
Optional
startColor?: MinMaxColorInitial color of the particles. Supports a min-max range for color interpolation.
Optional
startDelay?: Constant | RandomBetweenTwoConstantsDelay before the particle system starts emitting particles.
Supports a fixed value (Constant
) or a random range (RandomBetweenTwoConstants
).
Optional
startLifetime?: Constant | RandomBetweenTwoConstants | LifetimeCurveInitial lifetime of the particles. Supports constant value, random range, or curves (Bézier or easing).
// Constant 3 seconds.
startLifetime: 3;
// Random range between 1 and 4 seconds.
startLifetime: { min: 1, max: 4 };
// Bézier curve example with scaling.
startLifetime: {
type: LifeTimeCurve.BEZIER,
bezierPoints: [
{ x: 0, y: 0.275, percentage: 0 },
{ x: 0.5, y: 0.5 },
{ x: 1, y: 1, percentage: 1 }
],
scale: 2
};
// Easing curve example with scaling.
startLifetime: {
type: LifeTimeCurve.EASING,
curveFunction: (time) => Math.sin(time * Math.PI),
scale: 0.5
};
Optional
startOpacity?: Constant | RandomBetweenTwoConstants | LifetimeCurveDefines the initial opacity of the particles. Supports constant values, random ranges, or curves (Bézier or easing).
// Constant value
startOpacity: 3;
// Random range
startOpacity: { min: 1, max: 4 };
// Bézier curve example with scaling.
startOpacity: {
type: 'bezier',
bezierPoints: [
{ x: 0, y: 0.275, percentage: 0 },
{ x: 0.5, y: 0.5 },
{ x: 1, y: 1, percentage: 1 }
],
scale: 2
};
// Easing curve example with scaling.
startOpacity: {
type: 'easing',
curveFunction: (time) => Math.sin(time * Math.PI),
scale: 1.5
};
Optional
startRotation?: Constant | RandomBetweenTwoConstants | LifetimeCurveDefines the initial rotation of the particles in degrees. Supports constant values, random ranges, or curves (Bézier or easing).
// Constant value
startRotation: 3;
// Random range
startRotation: { min: 1, max: 4 };
// Bézier curve example with scaling.
startRotation: {
type: 'bezier',
bezierPoints: [
{ x: 0, y: 0.275, percentage: 0 },
{ x: 0.5, y: 0.5 },
{ x: 1, y: 1, percentage: 1 }
],
scale: 2
};
// Easing curve example with scaling.
startRotation: {
type: 'easing',
curveFunction: (time) => Math.sin(time * Math.PI),
scale: 1.5
};
Optional
startSize?: Constant | RandomBetweenTwoConstants | LifetimeCurveDefines the initial size of the particles. Supports constant values, random ranges, or curves (Bézier or easing).
// Constant value
startSize: 3;
// Random range
startSize: { min: 1, max: 4 };
// Bézier curve example with scaling.
startSize: {
type: 'bezier',
bezierPoints: [
{ x: 0, y: 0.275, percentage: 0 },
{ x: 0.5, y: 0.5 },
{ x: 1, y: 1, percentage: 1 }
],
scale: 2
};
// Easing curve example with scaling.
startSize: {
type: 'easing',
curveFunction: (time) => Math.sin(time * Math.PI),
scale: 1.5
};
Optional
startSpeed?: Constant | RandomBetweenTwoConstants | LifetimeCurveDefines the initial speed of the particles. Supports constant values, random ranges, or curves (Bézier or easing).
// Constant value
startSpeed: 3;
// Random range
startSpeed: { min: 1, max: 4 };
// Bézier curve example with scaling.
startSpeed: {
type: 'bezier',
bezierPoints: [
{ x: 0, y: 0.275, percentage: 0 },
{ x: 0.5, y: 0.5 },
{ x: 1, y: 1, percentage: 1 }
],
scale: 2
};
// Easing curve example with scaling.
startSpeed: {
type: 'easing',
curveFunction: (time) => Math.sin(time * Math.PI),
scale: 1.5
};
Optional
textureSheetAnimation?: TextureSheetAnimationConfigures the texture sheet animation settings for particles. Controls how textures are animated over the lifetime of particles.
Optional
transform?: TransformDefines the position, rotation, and scale of the particle system.
Optional
velocityOverLifetime?: VelocityOverLifetimeDefines the velocity settings of particles over their lifetime. Configures both linear and orbital velocity changes.
Configuration object for the particle system. Defines all aspects of the particle system, including its appearance, behavior, and runtime events.