Thank you, thank you.
Here is a short explanation of what we are doing and the results.
We implemented a "Particle System" (I prefer Manager, it's not really
a system) in Java3D.
Our first attempt was simple using TransformGroups, Shape3D's and behaviors
for every particle object.
This works, but of course, is way to slow. However, it is no
too slow because of Java3D or something else, it is simply because using
many Transforms and Behaviors is going to be expensive.
In gaming, a particle system is usually two classes may be even one,
the particle, and the particle updater or manager.
We reviewed several straight OpenGL and D3D particle systems before
implementing our second system. All of the systems we found only
use a Quad or TriStrip for each particle. When that is the particle's
geometry, optimizations can be set up to take advantage, so only TWO full
vector transformations need to be computed for the entire system to be
"BillBoarded" correctly. So we knew we would try this technique using
no TransformGroups, one Shape3D, and one Behavior. To do it right
we needed to get as close to the GL_TRIANGLE level that we could in Java3D.
With help from Uma and Kelvin, we have implemented two different version,
one using the direct set methods in GeometryArray and one using the by-ref
mode of GeometryArray.
First off all, both methods where orders of magnitude faster than the
multiple TransfromGroup/Shape3D/Behavior method. We still had some
rendering problems, but that is practically fixed in the pre-beta.
Second, once the by-ref method was up and running we got another 100%
increase in frame rate (for our particular particles test case anyway and
on a GeForce H/W T&L). Needless to say it was much faster and
looks great!
Now making a particle system like this is not nearly as versatile as the full TransfromGroup/Shape3D/Behavior system. It can only do billboarded and usually alpha textured quads. This is the classic particle engine in games. Sometimes you need real geometry that had independent rotation, etc. I call that Debris (from my simulation days) so we are planning to keep the original system and improve it to complement the particle system when that kind of look is wanted.
I attached a picture for fun.
For those interested, I plan on writing all of this up more formally
with code and benchmarks soon.
--
___________________________________________________________
Shawn Kendall
Full Sail Real World Education
Course Director
3300 University BLVD
Real Time 3D for Gaming Winter Park FL
32792
[EMAIL PROTECTED] http://www.fullsail.com
___________________________________________________________

