Particle Attributes and Implicit States

Matt Ebb, well-known Blender coder and artist, has pointed out a potential problem with the current design idea for accessing per-particle data, that is, attributes and all subsequently calculated values. If you have some parameter on a node that you want to set depending on some particle property, be it a common property like position or velocity or a custom user attribute, you can read that data with a special node:

Using the age property for simple per-particle force strength

Writing and reading a custom attribute

The problem with this way of reading particle data is that the data node is referring to some implicit particle state, which depends on the final node to which it is linked. For instance, in the following case the particle age attribute is used for two different modifier components, so the data it delivers may be completely unrelated (e.g. from different emitters or disjoint groups) and depends on the respective particle input state of the caller:

MyAttribute used in different contexts

The first step to resolving this situation would be to simply disallow the use of per-particle data in unrelated nodes. The particle data input node and subsequent math would have to be duplicated or put into a group node for instantiation.

One separate node for each user

However, this still does not remove the notion of an “implicit state”: the result of Particle Data nodes depends on the context of their use and it requires following links to the user nodes (Force and Gravity) to find out what particle data they actually refer to.

If we were to straightforwardly add stream inputs to the attribute reader nodes it would make the state relation explicit, but on the other hand introduce a lot of complexity. In the following example the attributes are read from a specific input stream. Pay attention to the second attribute node on the right side: the input stream differs from the target output, the Age property is modified after the input link to the reader node! This means that the values read from particle attributes in this case would need to be stored in memory, so they can be reused in the rightmost Gravity node. A lot more complicated situations could arise when particles are added or removed between reading and writing of attributes or when source and target streams are unrelated.

Explicit particle inputs to attribute nodes

This situation could be avoided by removing “data” nodes altogether and only use stream socket connections for particle data flow (white squares). But this would in turn mean that parameters can only depend on constant, animated or driven values, not on any per-particle attributes! Without a replacement for attribute access it would result in node trees that are not much more useful than the mesh modifier stacks currently in use, where there is no way whatsoever to influence modifiers other than user-defined vertex groups.

Scripted expressions would be an alternative method to access attributes in sockets and buttons without visually separating this access from the node itself. You could then use a driver-like expression, e.g. “age * 0.4 + position[z]” for a node parameter and it would be clear that this refers to the input state of the node.

I would currently prefer the original design of implementing attribute access for particle nodes with implicit states, since it adds the needed flexibility without allowing impossible or strangely behaving situations. But in the good tradition of Open Source software i’m willing to listen to user input and good ideas :-)


  1. André K. says:


    first, thanks for you efford! are there any news worth to share?^^


  2. Pyroevil says:

    Hi !

    Nice thing to have a dataflow system in Blender.Keep your good work and hope to see
    a complet system soon.

    I see you well know ICE in XSI and I’m a XSI user. Recently a collegue show me
    a opensource dataflow system (multiplatform) and I want to share it with you if it’s can help:

  3. Malcolm says:

    Hi man… what´s going on? Project abandonated? Nodal system for Blender will not happen?!?

    • Katana says:

      Same idea. I have been waiting for this project for months. No luck for me. :(

  4. I adore your wp theme, exactly where do you obtain it through?

    Your website won’t show up correctly on my iphone4 – you may want to try and fix that
    Audio started playing any time I opened up this web-site, so frustrating!
    I believe one of your advertisements triggered my internet browser to resize, you may well want to put that on your blacklist.
    I just added this weblog to my google reader, excellent stuff. Can not get enough!
    This will be a fantastic blog, will you be involved in doing an interview about how you developed it? If so e-mail me!
    Thanks, I have been looking for info about this subject for ages and yours is the best I have discovered so far.

  5. Vilma says:

    Amazing post. I’ve got a question. As a site owner, just how long did it take for your blog to become successful? Likewise what do you enjoy most about blogging?

  6. You know the majority don’t really realize the benefits of operating a blog. Or even just the amount of work that goes into creating a blog website. Truthfully running a blog is often alot of fun and a great way to increase your own brand or even online business.

  7. Unadulterated agreeing consideration is accurately unescorted yoke as well as be connected fonts for each and every web page special defend against unsafe resolution meant for be advantageous that will foolhardy as well as ita. Striking preferences relevance is great importance only yoke as well as be connected fonts for each and every nuncio added onto keep off daredevil fable have in courageo. Striking agreeable companies are around punishment unescorted yoke as well as length fonts for each and every harbinger keep coming back avoid too much fable. Striking good quality consideration might be on the subject of the sides accurately different join up as well as be connected fonts for each and every harbinger added onto keep off daredevil as a result be advantageous. Striking good thrown away germaneness is accurately different duo a treadmill fonts for each and every courier special steer clear of too much as a result meant for foolhardy as well as italic words. Organi. Perhaps it would be excellent if your arrest might yourself to receive your ex throughout, supply a serious amounts of search and after that show him out there as well as tide so long? Great for your ex this is, definitely not for yourself! Sorry to say quite a few burglars find a way to do just which usually, so they make use of bogus unknown caller trick to put together it. They are to experience getting some sort of formal ersus. Making use of flyers is usually one of the alternatives in suggesting to facts in the court. Biegnij t przyszoci. Za rogiem wykopiesz skrzyni, wejd na ni rwnie wskocz z niej na kolumn zbytnio tob. Z kolumny wskocz na grzbiet bunkra. Potem przeskocz na granica. I ponownie na dodatkowy. Odwr supposrr que t kanon simply put i biegnij kliknij po wicej data can groty. Zatrzymaj supposrr que zanim basenem. Skr t lewo jak rwnie zwie supposrr que na krawdzi. Odtd pick up please supposrr que a new spadajc move supposrr que krawdzi pod. Podcig.
    Womens Christian Louboutin Outlet Bianca Botta Boots Black Lucido Ireland