c++, Other, Scripts
Leave a comment

Lightplot – Robotic 3D light painting system by Ben Cowell-Thomas

Cube_mid copy

Created by Ben Cowell-Thomas, Lightplot is a robotic 3D light painting system. Animation is exported from 3DS Max, and imported into the Lightplot software which then drives a robotic arm to draw the models in the air. The software also controls a DSLR camera to take long exposure photographs of each frame of animation.

The project grew from early experiments with Lego NXT and robotics. The latest edition comprises a custom built robotic arm controlled via Phidgets boards, which are driven by a stand alone Windows application written in C# and Microsoft .net. The exporting software is written in Maxscript within Autodesk 3DS Max.

Early experiments started with a laser pointer and a simple Lego rig to move it about in a pan and tilt style arrangement. This was followed by Python scripting and a prototype built in Maya and the HPGL image format created to control old HP plotters. Ben found the format perfect as it is organised into a logical order for plotting, and has pen up and pen down commands, but best of all is stored as text. The open source image editing software Inkscape allowed him to trace images and output them in a HPGL format. His python script in maya animated the virtual rig to plot the images. The next step was to do the same physically. HIs web searching led him to the Aforge library, a great collection of code that could control Lego NXT via Bluetooth and soon had a working Lego robot. the Aforge library that Ben was using communicates with NXT via Bluetooth direct commands, however the NXT direct commands didn’t allow for exact positioning of the motors and he began looking for something other than Lego NXT.

He finally settled for Phidgets, a set of “plug and play” building blocks similar to Arduino for low cost USB sensing and controlling motors. He ordered a Phidgets servo controller, a lynxmotion pan and tilt kit, along with two Hitec HS422 servos. The Phidgets board was easy to control via C# and he quickly had a demo up and running. He created an interface and began testing the plotter. The Canon 20D camera is controlled using it’s remote trigger port with the help of small Phidgets 2/2/2 interface kit.

The device currently takes about a minute to plot 50 polygonal edges. Ben rewrote Laserplot software for to support the 3D sequences. The core process includes taking the sequences of objects, convert their coordinates to 3D polar coords to match the rig, plan the shortest route through the edges for a quick plot, and then control the rig and camera while plotting. He spent a fair bit of time refining the max exporter, simple additions such as planning camera position and using this to cull back facing edges reduced plot times by half.

The animations below are shot entirely in-camera, the figure having been animated in 3DS Max and then plotted by his 3D light painting system.

You can read more about the process on Ben’s blog.

Project Page

Dancer Animation : Sergei Shabarov | Music : Chris Clark – “EMW”