Particle Nodes UI

I added some new basic nodes lately: Random Floats, Random Vector, Random Vectors, Vector from Value, Multiply Vector with float, Multi Execute, Select.

Furthermore, I added a new Spawn Particles node. This is essentially a more generic version of the Explode node. In fact I removed the explode node, because it can now be build as node group.

I also updated how group nodes look like. They look more like built-in nodes now. The (G) in the node label still indicates that it is a group.
image

Groups can now be found in the ctrl+a search.

Tab can be used to quickly open and close the node tree of a group.

I started this node_lib.blend file: nodelib – Google Drive
For now it only contains the three groups from the image above. Will probably add more in the future.

16 Likes

Wow, excellent, magnificent
 When the asset manager will be ready it will be plug and play.
$ blender install fireworks
:wink:

2 Likes

I really like where this seems to be going, it reminds me to ICE somewhat, not exactly the same, but super powerful :slight_smile:

4 Likes

It’s really great! This is so inspiring!

Are the three node groups you newly created not built-in? I can’t find it in ctrl + a :roll_eyes:

1 Like

Practical node group, she can participate in more settings. Hope that the built-in node group soon。 :heart_eyes:

5 Likes

I just removed a couple of builtin nodes that can now be built using node groups: Change Color/Velocity/Size/Position, Particle Info, Kill Particle, Is in Group, Add to Group, Remove from Group.

There is a small new node as well: Join Text List.

I added a couple of groups to the group node library:

image

I implemented a simple “asset loader” to make working with this library easier. There is a new (temporary) Nodelib Files property in the user preferences. You can use it specify a directory that contains the library .blend file. It should automatically show you all the groups in the search when setup correctly.
image

16 Likes

wow I am really looking forward to play with these between christmas and new year!

1 Like

Ooh, super nice to now have the groups load automatically!

An idea: I’ve come across situations where it would’ve been very useful to get access to a vector list of a specific particle system’s current particle locations/velocities. Would that be difficult to implement?

1 Like

Hey @jacqueslucke a question, is the performance the same when you generate them builtin than when they are created in groups?

@AleksiTuomela We’ll get there eventually. What would be your use case?

@JuanGea Well, it is not “the same” but it should be close enough. Furthermore, it allows me to focus my optimization efforts on reusable components.

3 Likes

Well this is just one example, but I wanted to make dynamic “lines” between particles. I already have a nodegroup to make lines between two sets of vectors, but the idea was to create these lines between particles from a different system.


There will probably be more efficient ways of doing this with splines in the future, this is just experimentation :slightly_smiling_face:

The test above looks nice with some turbulence


10 Likes

That “close enough” worries me a bit.

If it’s “close enough” meaning that the performance is practically the same when handling 40/60 million particles (a bit less performant, but more or less on pair) using node groups or native nodes, then there is no trouble.

If the performance is worse when dealing with 100.000 particles, hence it will be terribly worse when dealing with several millions of particles, and that’s a problem.

I know it allows you to focus in optimization and reusable components, which is great, just try to avoid doing something that now seems to be a simple movement but in the future will be a bottle neck and will avoid us to work with complex production scenes, 40/60 million particles is pretty standard nowadays, and it’s a minimum to work with in production scenes :slight_smile:

Maybe a solution could be to provide a way to pre-compile node groups into native nodes that provide pure native performance.

3 Likes

I like Particle Nodes. I see great future for this engine. And there are some questions:

  1. Will be “rotation” and “spin” nodes/attributes implemented in “hard code” (like Position and Force)? How to apply “rotation” to a particle’s mesh/dupli?
  2. Why Random Vector is basic node? It can be build using “combine vector” and “random float”

  3. How the groups from the group node library will be placed to “add” menu? Now, in ctrl+a menu, groups placed without any structure, thay placed like in a heap. If the group node library will be contains about 200 or 300 groups (i see that real), then linear-list navigation (like ctrl+a menu) will be difficult, and understanding meaning of groups will be very hard. May be is good way to put some most popular groups directly in blender, “hardcode” the link to the “Add” menu?
  4. Do You planing use exits Blender’s groundworks in BParticles? For example: procedural pseudo-random generators - clouds, magic, musgrave, voronoi, wood; complicated particle behavior - newtonian, boids, fluids; different output types - metaboll, text, volume; and many other great features

1 Like
  1. As a hacky way, we could read the Nodelib folder with recursive of all subfolders and keep the structure in the menu.
2 Likes

Nice effect using the particle lines I mentioned above :slightly_smiling_face:

11 Likes

I tried myself on the deformation functions. Much fun.
I tried to do a simple 2d rotation of points around z-axis but somehow it doesn’t work even if it feels like it should. It does a 45 degree rotaion and then only scales when the angle is changed.
Maybe someone might take a look if it is my fault somehow?
https://www.dropbox.com/s/bb7ys8n4vlmklai/deform_02.blend?dl=0

I tried to use some of the particle nodes (the surface hooks mainly) to work on geometry but that also did not seem to work. Is that supposed/planned to work?

Aleksi, I love how that looks! Can you post the node setup for that (if different than what you posted above)? (And is it such that one could get it loop-able for a never-ending video background?

  1. Yes. I just did not implement this yet, but will do it.
  2. The Random Vector node is more than just Random Float + Combine Vector (e.g. if you are using the uniform on sphere mode). Still, we could implement it as node group, but I don’t want to do that for now.
  3. Hardcoding the structure is probably not the right idea. However, I agree that more structure is necessary. The functionality of the search box in Blender is rather limited currently. I wanted to improve that for a long time, but did not get to it yet. I agree, that having multiple hundreds of groups is likely in the future and that we have to plan for that.
  4. We will be able to use more procedural textures for sure, not sure how this will look like exactly in the end (there are multiple approaches). We will also get more complicated particle behavior for sure. We should be able to build these behaviors on top of the core particle system somehow. We will also get different output types. The current point/tetrahedron thing is just temporary.

@florianfelix Thanks for the test file. There was a bug that I just fixed. The sin/cosine nodes did not work correctly when they had a constant input (which they had in you case). I can make surface hooks work for the Function Deform/Points modifiers.

6 Likes

Mr. jacqueslucke, I saw in your report that you have been ill for a few days. Please pay attention to rest and drink plenty of water! Your job is great!

6 Likes