# How are done "snake" particles?

I thought that particles were basically GPU-powered sprites. After looking at the following demo, I'm not totally sure of that anymore : http://vimeo.com/18715688

How are done those snake-like particles ? I don't see any defect in the shape, and I assume that there is not a particle for each pixel unit of a snake.

## 1 Answer

A sprite is only the simplest type of particle. It's also possible for particles to have more complicated geometry. There's no reason in principle a particle can't have an arbitrarily complicated mesh, aside from performance constraints. A particle can also have procedural geometry, which can be animated over time just like the rest of a particle's attributes.

It's also possible for multiple particles to be attached together for either simulation or rendering purposes. E.g. for simulation you could put springs between particles, and for rendering, instead of generating a mesh for each particle you could have each particle just contribute a set of vertices, with triangles stretching between multiple particles. A 1D string of particles, each attached to the next, is commonly used in games for rendering things like sparks and trails. Another example is a cloth simulation - basically a 2D grid of particles with spring constraints between them, where the particles also serve as vertices for a triangle mesh.

It looks to me like this is what you have in those videos. I would guess that each "snake" is actually a 1D particle string, where each particle has a ring of vertices, and triangles are stretched from one ring to the next to create a tube, which is what you see rendered. Each particle independently controls its position, orientation and radius according to its rules (which may well include some type of springs between adjacent particles, to keep the whole snake together).

• But how can the particles be so smooth ? It almost looks like metaballs Commented Aug 25, 2013 at 10:04
• @NisonMaël There might just be a lot of particles in each snake, plus there could be some smoothing applied to the mesh after it's generated. Commented Aug 25, 2013 at 18:57