|
![](/i/fill.gif) |
Hi everybody!
I have been working on a POV particle system some time ago.
Unfortunately, my main hard disk crashed last month and I could not
recover these include files from my backups. So I spent some time
re-writing it from scratch and it starts being usable again. It uses
several features from POV-Ray 3.5 beta, so it will not work with 3.1
or with MegaPov (although it could work with MegaPov if some macros
are adapted).
Now the system is almost ready for beta-testing. If you want to be a
beta-tester, I give you the opportunity to play with my particle
system but I expect something back from you: bug reports, comments,
suggestions for improvements, nice example scenes, and so on. I do
not know how much time I will be able to spend on this (I also have a
life) so I make no promises about what will work or when it will work.
But if this is OK for you and you are serious about beta-testing this
stuff, then please send me an e-mail and I will tell you how to get
the file (currently, everything is in one include file). Some parts
of the API may change during the testing period, so you should
probably not expect to create anything really serious with this file.
If everything works, I will soon post a first animation that I created
with this system in the group povray.binaries.animations.
Here is a list of features:
- Free for commercial or non-commercial use, including distribution of
modified versions. No credits required in scenes using this file.
- Very flexible physics system using a procedural API similar to the
"Particle System API" described on http://www.cs.unc.edu/~davemc/Particle/
although this one is entirely based on the POV SDL and supports additional
features such as springs between particles, orientation/spin, etc.
- Variable time step allowing a greater precision or faster speed; automatic
adjustment during animation to match the timing of the frames. The number
of iterations is decoupled from the number of frames, so it is possible to
generate a preview animation with less frames.
- Can be used for still images, animations and cyclic animations.
- For testing or for special effects, it is possible for all particles to
leave a visible trace of their path (using cylinders or a sphere_sweep).
- The particles can be generated by different types of sources: simple shapes
such as disc, box and others, or inside any solid POV object, or on the
surface of any POV object.
- Any transformation can be applied to the sources, so they can move freely.
- For an animation, the particles are generated from the source(s) at a
specified rate even if the time step or number of frames changes.
- The particles can bounce or glide on the surface of any object.
- A simple model of contact forces on the surface of an object allows to
create some effects such as dripping water (water drops under an object).
- It is possible to have several particle systems in one animation. A
particle from one system can become a source for another system or can
trigger a new source when it hits something. This can be used to create
a splash in the water after an impact from a particle or to have smoke
trails following several moving particles.
- Many forces and actions can be applied to all particles or only to the
particles that are in a specified region of space. For example, particles
falling into the water will be subject to different conditions (viscous
drag) than the ones that are moving in the air.
- Because everything is based on a procedural API, it is possible to change
almost anything in the scene during the simulation: add or remove sources,
change the gravity, wind or other forces, freeze or slow down the system...
- The procedural API could easily be integrated into POV-Ray itself: most SDL
macros could be re-written as internal functions for greater speed. The
syntax could even be the same as the current one.
Things that are still missing:
- I still have to add some macros for simulating complex behaviours: following
some particles, trying to increase or decrease the average distance between
the particles in a given neighbourhood, etc. I am planning to implement
some of the "boids" behaviours.
- The current system uses a very simple integrator (Euler's method). This is
fine for most simple cases but it does not work well if very stiff springs
are used (the system becomes unstable). I should use a better integrator
(Heuns, Midpoint, 4th order Runge-Kutta, ...) but re-evaluating the forces
and velocities at several points in time is not easy in a system based on a
loop that calls several macros. Maybe I should merge pps_move() into
pps_iterate() and then tell the user that the time may go back and forth
during the iterations. Suggestions are welcome...
- I have to add some example scenes. I need more examples of materials that
can be used for the particles in order to simulate fire, smoke, etc.
- The only documentation available for the moment is in the include file
itself (lots of comments). I should write a separate documentation file.
Note that due to the hard disk crash that I experienced, I am
currently not able to update my web site (as listed in my signature)
so you will not find any POV-Ray stuff there, yet.
--
http://www.gamers.org/~quinet/
Post a reply to this message
|
![](/i/fill.gif) |