1 / 22

Particle Systems (Motion Machines of 2D Objects with Textures)

Particle Systems (Motion Machines of 2D Objects with Textures). Matthew K. Bowles Advanced Computer Graphics Spring 2004. Particle Systems. What are particle systems used for? Why do we care?. Particle Systems. Properties: Evolves (not static). Procedural (state machines).

langer
Télécharger la présentation

Particle Systems (Motion Machines of 2D Objects with Textures)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Particle Systems(Motion Machines of 2D Objects with Textures) Matthew K. Bowles Advanced Computer Graphics Spring 2004

  2. Particle Systems • What are particle systems used for? • Why do we care?

  3. Particle Systems • Properties: • Evolves (not static). • Procedural (state machines). • Non-deterministic (randomness). • Simple (computationally efficient). • LOD is easy (particle count & size). • Good at complex objects (grass). • Good at amorphous objects (fire). • Good at complex behaviour (explosions).

  4. Particle Systems • Process: • Generate new particles with initial attributes. • Kill off particles destined to die. • Modify particle attributes. • Render remaining particles.

  5. Particle Motion • State Machines • Two primary methods for modeling transitions. • Age- • State transitions due to the temporal plane • Collision Planes- • State transitions due to the spatial plane

  6. Particle Systems • Variance: • For all particle attributes we want to provide some randomness in order to make the system seem more natural. • Result = Mean + Variance * Rand()

  7. Particle Motion • Position(x, y, z): • Position = Position + Velocity * Delta_Time • High variance = Rain & Star field • Med variance = Fire & Grass • Low variance = Fireworks & Fountains • We only draw living particles.

  8. Particle Motion • Velocity(vx, vy, vz): • Velocity = Velocity – Acceleration * Delta_Time • High variance = Fireworks & Fountains • Med variance = Fire & Grass • Low variance = Rain & Starfield • The motion is dependent on the relative velocity of each component.

  9. Particle Motion • Acceleration(ax, ay, az): • Models the sum of the forces on a particle (typically constant over an entire set of particles). Might change as a function of the current state. • X and Z often differentiated from Y (i.e., most 3D models maintain Y as the dimension with Earth’s gravity).

  10. Particle Motion • What about using a direction vector and a velocity magnitude for modeling motion? (d,|m|) • More useful for 3D objects, which must maintain an orientation. • Particles have no orientation.

  11. Particle Motion • What about using global accelerations? • Pros – Uses less space and easier to maintain. • Cons – Supports a limited set of particle sets.

  12. Particle Objects • Idea – • A particle’s shape is essentially the same, no matter what side of the particle we are looking at. • Result – • We render a particle as a 2D object. • Problem – • What about the change in shape due to the camera view?

  13. Particle Objects • Bill Boarding • Rendering a 2D object so that the surface of the object is always perpendicular to the camera view vector. • v0 = vCenter + ((-vRight - vUp) * (particle_size / 2)); • v1 = vCenter + (( vRight - vUp) * (particle_size / 2)); • v2 = vCenter + (( vRight + vUp) * (particle_size / 2)); • v3 = vCenter + ((-vRight + vUp) * (particle_size / 2)); • Where vCenter is the location of our particle, and vRight and vUp are taken from the model-view matrix.

  14. Particle Objects • Do we have to build a quad for a particle? • Building the quad and executing the Bill Boarding algorithm takes some overhead processing.

  15. Particle Objects • Many graphic languages (DirectX and openGL) implement point sprites. • Point sprites • Build the quad and execute the Bill Boarding algorithm on the GPU, thus saving CPU processing time.

  16. Particle Textures • RGBA – • Red, Green, Blue, and Alpha… • What is alpha? • Alpha used to model opacity (solid objects) and translucence (i.e., glass, water, etc…) • Lower Alpha  Greater Opacity • Higher Alpha  Greater Translucence • Is Alpha all that we need?

  17. Particle Textures • We must enable blending and specify how to blend with a blending factor for source and destination. • Source Incoming Fragment Color (Rs,Gs,Bs,As) • Destination Stored Pixel Color (Rd,Gd,Bd,Ad) • Source Blending Factor (Sr, Sg, Sb, Sa) • Destination Blending Factor (Dr, Dg, Db, Da), • (RsSr+RdDr, GsSg+GdDg, BsSb+BdDb, AsSa+AdDa)

  18. Particle Textures • We model the particle as a quad (i.e., a square). However, most particles don’t look like squares… What’s the deal? • In our particle texture we render some portions invisible. We do this by specifying a clear color and setting the invisible portions of the texture to the same RGB values of the clear color.

  19. Particle Textures • What about RGB? • We modulate the particle color with the particle texture so that we can have a dynamic color variance between particles (i.e., we would like to use a limited amount of textures, so we can’t support to many different colors with just texture).

  20. Particle Textures • Other considerations? • Disable hidden-surface removal. Particles must blend colors with the objects behind them. Therefore, we must consider all objects that are hidden by particles.

  21. Particle Systems • Advanced Work • Modeling complex physical phenomena using real world physics. • Flocking (modeling particles as boids) • Remember the limitations on motion and shape we stated earlier. We lied. There is a whole other world out there.

  22. Particle System References • William T. Reeves, Particle Systems - A Technique for Modeling a Class of Fuzzy Objects”, Computer Graphics 17:3 pp. 359-376, 1983 (SIGGRAPH 83). • www.cs.otago.ac.nz/cosc455/ParticleSystems.pdf • www.opengl.org • www.codesampler.com • www.gametutorials.com • OpenGL Programming Guide (Addison-Wesley Publishing Company) Second Edition 1997

More Related