← All ideas

Particle Nodes

Why?

I think blender has a good particle system but it has some features that doesn't work. For example, subframes for particle spawning. I mean, subframes only affect position of particle not their spawn. so for example if I have an emitter moving quickly, some gaps will be left between particles: For Example: goo.gl/UZVB4z (Blender StackExchange Post) Other missing features are:

  • External cache (There is an option to enable it but actually doesn't work as far as I know).
  • Control Over Material, You have very few control on materials for particles, for example, their color, alpha etc.
  • Control Over secondary particle system. The possibility to generate streaks for particles is currently a thing, but it serves no other purpose other than making the of a particle clearer.
  • Fast Render Method. This one is a thing that maybe people won't agree with, but anyway, With the upcoming Release of Blender 2.8, Blender Internal will be removed and with it the Halo Material will be gone aswell. Halo Material was the last possibility of a fast way to render motion graphic using particles. Now We could use object and depth of field, like Iago Mota does or simply use a volume shader, but this way are yes physically correct but veeery slow to render and especially the second, takes time to load.

Some Important Considerations:

This Particle Nodes System will work only for Emission Particles and Not for hairs. Second, ParticleSystems for Emitter Type particles would be replaced with nodetree, so a nodetree for each particle System. The Particle Node Tree would be a property of an object, a bit like a material that can be shared within multiple object but will render the specific object it's applied to. (More of That Later). This concept can in a certain way with a Blender Addon or Animation nodes Addon, But, these two methods would generate an object for each particle and if you try that you'll find it's impossible to handle 1000 or more object in the scene. I cannot use vertices of a mesh because it won't leave any flexibility for color and things like that. So this system basically needs a new Object , a c++ class Called For example Particle that would be able to be displayed in the 3d viewport like blender default's particles do. And Then a new Render Engine would be needed to render particles a bit like Old Blender Internal halo Material used to do. (More on that Later).

So:

I was thinking of a way to fix these "problems" in a way that could make blender particle system more modern. So I thought of this: Particle nodes. Most 3D software these days work using nodes but this isn't the only reason. Nodes will lead to a bigger flexibility. How? This is the main Idea:

Nodes:

Particle From Object: This node will be present for a maximum of 1 Time for each node. This particle will generate x number of particle from the object, the UI would be similar to blender particle emission tab, With an Emission , Rotation panels and etc. It Wont Con'tain this section (I'll later explain why):

  • Render
  • Display

It would output a Particle socket containing all the particles.

  • Node Basic Concept Image:

alt text

Particle From Particles: The ui For this node will be very similar to the Particle From Object node except for the fact that it won't contain the Emit From section. This particle will generate x number of particle at a particle Location. For example, if the emission Rate is set to 10, it will generate 10 particles for each particle in the "Particles" Input. It would output a Particle socket containing all the particles.

Render Particle: I Have two ideas for this node: the first one is it being the section Render of blender's particle system but I think it would be even better if we added a material socket for a very simple node based materials. So particles will not render if not plugged into this node Particle input. If the second option is taken into account: we will need some more nodes:

  • Create Simple Material : This node will create a simple material that will display the particle as a Bubble , Box , or Cloudlet and even more. It will have only one input: Color and output a Material type ouput.

The way of choosing color for a particle is a bit abstract and I haven't figured it out yet, but would be a way that takes into account a particle attribute, for example speed.

  • Create Color : This is node could be the one creating the Color for The material input. It would let you choose a particle attribute, for example speed, and will take a Particle Input and look in that particle list the max and the minimum value for the attribute you inserted, it would normalize that in values of 0 and 1 and output that value to let's say a Color Ramp. I know that this explaination can be not as clear as I wanted, I am trying to realize a concept to better explain it.

Filter Particle This nodes would do the simplest thing in the world. It would simply take a Particle input and output a Particle socket too. It would filter particles in the input based on some criterias. for example is an attribute, like location.x is greather than 2.0, and then output the filtered list.

Secondary Nodes this nodes are normal nodes that are already more or less there in blender or do basical things. These nodes are:

  • Math
  • Color Ramp
  • Value
  • Mix Particle Materials. (Like the blender default but for particle Materials).
  • Get Frame Time
  • RGB Curves

and some more.

Ok, I will try to explain my idea as clearly as I can.

But There's More:

Also Blender Default way of handling Particle would be a little tweaked. For Example, instead of the default Particle Number would be replaced with a Particle/Frames Approach This will make particle number Keyframable and when the number of Particle/Frame is less than 1 the code will start working with probabilities, for example: Number: 0.2 will lead to a 20% Probability of A Particle Spawning That Frame. And Also. You would be able to generate child of child of child and so on, just by linking a Particle From Object output to a Particles From Particles node and its output to a Particles From Particles node again and so on.

In Conclusion: This took me a while to write and I am sorry for any error in the text. If you have any question, feel free to ask!

ParticlesFromObject.PNG

100%

Development Status: Open

Upvote 17 Downvote 0
Fabrizio
23 May 2018

5 Comments

Fudushae

If we don't get particle nodes on 2.8 stable release, I hope at least they reorganize particle system panels to be more user-friendly to buffer until nodes can be implemented during 2.8+ phase, if that is the plan.

1
LloydAlmeida

Totally agree. blender should adopt nodes for Particles and Modifiers. Can be still stacked if users want, but could be setup using nodes.

1
Draise

@darkstarmail: The unreal Engine particle editor way of the future.

Draise

Softimage ICE or Houdini workflow to particles would be..... huge. And a feature worth having to be competitive. You can only do so much with the stack, opening up to nodal workflows would be.... liberating.

1
o.mangold

The particle from particles would have one interesting use case. When creating plants using hair particle systems, it would be great to allow to nest these several times. Doing this with nodes would make sense, I guess. One thing I'm not clear abouth, though, is how the particle indices should be passed to materials, as these would become vectors of variable length.