Woo, a call for suggestions! My favorite!
Unity
Support for Unity would be a complete rewrite, and would heavily distract from PU's Ogre3D development. I'm against it, although partially for selfish reasons I guess. Besides, you never know when the Unity engine might come out with it's own particle editor.
_______________________
Suggestion: More Media Packs
While ParticleUniverse does come with some excellent samples, this could be expanded.
If possible, team up with an artist and develop some enhanced media packs like:
- Magic media pack
- Sci-fi media pack
- War Game media pack
- Weather media pack
Sell them separately for a bit of money, or charge only for a commercial license.
_______________________
Suggestion: Animated Mesh Import and Particle Attachment
It would be great to open up particle universe, import an animated character, and attach particles to character bones at a certain stage in the animation.
Example Functionality:
- load up a magic-user character (magic-user.mesh, animated)
- create a particle system called "glowing hands"
- attach the "glowing hands" particle system to the hand-bones of the character
- specify "glowing hands" to start 1 second into the "cast_spell" animation
- specify "glowing hands" to stop upon completion of the "cast_spell" animation
- hit the play button, and watch the magic-user character play the "cast_spell" animation with the "glowing hands" particles attached to his hands, as he waves them around to cast the spell.
- for bonus points: be able to activate a "fireball" ParticleSystem once the spell is cast, and have it shoot off into the distance. (This is a little more complicated, so maybe save this for later).
Exported Data Format
The ParticleUniverse plugin should not handle the runtime game logic for attaching particles to bones at certain points of an animation. Instead, it should export a separate xml file, something like this:
Code: Select all
<animation_particles>
<mesh>magic-user.mesh</mesh>
<animation>
<name>cast_spell</name>
<attached_particle_system>
<particle_template>glowing hands</particle_template>
<bone>bone_left_hand</bone>
<time_start>1</time_start>
<stop_at_animation_end>true</stop_at_animation_end>
</attached_particle_system>
<attached_particle_system>
<particle_template>glowing hands</particle_template>
<bone>bone_right_hand</bone>
<time_start>1</time_start>
<stop_at_animation_end>true</stop_at_animation_end>
</attached_particle_system>
</animation>
<animation>
<name>die</name>
<attached_particle_system>
<particle_template>blood spatter</particle_template>
<bone>bone_chest</bone>
<time_start>1.2</time_start>
</attached_particle_system>
<attached_particle_system>
<particle_template>blood spatter</particle_template>
<bone>bone_pelvis</bone>
<time_start>1.7</time_start>
</attached_particle_system>
<attached_particle_system>
<particle_template>blood spatter</particle_template>
<bone>bone_head</bone>
<time_start>2.3</time_start>
</attached_particle_system>
</animation>
</animation_particles>
(This data format could be fleshed out, but that's a good start.)
Stand Alone Viewer Program
Then, provide a sample stand-alone viewer program that loads this xml file, and plays the animations with the particles. Make this Ogre viewer as simple as possible, so that someone can use this code to incorporate particle-bone attachment easily in their own game.
Editor Requirements
The editor would need:
- a new tab called "animation" or "mesh"
- an ability to load and display animated meshes in this new tab (there may be some open-source Ogre3D mesh viewers you can borrow code from if you don't want to write this yourself, although it shouldn't be hard.)
- a drop-down list of all animations for the loaded mesh
- the ability to select an animation and play it
- some kind of simple interface allowing the user to specify a bone, a particle system template, and a time.
This is External Code and Data!!! (not in .pu scripts or implemented in ParticleUniverse.dll
I want to emphasize that all of this new data should NOT go into the particle script at all, because then you would be assuming way too much about how a project arranges their character and animation data. I can explain this further, or just trust me, it would be bad.
Instead, this is extra functionality of attaching particles to bones during an animation is built on top of the ParticleUniverse plugins and scripts. The user has to integrate it himself based on the sample viewer application. (This is very similar to how OgreMax provides a sample .scene viewer - but leaves the actual integration up to the user.)
Why this is Good
The huge advantage of this is so an artist can add one of their characters into the editor, and start playing around with attached particles. In many games, a majority of the particles are attached to characters like this in some manner. This would really improve the work flow. Right now, in my game, I have to make a ParticleSystem in the Particle Universe Editor, export it, add the data to my game, run my game, load the character, then see how it looks. Every iteration I have to redo all these steps, and it is very slow. Being able to do it all within ParticleUniverse Editor would be way, way better.