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.
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.
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 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.
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?
@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.
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.
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
Maybe a solution could be to provide a way to pre-compile node groups into native nodes that provide pure native performance.
I like Particle Nodes. I see great future for this engine. And there are some questions:
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?
Why Random Vector is basic node? It can be build using âcombine vectorâ and ârandom floatââŠ
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?
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âŠ
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?
Yes. I just did not implement this yet, but will do it.
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.
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.
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.
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!