ArMans notebook about what modern particle system should be capable of

Yesterday I played with Blenders particle system and it made me want to make a list of what a good particle system should be to make it more usable. Some features are already in Blender.
If you have any ideas or some of already listed are bad, please tell me and I will update it.

Visualization

  • Engine should be able to show those particles that has different settings to make it easier to see why they act differently.

  • Engine should be able to show the flying paths / rotation / velocity of selected particles.

  • User should be able to hide the visualizations that he don’t currently need.

Editing

  • User should be able to select any of the particles and change their individual local settings to something different than what the global setting is.

  • User should be able to add world settings to a particle system. [x]

  • User should be able to tweak the flying paths manually, or delete those particles that does not do what expected without baking whole system.

  • There must be possibility to add force fields to effected particles. (gravity fields, tornadoes etc.) [x]

  • User should be able to effect with the particle system a mesh textures and displacement. [x]

  • Fluid particles. [/]

  • Ability to remesh particles to a realistic fluid mesh [/]

  • Change material settings (for example emitter strength, or color ) with the particle values like rotation, velocity, speed, size and life time [/]

Usability

  • There should be some pre made settings to select and tweak if you have to do production ready very fast and have no time to create new system. Few possible pre made particle scenes: galaxy, fire, cloud, tornado, rain, snow rain. [/]

  • Every setting must have clear tool tips. [/]

  • User should be able to lock settings. For example individual particle selecting, so he don’t accidentally select them, if he don’t want to.

  • Unexperienced user should be able to use wizards to walk trough the settings so he learns faster some common settings.

Why am I collecting this list? Well I realized that currently I am not doing anything for Blender. except donating 5 € / month and it is not very much. So I started collecting this list. I hope it is not waste of time, or make any dev annoyed, because it is not the point. I’m trying to do research so for the next person who ever it is, it will be even little easier to collect data when ever it is time to add some hours to particle system. Today I added some new points and I am all the time trying to do this little more clear and easy to read. Currently it is just a list of features, but I’m planning to create some real user stories.

User story introduction
Patrick wants to create an animation where he has 499 white balls and 1 red ball falling down the stairs. When the red ball reaches camera, will the camera start following it. Every time a white ball bounces, it will changes color for a fraction of second to a light pink and fades back to white.

supplies:
Patrick has a White ball model, red ball model and a stairs model.

Steps:

  1. Patrick creates a plane and when it is selected, he clicks “create new particle system” -button.

  2. Patrick selects the stairs model and from physics settings he enables a “collision” option. Now when played will the particles still fall trough the collision object, because Patrick has not yet selected physics for the particles.

  3. In particle settings, an emitter selected Patrick goes to Particle type tab where he can select as which the particles will be rendered on the screen and in the render engine.

  4. Patrick selects “object”. Now he has an additional option to select of which objects he wants the emitter emit. He selects the White ball.

  5. Patrick has to change the white ball object to become Rigid Body from the physics settings. He does that same also at this time to the red ball.

  6. Now when played the white balls will bounce from the stairs. Patrick can also adjust the gravity and collision object size from the physics settings. Collision object size is displayed on the screen as dotted line around the ball.

  7. Patrick selects “enable particle selecting” option from the particle world settings. Now he can select any of the particles or multiple at the same time. When particle is selected, the 3D display will show it’s flying path with a Bezier curve. It can also be disabled to not show.

  8. When Particle is selected, Patrick selects “enable particle local settings” -button. This creates to this particle it’s own local settings that can make it act differently than other particles.

  9. Patrick changes that particle to become a red ball instead of that white which it was before.

  10. Patrick adjusts the flying path of this particle by editing the curve.

  11. Patrick selects the curve and duplicates it to a regular Bezier curve that can be made for a path for the second camera to follow.

  12. When a red ball is close of the first camera, Patrick creates a key frame that changes the main camera to that second one which is following the red ball. That camera is set up to always target to that particle with constraint.

  13. In Cycles nodes Patrick uses particle info node and velocity from there for the white ball material to change light pink when ever its velocity is less than some of his chosen value.

  14. Now his animation is ready to render.