Penguin Particle Engine

Penguin Particle Engine

Description

Particle engines use graphics primitives as building blocks for more complicated images and effects. Some common uses for particle systems include precipitation, fire, flowing water, hair, and glowing effects. This can be done with a repeated image, rendered meshes, or more simple primitives like individual pixels. Generally, particle engines have two phases. In the logic update phase, more particles are created and existing particles are tested for removal and new positioning. Sometimes physics models are used when updating the positions of the particles to create more realistic effects. Then in the render phase, the particles are outputted.

This particle engine tracks every particle on the screen by creating a new instance of this class and pushing it onto a linked list. Each particle is controlled by a set of properties that describe its motion and life time. To determine a particle’s motion, it has position, velocity, acceleration, and whether or not it can bounce. For a particle’s life time it has color, timer, and timer step.

Particles can be made by manually creating a particle object and pushing it onto the stack, or they can be automatically emitted through the use of generators or explosions. Generators have their own set of parameters, similar to the particles, so they can create particles every frame with the similar properties. Explosions are derived from generators, but they create a certain number of particles within their parameter set all in one frame. The effect is more like a firework than an explosion.

This project has two parts: the actual particle engine programmed in C++/DirectX for Windows, and a word document tutorial on the algorithms used and how to implement them into your own programs. I already have most of the engine itself programmed, except a few minor improvements that I wish to add. The written tutorial is still in progress.

The name Penguin comes from the name of the variable for the instance of the particle engine object, "pengine", which looks a lot like Penguin. I thought it was cool. :)

Progress UpdatesPublic

One More Thing...

February 6, 2009 at 11:50 am by jakodrako

I'm also uploading one of the first versions of the engine itself! This is a very early testing environment of the engine.The controls are simple:Click the left mouse button to start creating particles where the mouse is pointing.Click the right mouse button to create a particle generator where the ...

First Draft of Documentation

February 6, 2009 at 11:43 am by jakodrako

I recently finished the first draft of the documentation that goes with Penguin.Currently there are four very simple sections on the requirements, algorithm, examples, and implementation. It is in dire need of expansion, but what I have is good enough for a post.It has been uploaded to the...

Writing Documentation

January 29, 2009 at 5:29 pm by jakodrako

I'm working hard on writing up the documentation that goes along with Penguin, but technical writing can be somewhat difficult yay. I'm also continuing to add little updates to the engine itself as I have time and as I come up with them. I'll hopefully post some version of the engine soon. Toda...

View All Updates

Project ForumPublic

There are currently no forum topics posted.

Team MembersPublic

Students