DataMotion by NodeOp

Ongoing · Software · Developer

DataMotion is a Blender extension I'm building under the name NodeOp. It turns a CSV into an animated 3D chart. The chart's layout, scale and motion are all derived from the data, so when the file changes, the chart changes with it.

It's built with documentary work in mind. When a film needs to show a trend or a budget, the usual choices are a static graphic that doesn't match the film's look, or an After Effects animation that can take days per sequence and has to be redone if the numbers change late in the edit. DataMotion is meant to be a third option: a chart designed once, styled to the film, that stays correct as the data moves.

I started animating charts and graphs in Blender for UI animation work. Blender had no existing workflow for it, so every chart was built and keyed by hand, which made each one slow to make and slower to change.

Geometry Nodes is Blender’s node-based system for generating geometry. It can read a table of values and build from it, and anything built that way is rebuilt when the values change, which is exactly what a chart needs. The catch is that the system is thinly documented and slow to learn, and that is the part DataMotion takes on.

DataMotion packages that work so it starts from a CSV rather than an empty node editor. Swap in a new file with the same column names and the chart rebuilds in milliseconds. When the names differ, a mapping panel I’m building matches your columns to the chart’s inputs, so a new spreadsheet doesn’t mean rewiring nodes. The animation is procedural as well: each bar, point or ribbon is offset in time by its position in the data, so most charts run from a single 0-to-1 keyframed value rather than thousands of keyframes, and retiming one means moving two keys.

The extension and nodeop.io ↗ launch together.

Node trees

Blender's Geometry Nodes workspace for a 3D scatter plot: the source spreadsheet, the chart in the viewport with its axes titled velocity, mass and charge, and the node tree that builds it.
3D scatter plot. Three columns, three axes: velocity, mass and charge.
Blender's Geometry Nodes workspace for a chord diagram: the source spreadsheet, a circular chart of colored ribbons in the viewport, and the node tree that builds it.
Chord diagram.
Blender's Geometry Nodes workspace for a line graph: stepped lines in the viewport, the modifier panel with its line-curve menu open, and the node tree below.
Line graph, set to step. The same menu offers straight and curved lines.
Blender's Geometry Nodes workspace for a streamgraph titled Music Sources by Year: the source spreadsheet, twenty stacked series in the viewport, and the node tree that builds them.
Streamgraph of twenty series: music sources by year.
Blender's Geometry Nodes workspace for a 3D sunburst chart: a population spreadsheet, the ringed chart with labels around its edge in the viewport, and the node tree that builds it.
Sunburst chart of population data, labeled around its outer ring.