I've developed a light painting delta robot called zaphod-bot
. This tooling converts blender exported spline data into an intermediate format ready for execution (load the generated folder structure into the delta-ui
and hit Start).
The artistic side of the light-painting is done in Blender, and then a simple blender export script generates basic JSON matching the spline geometry.
Developed against rust stable 1.38. With cargo setup, simply invoke cargo build --release
to generate the binary.
Invoke total-perspective-vortex
, where the working directory contains folders for each frame of the animation. Frame folders are only accepted with numeric filenames.
For each frame folder in the working directory, the tool:
- Ingests data exported from Blender
- Ingests the
.json
file generated by the Blender plugin representing a spline, - Ingests the matching
.png
files which contains the UV map for the spline.
- Ingests the
- Solves a toolpath to draw the splines with light
- Applies Cartesian transforms to blender coordinates
- Walks through coordinates and generates a valid move set suitable for execution by
zaphod-bot
, this includes creation of transit moves between disconnected geometry. - Prepares a set of LED linear fade animations in HSV space which
zaphod-bot
can use to light paint. These are clustered based on visual distance to reduce the quantity of generated events, - Writes the toolpath and lighting events to
json
ready for execution with thedelta-ui
event mode.
- Creates a preview file for use with the
delta-ui
3D preview- Generates a list of line segments matching visible movements. Samples complex spline geometries like catmull-rom splines into linear segments for easier display.
- Generates a UV map representing the delta's planned lighting events, to be used with the list of polylines.
- Creates a
summary.json
file in the working directory which contains paths to relevant toolpath and preview files, along with durations of the planned movements.