I’ve been slaving over the software and I can finally demonstrate a few animations running on the suit. These animations barely scratch the surface of what I can do – for instance, these animations don’t try to do anything that will sync with music. I threw these together with the software I described in the last post. There will be many more to come, and hopefully much better looking. But it’s fun to see in action.
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.
I’m running out of time, so I’m coding furiously on the animation software. I finished the “PointCollector” program that I used to establish Cartesian coordinates for all the LEDs and now I’m working on the “Animaker” software that uses those coordinates to sample video, animation, and other motion media. Video demos as soon as I have something good.
Final thought: If Elvis had this suit, he would have been way more popular, and possibly motivated to eat less bacon.
In this 3:20 video I describe a method for mounting CoolNeon Total Control Lighting LEDs (the rectangular-body kind) into a garment. The method is designed to:
- hide the wiring
- keep the garment from fraying at the points where the LEDs emerge
- be water-resistant
- have good reflectivity properties
It should work with any fabric that can support the weight of the LEDs and mounting hardware, but heavier fabrics will work better. Post questions if you’ve got ’em.