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:
|
|
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:
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.
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.
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 :-)






hi,
first, thanks for you efford! are there any news worth to share?^^
-cheers
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:
http://www.coral-app.com/
Hi man… what´s going on? Project abandonated? Nodal system for Blender will not happen?!?
Same idea. I have been waiting for this project for months. No luck for me. :(
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.
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?
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.