Over the last four days I wrote two programs that I’ll be using to produce the animations that will be presented on Anthrolume, which I’ll describe here.
In Anthrolume 1.0, I had 50 LEDs. I wrote small animation step functions that calculated the colors of all the LEDs for each frame of the animation, and sent commands out to the LEDs to change their colors, fade, etc. This worked because, for one thing, my old LEDs were really smart (e.g. I could say, effectively, “LED #12! Fade from red to blue over the next 200 milliseconds!” and he’d go do that.) The other factor was that there just weren’t that many LEDs.
For the new suit, there’s just too damn many LEDs to manually program them. Additionally, these CoolNeon LEDs are dumber. I have to tell all the LEDs to be new colors all at once, and after that they’ll stay that color, but there aren’t any fancy commands. I basically need to set the colors for every LED 20 times a second. That’s where my software comes in.
PointCollectorPointCollector’s job is to establish Cartesian coordinates for each LED, and to record the exact order they appear in the strand. To help with this, I prepared a composite photograph of my suit’s front and back, which I import into PointCollector as a background image. Then for each LED, in order, I used the software to record the relative (x, y) location of each LED. This collection of points is the scaffolding upon which the animations are projected.
By using different Cartesian arrangements of the LEDs, I can get different animation effects. In a future post I’ll describe this and show some examples. For most animations, though, I use the rather literal Cartesian mapping shown here.
AnimakerAnimaker takes a Flash animation, the point list from PointCollector, and some other data, and samples the frames of a 2D Flash animation into the suit.
The points from PointCollector are shown as red circles on a still frame from the Flash animation. Using the mouse, I can move, resize, and rotate the points as a unit to wherever on the animation frame I want. Once I’m satisfied, I record, which basically picks up the color from the animation frame that corresponds to each LED, for each frame of the animation. Once that data is collected, it can be written to a file that is directly consumable by the Anthrolume suit computer.
The translate/scale/rotate part turns out to create a lot of possibilities. If I make a simple animation of a vertical line moving across the frame, but rotate the points to be sideways, the resulting animation seen on the suit appears to move diagonally, even though the original animation was vertical. (You can see that effect in the screenshot.)
The software shown here is really abysmal. It works, and it will get the job done for Burning Man, but it is what you get for four days work. I am really looking forward to seeing where I can take this software later.
Over the next few weeks I’ll be busy cranking out 2D animations using a Flash animation package and turning them into suit animations. I’ve also got some other tricks up my sleeve to show in a week or so.