Node-Link Approach for Procedural Modelling: Information Visualization


We are considering to dedicate a significant development initiative to create an extensive data visualization plug-in using Blender as the platform (also considering K3D). The objective is to establish a logic chain where data sets and specialized methods (graph layout, cartographic projections, charting patterns, etc.) are applied to render complex information visualization scenes. Our goal is to create a suite of python methods which can be chained together as a procedural model using a node-link approach.

Based on our evaluation it is not clear to what extent the Blender node-link editor (pyNode) is extensible for this purpose. In other words, can the interface be used for the creation of a scene? We’d be grateful if someone can explain the suitability of implementing a node-link approach which can establish a basic scene (generated from data) with property injection via node links to set the position, size, shape, material of a given object.

The concept use case would be: user selects composition nodes such as CSV import, assign variables, set primitives, and links operator nodes to apply visual properties based on the variables, e.g. spheres are positioned, sized, and colored based on a data value.

We’d very much appreciate any brainstorming on the approach as if it appears feasible, we would very much look forward to contributing our open source project back to the Blender community.



From what I know of pynodes it isn’t possible to create a scene using them – they basically just operate on shader data kind of like a python implementation of the renderman shader language.

It also isn’t clear if they will be ported over to 2.5 or what form they will take if they do.

You could make a whole new node tree type (in c) that does what you want or use pure python scripts to achieve the same effect (without nodes) but I’m pretty sure that you can’t construct new node types (other than narrowly defined shader pynodes) using just python.

It is theoretically possible if someone were to wrap all the structs and registration functions that nodes rely on with the automagic python wrapper thing (rna?) one could make any random node type they wanted and add entirely new node trees…don’t think that’s on the devs’ radar though.