Blendgraph - (does Cycles)

In this node tree you can see how a Random number can be applied to an Object’s location. This is very similar to the Noise modifier for f-curves.

Attachments


Hmm, can you access alternate scene current frame and offset this value? I have been annoyed at the compositors inability to vary a scene’s current frame, and am wondering if there may be a way to subvert that?

Apparently the compositor expects only current frames from other scenes as with movie clip node, whereas image sequence input node is the only one with current frame or initial frame offset.

A follow up question would be: what can you do with results (output) here apart from altering geometry? Can you even alter other Blender workspaces?

Hmm, can you access alternate scene current frame

This sounds like a logical extension to the Timeline Node. Currently it has no inputs but it makes sense to have a Scene input for selecting the context. I am just not sure how Blender handles frame changes on non-active scenes. If I set up a handler for each scene, do they all fire? Would have to test on that.

what can you do with results (output) here apart from altering geometry?

Modeling and animation are the end goals for Blendgraph. This way it can work in concert with other node systems such as Cycles and the current compositor.

What part of the workspace do you want control over?

Vse and compositor.

I put together a group node today. It is much like the scene in that it has no inputs and populated a list drop down with groups that it detects within bpy.data.

The group output is a list and the name of the group. In this node tree you can see that the names of the group members in the list are modified in to datablock names (using the Concat Node) and then assigned to another mesh based object (target). The net result is that you can use the list to decide what object displays as it’s datablock.

When I play this animation the animated Integer List Index node selects what datablock the target object displays over time. On my machine I get 20fps out of a requested 30fps during realtime playback for this node tree.

Attachments


I’m very intrigued by the possibilities of this project. It looks like it could be very very powerful and convenient

I have added two more nodes to the Blendgraph system. The pSys node and the Object Repeater.

The pSys node is a simple front end for the existing particle system. It creates a list as it’s output. The list contains LOC/ROT/SCALE/AGE/LIFE for each particle.

The Object Repeater creates and manages a new object for every entry in a list. The source for these new objects comes from a connected Group node. When you connect the pSys to the Object Repeater you have an object for each particle in your scene. This is essentially the concept behind the RE:ticular AddOn.

In the image below you can see the Cube, Sphere and Cone belong to a group called primitives. When the Object Repeater needs a new datablock to repeat, it picks the next object in the group.

The Object Repeater also manages an Empty in the scene that is named like it’s node label. Any new objects created in the scene are parented to the node Empty to keep the Outliner from overflowing with objects.

Attachments


looking great Atom! and seems like you can already do lots of cool things with this…
hope responsiveness is not that bad

Thanks, my goal is to try to have Blendgraph emulate as many of my existing AddOns as possible before first release. It can already emulate simple versions of RE_Phrase and RE:ticular. I have been spending a good amount of time trying to make sure the visual feedback system makes sense and is efficient. Performance is not bad for small node systems (that is why I posted FPS up above). Certain nodes are heavier than others. Because PyNodes are single threaded, however, that system bottleneck does exist.

I am currently on my 5th rewrite of the entire node system. This version allows for visual update from start to end of node path and error states visually represented at node inputs or output. When you make a change in one node you can visually see the updates ripple through the tree along only the branch paths that require updating. Because PyNodes are new to me I had to figure out how events were flowing through the system. The visual feedback has helped me a lot.

I was wondering if it would be possible to use an f-curve with modifier as a generic node input value? Sort of like the Wiggler tool in after effects. I suppose it would be attached to an empty somewhere innocuous. In this way you could have a visual feedback to a dynamic variable, instead of relying on the users construction of math nodes.

I think that is quite possible. A node would have to be written for each modifier, however, kind of like a wrapper. Some modifier parameters can not be animated. The general rule is that if you can add a keyframe to it in the GUI, it can be animated via code. The existing Random node could be connected to say…Thickness of the Solidify for example. I think the wrapper concept could work for Constraints as well.

I can also foresee the f-Curve node too. In 2.49 it was easier, IMHO, to reuse animation curves. Perhaps Blendgraph can bring that back.

Here is a screen shot of the Font Repeater Node. The Font Repeater Node has a list input so you can connect a list, number or string to it’s input. The resulting output is a font object for each character in the list. Just like the Object Repeater, the Font Repeater creates an Empty in the scene that all the objects it generates are parented to. I have mapped Spacing and Extrude as possible additional inputs.

Attachments


Wow that’s really interesting. So you can animate object creation?

Hey Atom, you’re transforming Blender into Houdini hehehe. Looks SO nice, I wish some official dev could grab your work from here or help you to do the remaining functionality so we can make everything in Blender in a procedural way. I really way the destruction way system of the actual Blender.

look like great job.
how can i try it?

This is awesome! Great work!
I hope it becomes part of blender.

Thanks all. Right now Blendgraph is still in development. I just discovered that the node output draw event does not fire on the official Blender 2.69 release. So I pulled down a buildbot version and was happy to find that the bug had been fixed. But the result is that I have to refactor all my nodes to use this new event. This will be the 6th revision to the underlying base node types. All other nodes are built up from those basic types so I want that part of the NodeTree to be as strong/error free as possible.

I’ll keep posting updates as the system evolves/stabilizes.

Atom good luck. Chasing revisions must be like chasing your own tail. But it’s attached to someone else. Thanks though, it’s really important to stretch Blenders abilities.

You’ve done amazing work throughout the years! You’re add-ons are some of the most interesting and clever to come out of the Blender community. Would you mind sharing your development set-up? I’m curious if you use Blender scripting directly or Eclipse/Pydev or Visual Studio or …

Thanks and can’t wait to see the next steps in this project.

Hello All,

I am still working on Blendgraph. I have added another input to the Font Repeater Node. This input accepts the name of an object. If this node is connected, an optional Offset parameter becomes available in the node. This offset allows you to route the animation from the source animated object to the generated characters with a per-character delay on the animation. Because the fcurves are sampled “on-the-fly” the new animation can precede or lag behind the source animated object.

This is the equivalent of using RE:Lay with RE:Phrase.

https://vimeo.com/82848133

Below you can see the Orange cube is driving the character animation. Currently only LOC/ROT/SCALE values are relayed to characters.


@askinner432: I just use Programmer’s Notepad to write my scripts. I don’t use any dev environment.