Particle Instancing/Clustering Ideas

I’m moving this to a new thread, with hopefully a better name.



Here’s the basic idea I had for instancing particles:


  • The Particle Mode dropdown list would get another ‘Instance Particles From Files’ option.


  • Options would be there for obeying the scale, rotation, etc of the max particle system in loading the instances


  • How to source UVWs for material lookup would have to be sorted (particle colours in the input files could be assigned to an arbitrary map channel, perhaps)


  • With ‘Load Multiple Files’ checked, it would use the particle ID to instance one of the multiple file sequences selected.



    This technique would let you save out a bunch of basic particle systems around the origin that are variations of each other, and then randomly have a master particle system instance from them. If you use the Vertex Color map to save UVW values from the original system, you could then make materials which combine the UVWs from both the master control particle system and the instanced system. A multi/sub map with the same number of entries as the ‘Multiple Files’ loader would let you control the material of each input instance separately, as well.



    On the other hand, you wouldn’t be able to have loaded particle files be the controlling system. To do this properly would take some more development, because the file format we’re using right now doesn’t let us save rotation and other values we’d want.



    How does that sound?



    -Mark

What happens if we don’t supply a file for the new “cluster” particles?



Can’t we just have each system particle generate a number of cluster particles based on some pseudo-random range? And offset the cluster particles based on the system particle’s position, rotation, and scale? For simplicity inherit all the material properties from the system particle.



Interpolating the cluster particle materials based on distance to a other system particles based on a search radius and the distance to the system particles would be nice though.

Using pseudo-random clusters is possible to add as another option, definitely. This could be based on a radius (scaled by the particle flow size channel) and a choice of gaussian/ball/other randomization choice.



Blending the materials would also be good, but that’s a bit trickier to do right. Here we could blend the colours that it produced, or we could blend the UVW and other channels independently, then call the material on those blended channels. The trick here is getting it to run fast. :slight_smile:



Probably not all of these options can make it into 1.0, but they’re all good ideas.

Just a tip, Box#1’s Initial State operator has a position variation spinner for amounts > 100%. I just grabbed 50,000 particles and made them render as 5,000,000 pretty effectively. Faster than doing 5,000,000 from scratch in many cases.