Dev:Ref/Requests/Future particle system features

提供: wiki
移動先: 案内検索

With the upcomming 2.40 release Blender will have many additions to it's particle system's capabilities. Still there's much more to be wanted!

Here are some future features/ideas that I would like to work on (hopefully not alone!).

Feel free to add any ideas of your own or take up coding these.

General

multiple particlesystems on one object

I see three alternatives here:

  1. use the current "effect" approach and just actually use more than the first effect on the list (multiple p.sys were allowed before but only first one was ever actually used)
    • propably quite easily implemented as the effects list allready is in the code
    • but for the future I think we should ditch the effect system totally!
  2. tie the particle system into the modifier stack and allow multiple p.sys modifiers
    • will solve the problem of from which modified version of the mesh the particles should be emitted
    • will allow many interesting possibilities like to explode a mesh with first p.sys, then emit particles from the shrapnel with another!
    • but will have to be properly thought through before implementing
  3. something completely different?

datablock-like structure

It should be possible to name, copy and organize particle systems within an object and between objects.

non mesh emitters

All "physical" objects (not lamp, camera etc.) should be able to emit particles. This could be made by taking the particle emission step completely out of the current p.sys generation code and have a simple "give next particle"-function for each emitter type.

make particles calculation dynamic

Ton would want that particles were calculated on the go and that the current system would be made a bake-function to the dynamic calculation like softbodies work now. I'm a bit unsure though as particles are much more initial condition dependant than softbodies, meaning that softbody calculation can allways be started from the vertices' rest position but what would the allready emitted particles do when the system is reseted midway of their life?

Textures

choose used channel

It should be possible to choose what channel of the texture is used for the calculations. Natural choices would be r,g,b,int.

support uv mapped textures

For this an individual particle should know a bit about it's emitter mesh. For example the face and coordinates on the face it was emitted from.

Motion

individual rotation for particles

Dupliverted objects could be made much more realistic if the particles would have random/controlled rotation different from eachother and not just in the direction of the particles velocity.

edit individual particles path in 3d view

It should be possible to edit a single particle's key position/velocity manually. This could be made possible by allowing the whole system's or marked particles' recalculation locked so that you won't lose your modifications whe the system is recalculated.

Min/Max Speed

If particle speed could be constrained in a certain range, it would allow to make hairs with fixed hair lengths that would look much more realistic in animations (now they have an elastic look) and it would also be possible to do chains with particles (you need to have a fixed interval between particles to make sure that the chain doesn't "break")

boids

That is to have dynamic "living" behaviour between particles them selves and between their surroundings (obstacles). Would be very nice but would need atleast the system's calculation be made dynamic or so that particles are calculated in parallel with eachother.

Effectors

radial falloff for wind effector

The current wind effector acts as a global wind that pushes the particles everywhere with the same force. Radial falloff/maximum value would enable for example a hair dryer to be made that only effects particles directly infront of it.

tangential damping for deflection

The current deflection damping only effects "how high the particle will bounce" when it's deflected. This causes particles's velocity normal to the surface to die but the tangential velocity will stay there or even get bigger! The result is totally unrealistic if one wants the particles to stick to the surface once they don't bounce on the surface anymore. On the other hand the whole deflection code is generally a big mess and should propably be recoded.

paths interpolated from guides

An idea from lukep. Guides currently use an area of influence to effect the particles. This results to much tweaking needed to make particles go where you want them to. A better/alternative way would be to interpolate all paths directly from the nearest guide curves. The problem however is how to find out which curves are "the nearest" for an arbitrary surface with an arbitrary number & configuration of curves.

multiple guides in a single curve object

  • would allow simultaneous editing of many guides
  • moving hair made much easier (for example changing one softbody setting on 10 guide curves and then baking them all separately is very tiresome)

Should be possible by creating a new "where_on_path" function to take all separate curves in an object in to account, not just one curve as it is now with the path functionality.

Python

As I don't really have python experience these will mostly be left for anyone interested.

access to individual particles

python effectors