Particle System Design

Started by
9 comments, last by mittens 16 years, 9 months ago
hey again i have finished my (very) basic particle engine and am now in the design stage of my full system i have a first draft of features but just want to double check that i have all the essentials so if you think something is missing or needs to be changed please let me know or if you want to suggest a cool feature not already on there ..thats good too • Particle Grouping o Group Sizes o Rotation around centre o Attraction and repulsion within the group • Alpha Blending o Variable blending types • Variable emission rates o Emission rates that change over time o Emission to max particles o Emission to time limit • Variable particle sizes o Particles sizes that change over time o Different particles sizes for each particle o Random particle sizes within a range • Variable particle colours o Colour Cycle o Colour Change while running(on function call) o Colour change over time • Emission Patches o Particles emitted from lines, line strips and points o Particles emitted randomly from within a polygon  Possibly point weighting o Transformation of patches  On the fly and set pre-calculated transformations o Morphing  Morphing of individual points within the patch • Emission control o Emit towards a point o Emit away from a point o Emit in a direction o Emission flight paths  Possibly variable flight paths  Possibly Flight path cycle  Possibly Flight path change on the fly  Possibly emission flight path equation plug-ins • Velocity inheritance o Adjustable Percentage of velocity inheritance • Variable velocity and inheritance rates • Burst emission • Particle ribbons • Positional adjustments o Set up areas around the system that change the properties of the particles when they pass through it o Multiple areas o Multiple changes per area • Particles textures o Texture animations o Texture transformation o Decals o Support for shaders(height maps mainly) • Particles types o Quads, triangles , custom etc… • Constant systems • Particle attributes o Individual attraction/repulsion o Inter-particle collision detection • Pluggable or overridable control of particle movement o example sinusoidal motion or even AI • Pluggable or overridable particle renderer o a classic renderer might render each particle as a sprite or a geometry instance, another renderer might draw lines between particles for a lightening or web effect, another renderer might distort a nice blue shaded geometry-grid based on particle positions for a water effect. • Super emission(particles emitting particles) Thank You a lot of there were suggested in a previous thread so credit to original sugesters and not to me
--------------------------------------EvilMonkeySoft Blog
Advertisement
bump for double checking
--------------------------------------EvilMonkeySoft Blog
Hehe I remember this [smile]

Just an idea but how about conceptually...

Particle Emitter
• Emission Patches
o Particles emitted from lines, line strips and points
o Particles emitted randomly from within a polygon
 Possibly point weighting
o Transformation of patches
 On the fly and set pre-calculated transformations
o Morphing
 Morphing of individual points within the patch

• Emission control
o Emit towards a point
o Emit away from a point
o Emit in a direction
o Emission flight paths
 Possibly variable flight paths
 Possibly Flight path cycle
 Possibly Flight path change on the fly
 Possibly emission flight path equation plug-ins

• Variable emission rates
o Emission rates that change over time
o Emission to max particles
o Emission to time limit

• Velocity inheritance
o Adjustable Percentage of velocity inheritance

• Variable velocity and inheritance rates

• Burst emission


Particle Controller
• Particle Grouping
o Group Sizes
o Rotation around centre
o Attraction and repulsion within the group

• Variable particle sizes
o Particles sizes that change over time
o Different particles sizes for each particle
o Random particle sizes within a range

• Variable particle colours
o Colour Cycle
o Colour Change while running(on function call)
o Colour change over time

• Positional adjustments
o Set up areas around the system that change the properties of the particles when they pass through it
o Multiple areas
o Multiple changes per area

• Constant systems

• Particle attributes
o Individual attraction/repulsion
o Inter-particle collision detection

• Pluggable or overridable control of particle movement
o example sinusoidal motion or even AI

• Super emission(particles emitting particles)


Particle Renderer
• Alpha Blending
o Variable blending types

• Particle ribbons

• Particles textures
o Texture animations
o Texture transformation
o Decals
o Support for shaders(height maps mainly)

• Particles types
o Quads, triangles , custom etc…

• Pluggable or overridable particle renderer
o a classic renderer might render each particle as a sprite or a geometry instance, another renderer might draw lines between particles for a lightening or web effect, another renderer might distort a nice blue shaded geometry-grid based on particle positions for a water effect.


Particle System
• References a ParticleEmitter, ParticleController and ParticleRenderer
• Could be responsible for storing the particles?
• Mediates particles between the above 3 classes.
aha...hello again

funnily enough i had just grouped them but looking at it yours makes more sense :)

thanks
--------------------------------------EvilMonkeySoft Blog
My idea of a particle system has been starting a bunch of pixels off with different positions and velocities and letting them fade away for blood splashes and stuff but apparently there is more to it than that 'eh? Can somebody enlighten me as to how you would use geometry primitives (triangles, quads, etc) as particles?
Instead of drawing a pixel, draw a quad. In 2D its as simple as that, in 3D you probably want to transform each quad to face the camera.
Maybe I need to pay more attention to particle effects in games, it just seems weird to have a bunch of shapes flying around after an explosion or something. Pixels look like dust but squares, triangles? I'm clearly wrong on this, it just seems strange to think about it.
I think a fairly standard approach would be to render quads facing the camera, and use an alpha map to blur the particle (e.g. use a circular falloff gradient)
Quote:Original post by My_Mind_Is_Goingbut squares, triangles? I'm clearly wrong on this, it just seems strange to think about it.

They don't appear as quads/triangles onscreen -- the particles have textures with alpha so you can't see the borders! Using 'pixels' is almost useless; many modern engines don't even use/manipulate pixels directly, because resolution independence is so valuable.

Well everything I know about particles I learned from an Andre LaMothe book =) which probably explains my confusion.

This topic is closed to new replies.

Advertisement