92 comments

[ 3.4 ms ] story [ 157 ms ] thread
That's fun to read! Thank you for the excellent write-up.
Thank you! I'm glad you enjoyed it, I'm half worried everybody just skims the photos on these things :P
Wow! Nice effects. Great job!
Thank you for sharing this.
Thanks for reading, I'm glad you liked it!
I really enjoyed reading about your development process! I was thinking the entire way though that it was kind of a shame that most of the images were just making "hologram-like" pictures that we always see, but the last couple of pictures were more along the lines of the possibilities I was thinking of!

Have you considered adding some kind of depth support that would allow you to make "3D" images by moving not only left and right, but also back and forth?

That's an interesting idea! You can already do that by just moving back and forth, all you need is to project the image flat and know when to turn. I will try that next, thanks for mentioning it! Do you have any particular ideas on what would be cool to try?
Maybe you could have it beep in a certain pattern or pitch to cue you as to when you should be turning in a certain direction.

My first thought was that with something like this (https://www.stavros.io/posts/behold-ledonardo/wings-small.jp...), it would be cool to walk around the subject and have the "wings" actually furl AROUND them rather than simply in front of them, though that might take some choreography to make sure that your own shadow doesn't affect the image too much.

Another thing that I thought was that if you can also selectively turn on only portions of the bar, you could effectively create "windows" in the portrait as you did with the other set of wings (https://www.stavros.io/posts/behold-ledonardo/alexandra-smal...), which could work really well with something 3D-ish, where you can see through one part of the lights to a different background also generated by the lights.

Ahh, yes, these are great. You can easily do them now, they just take some choreography and specially crafted images. The shadow isn't much of a problem if you walk fast enough and aren't lit, since you're mostly behind the lit bar, which drowns you out anyway.

I'll play a bit with the window idea, feel free to follow me on Instagram at https://www.instagram.com/stavroskorok/ if you want to see the progress (I post all photography-related doings there).

I absolutely love the intersection of technology and art, nicely done!!
Thanks, that's what I love about that project too! I'm trying to come up with more ideas like this but it's hard, I'm at least glad I had one this good.
The photos itself are also very nicely done!
Thanks, I was very satisfied with the one with the patterns, it really felt good to see that the project was capable of producing something of artistic value.
This looks great! Really impressive results! Have you considered attaching the light strip to a steady-cam type rig to minimise the amount of wobble?
Thank you! I have, but that might be a bit overkill. Maybe a flexible handle would be nice, but the wobble isn't too bad when you're doing abstract patterns (it might even add to the aesthetic). I will try a flexible handle now that you mention it, though, it's a good idea.
Wonderfully artistic!
For an out of the box solution, take a look at the pixelstick
Nice one Stavro!!! It's been some time since your last side-project, but this one is just great. Perfect bridge of technology, photography and art. Do you plan to share the code and BOM for Ledonardo?
It has, yes (at least the ones I posted). I can definitely open source the code if there's interest, I didn't initially just because there's a password committed in the firmware. The BOM isn't interesting at all, it's just a WeMos D1 mini with a microSD shield, and the LED strip is connected to that and powered by two 18650 batteries in parallel.
I'd love to see your code. In particular, I'd like to see what you did with "I could just directly assign the data I read from the SD card to the internal buffer of the LED library instance and display it."
Oh, that's just this:

    self._np.buf = column
    self._np.write()
Where column is a list of RGB (or RBG) pixel values like [128, 255, 0, 255, 0, 0, 128, 15, 200].
Really great writeup and results! I did something similar but much simpler few years ago (https://hyperglitch.com/articles/lightstick) but instead of long exposure (as I didn't have the good camera) I recorded the video with webcam and reconstructed the final image from it so I didn't have to shoot in the dark. The octave script for image reconstruction is very basic (and the results are very lo-fi :)) but maybe you can use the same approach and with some more work make more usable results (or phone app :))
Oh wow, I guess I'm not as original as I thought :P That looks great, and you can get lots of long exposure apps for your phone so you don't have to use a script to reconstruct the image, have you tried those?
Didn't really thought of that :). But this was in 2015 and basically just a very lo-fi weekend project without any care about resolution or color reproduction (I saw pixelstick project and just wanted to see if I can make something similar :)) after which I used the LED strip for something else.
Oh jeez, the Pixelstick existed back in 2015? Looks like I was quite late.
But I'm really glad you didn't know about it and made yours :) since you really put a lot of thought into the details about color reproduction, resolution and diffusion. It's a very fun thing to play with and anyone wanting to build something similar will now be able to find great resource of info and implementation details on your site.
Thanks, I'm really glad I did it too. It was lots of fun and very rewarding to see it improve iteration by iteration.
Even Picasso did (purportedly) the first light paintings (manually of course) back in 1949, and I've been doing manual painting with various flashlights, LED lights, fire, sparklers, etc. since at least 2005, during which time I've seen many projects. You might want to check Vimeo and Youtube, there are tons of old artworks using LED strips, etc. One of the first inventions I saw was the Light Graffiti videos from LichtFaktor (https://www.lichtfaktor.com)... although their earlier stuff was all done manually as well.

In the end though it doesn't matter that you aren't original, it matters that you did it and possibly added something new (spending time thinking about resolution, color quality, etc).

Oh, yes, light painting is probably as old as the camera, but I think "painting" photorealistic images with a strip is different enough to count as an original idea.

I'm not very fussed about being the first anyway, it was just fun to think that I created something nobody else had before. Fun while it lasted, anyway :P

This has actually been being done for a decade at least, you can find instructions online for it, I had the same experience with just about every idea I had when I first joined my university maker space, not only had all my idea been done, half of them had been done specifically _by that makerspace_ just when they were picking fun projects to do off the internet.

The point is to make stuff and enjoy it, you're still an inventor. And the things you _do_ with your projects are half the fun, your photos are really fun and I wouldn't have thought of a lot of them.

Agreed, in the end I do it because it feels great to make things. I really love soldering and routing PCBs, for some reason, I should make more of those...
Nice. If you add some camera to the leds, using Aruco markers you can easily get the camera pose and adjust the led colors accordingly to draw a predefined image without needing a steady hand.

You probably can turn this into a phone light brush app if you use front camera and screen as a led (the torch usually don't change color), but it still has some challenges with respect to latency (in dark environment cheap camera get slow) and user-friendliness specially if it needs calibration.

Hmm, wouldn't that add unacceptable latency? I feel like it would be at least 50ms.
As I mentioned latency is indeed an issue, but I don't think it matter that much. Your pixel will be offset by the movement during this 50ms (probably more) which will be a typically a few centimeters, so edges will get a little blurry but I'm not a light painter expert.

If it is really a problem, assume pose velocity from the previous frame positions and correct for latency and turn off the screen if acceleration sensor is greater than a value.

That's true, if you have a phone you can use the sensors on it to do dead reckoning in the interim. I'm not a mocap expert, but this seems very doable! It would be a great idea.
Reminds me of the Flaming Lips stage show where they a huge amount of flexible, LED strips as a backdrop going through all kinds of animations as the show progresses.
I think they used EL wire and not LEDs (if we're thinking about the same thing)
I built one of these to get more experience with FadeCandy (a small board that will drive 8 x 64 neopixels).

I ended up building a 64x64 (4096 or 4K) display that did 30FPS, you could drive it with all sorts of different things including scraping screen pixels or sending a webcam output to it.

It consumed a bunch of power (500W) and was a bit clunky but a friend rebuilt it and I think it made it to burning man this year (and came back too dusty to use).

Very cool. I love this physical photo effects stuff.
Awesome writeup, thanks for sharing.

And the name is brilliant... LEDonardo (giggles).

Thanks, it doesn't register for many people as the brain skips over the extra "d" :)
This reminds me of the light project at the CN Tower. The tower has lights running up the sides, and a guy with a laptop programs colour sequences on it. Because of the motion, it becomes obvious these can include animations, so occasionally he actually generated photo-realisitic "slices". Someone came along and did something very similar to your project in order to expose the images in their entirety, which comes across almost identical to what you've done (minus that organic ribbon appeal you went for). In his case, the standard "moving colours" come out looking like simple flags, and of course the images look like whatever they are.

I think this artist was inspired by the workings of a photocopier, which the second person who wrote the software to decode and expose it clearly picked up on.

I'll update this later if I get to my desktop and can post a link to that project.

Please do, I'd be very interested in seeing it and I don't think I understand exactly without some visuals.
That's fantastic, I was wondering whether it was actually images or just randomly blinking LEDs that this effect read too much into until the RCMP image came up. Amazing.
I used to live on Queen's Quay and saw it pretty much every night. At first it was only the solid colours blinking and racing up and down the tower, but one day it was really obvious that there was a picture involved - it looked like the edge of the screen of a worn out VHS recording. A while later, this video was made, so finally my curiosity was satisfied.
Thanks. I just got back to my desktop and am delighted someone posted the link for me. Pretty cool video, imo.
(comment deleted)
Lots of very cool photos :)

Have you thought of also doing video with it, via stop frame animation, although that could be very time consuming!

Hmm, how do you see that working? Wouldn't it just look like normal video? You'd see each "slice" in the air, rather than a complete image.
I mean still do the long exposure as you're doing for your stills. And use say, 25 long exposure photos per second for the video.

But make the patterns animated, so for example with https://www.stavros.io/posts/behold-ledonardo/maria-small.jp... you could have the light appear to rotate around the lady.

I imagine it'd be extremely slow work, creating enough photos though!

Oh, I think you can just take the video and do that in post, actually! I will have to try it, it's a very nice effect.
This is really cool! I built something almost exactly like this, though we used the ESP32 instead. [1]

What I find interesting is that I never had an issue with dropped columns over network using the ESP32 as an AP. Did you connect the ESP8266 up to an existing network?

I didn't see a mention of how you designed the brushes in this write up, were they all just images on an SD? I experimented with a palette app to design the brushes (solids, gradients, images, manual) and to send the frames to the brush. Curious what your solution was!

This year I am adding a gyroscope to the device to experiment with 3D space and holographic content. Also trying different LED attachments (like a circular or matrix display) for different effects. There's a lot more to explore!

I'm happy to see this today, the denser version looks very nice!

[1] https://twitter.com/JeffScript/status/1178446997507977216?s=...

Ooh, yours looks amazing as well! Yes, the ESP8266 was the AP and it was dropping (or maybe not displaying? I doubt that) packets. Maybe the ESP32 is just beefier, or maybe it's the second core (the ESP8266 probably had to put the wifi chip on hold while sending data to the LEDs).

The brushes were just images, yes. It's interesting that you'd ask that, because I didn't have a concept of a brush (it's all just images), whereas you do, since you use them :) In my case, I have a PNG with the pixels I want, and then select the minimum time step and duplicate the columns in the PNG as I want them, so I run through each PNG column to generate the "brush".

I really like how your example "fans out" by activating more LEDs in time, I should try that as well. I think you'd get much better results with some electrical tape as a diffuser (unless you like the stripes!) too.

Haha I've been so absorbed by the brush metaphor in my take I didn't think about what other terms to use. The fanning out is from a brush size slider in the app. My goal was to make it performance friendly for artists so the app has a bunch of real-time things like that.

You're probably right about the dropped packets, though it makes me concerned I'll eventually run into the same problem and my whole workflow depends on the network not sucking lol

Do you set your time step arbitrarily? I haven't implemented a solution for stabilizing the time step (until the gyroscope is added) and found it very difficult to get non-skewed results on images. Yours look really nice though, was that just patience and a steady hand?

I really want to improve the density on mine after seeing your results. For sure I'll work on better diffusion as well, we had one that blurred the results too much so we bailed on the idea but I think a denser strip and a tighter diffusion would be awesome.

If you want to discuss further, send me a message on Keybase (or something else, whatever is convenient for you).

The ESP32 is pretty beefy, can you not do things on-device? I wouldn't rely on the network after what I've seen, but I haven't tried the ESP32.

My time step is constant, I have a parameter for it but I rarely change it. It's mostly a steady hand, yeah.

Are you talking about horizontal or vertical density? Vertically, the 60 pixel per meter strip is the best you can do (there are some denser ones but need a lot of current), but a diffuser will make it look much better. Horizontally, you can get very fine resolution, up to the refresh rate of the strip.

Looks great! It actually reminds me of these LED staffs or POI that some spinners use. It's conceptually similar; you can get some pretty cool images from a long exposure where someone is spinning. However, the image is somewhat visible to the naked eye just from the speed at which these Poi are spun.

https://youtu.be/4N2XH1Gx8dQ

Unfortunately that video isn't available here, are they POV POIs? Do they project an image in the air according to their angular velocity?
I have to say, I really love the comments here, I post something I made and everyone chimes in with a bunch of interesting projects either they or someone else has made, or new ideas. They're both interesting to read/see and inspire me to work on new things, so I'd like to thank you all for making this comment section a joy to read.
Would be kind of cool if you could do it quick enough so that you could get the images with a normal shutter speed. That way bands could screw with people taking pictures of their concerts and make it look like there were crazy antics going on on stage.
If you move it that fast, you can also probably see it with the naked eye, so it wouldn't be much of a surprise :P
There are some displays that use quickly rotating led strips. There are also led strips for bicycles that show images.
Curious: did some company already create a practical 3D display by moving these strips fast enough?
I‘ve seen some DIY displays like that and you can buy them for mounting to bicycles
Yes, I know the bicycle displays, they are quite cheap actually. But if you also move the display in the orthogonal direction, you can create a 3D-effect. This can't be done using a bicycle.