Interesting effects for particle physics...

Started by
6 comments, last by Hodgman 11 years, 1 month ago

In my Game Development classes, I commonly teach particle physics, to use for things like explosions and thrust. I'm wondering what other interesting things you might use particle physics for. Or different effects. Here is just a handful of some I've used.

Color Changing

Alpha Changing

Directional Gravity

Orbital Gravity

Friction

Jitter

Connective, like Leash/Elasticity/Follow/Evade

Bump Logic, Bounce, Screen Wrap.

One other odd one, was identifying the color/location of each pixel in an image, placing them in an array, using the location as a target with orbital gravity, randomizing each location, and adding friction. This created what appeared to be a star field that sat dormant, but when I activated its effects, all the stars on the screen pulled together to form an image. Was really interesting.

I would also use this to "morph" an image into another, but scattering the pixels and applying color changers to each particle, and adding a bunch of invisible particles where it needed to add them that faded in to view. It worked pretty nicely.

So, What other interesting particle effects have you seen/used. I'm creating a list for students to consider.

Moltar - "Do you even know how to use that?"

Space Ghost - “Moltar, I have a giant brain that is able to reduce any complex machine into a simple yes or no answer."

Dan - "Best Description of AI ever."

Advertisement

I implemented "random walk" which I have much use for. Maybe that is what you call jitter above.

You can always try my particle system implementation if you feel like playing. Maybe it will give you some ideas.

Link: http://www.dualheights.se/demorize/

Documentation on how to use the particle system: http://www.dualheights.se/demorize/reference/ch15s01s09.shtml

I'm also interested in trying new physics ideas so if you have any, please share and I can try implementing them in my system.

Code to detect if a particle is within the bounding volume of an arbitrary mesh or implicit surface (i.e. nurbs) using compute shaders

Using NURBS? It's a can of worms. Not even physics APIs support NURBS (Bullet doesn't for sure).

Most particle systems I've seen were tuned to simulate fuzzy phenomena such as smoke. Neither of the two examples above seem to fit. They're nice examples sure but I wonder if it's worth designing a PS so high-level it allows to do that.

There was a presentation for a Command & Conquer game floating around on PS, in which they discussed how they designed the system. Unfortunately, I cannot find the matching keywords right now. I hope somebody remembers this presentation as well and provides a link to it!

Previously "Krohm"

There was a presentation for a Command & Conquer game floating around on PS, in which they discussed how they designed the system. Unfortunately, I cannot find the matching keywords right now. I hope somebody remembers this presentation as well and provides a link to it!

Was it not possibly this one? http://www.2ld.de/gdc2007/EverythingAboutParticleEffectsSlides.pdf

The UE4 presentation for siggraph 2012 also had some pretty cool stuff on particle vector fields and other particle related stuff using CS

While touched upon in the C&C presentation, Halo: Reach also has probably one of the coolest little collision tricks I've seen-- basically treat the depth buffer as a heightfield and collide against that. Details are in the presentation located at the GDC Vault and a short summary is here.

clb: At the end of 2012, the positions of jupiter, saturn, mercury, and deimos are aligned so as to cause a denormalized flush-to-zero bug when computing earth's gravitational force, slinging it to the sun.

Using NURBS? It's a can of worms. Not even physics APIs support NURBS (Bullet doesn't for sure).

Most particle systems I've seen were tuned to simulate fuzzy phenomena such as smoke. Neither of the two examples above seem to fit. They're nice examples sure but I wonder if it's worth designing a PS so high-level it allows to do that.

There was a presentation for a Command & Conquer game floating around on PS, in which they discussed how they designed the system. Unfortunately, I cannot find the matching keywords right now. I hope somebody remembers this presentation as well and provides a link to it!

Bullet does not support Nurbs because they either don't have a solution to the problem, or they don't have an efficient way of doing it. Next gen rendering engines

would probably have support for Bezier and Nurbs patches via the tessellation shaders, there are examples available for both D3D and OpenGL. So Spline cages will be the way a lot of geometry can be rendered.

Particles are extremely easy to compute in computational terms because they require a low amount of processing per point and many particles can be simulated simultaneously using shaders.

The term "can of worms" is hardly correct.

The fact is, a solution was available in one of the Graphics Gems books for finding the nearest point on a Bezier curve - the solution is arrived by taking a numerical differential equation solver and applying it to a rearranged form of the Bezier generator function (quintic or order 5). Now the Bezier surface can be defined (via lookup) as the product of the generator functions of 2 curves (only 2 curves). I don't know what the equation to solve would look like.

Now supposing you have tons of parametrically defined objects, in a database where curves are curves, and flat edges are flat edges. A renderer would ideally be able to display this on GPU. In addition, if you could cut any curve by another curve or point set, then you could probably have a form of curvy BSP, and that concept is very interesting. but before you can make cuts, you need to determine the point set.

And for rendering particles, if they collide with a Bezier surface, or any parametric surface, it would be good to see a change in physics or colour. (obviously)

There is some information here http://www.flipcode.com/forums/thread/7269 using the http://en.wikipedia.org/wiki/De_Casteljau's_algorithm you could have a stack and a while loop instead of recursion to find out if you got a collision.

A common one for games is a ribbon rendering mode instead of a point-sprite rendering mode -- either stitching together multiple particles, or the history of a single particle to create a trail.

'Effector volumes' (not sure of standard term) are pretty useful -- if a particle is inside some shape, add a force. E.g. A cube of directional wind, or a cylinder or of circular wind for a tornado.

Depending on how advanced your class is, navier stokes and SPH would be a great advanced effect.

This topic is closed to new replies.

Advertisement