Update: Realtime 3D For You Too!

[Kyle McDonald] has kept himself busy working on 3D scanning in realtime. He’s posted a writeup that takes us through the concepts, tools, and assembly of a DIY 3d scanning camera. You should remember a preview of this method posted earlier this month, but now it’s time to build your own. You’ll need a camera, a projector, and some open source software to process the image data. Using these simple tools, [Kyle] turned out much better video than before. Take a look after the break to see his results from scanning at 60 fps using a PS3 Eye. The trick to this setup is getting the correct synchronization between the projector and the camera, something that could be improved with a bit of extra hacking.

Does [Kyle’s] name sound familiar? It should, he’s got a long history of quality hacks that we’ve featured over the years. If you’re looking to use a scanner as a multitouch, add some music to tea time, or play with your skittles his work will give you a shove in the right direction.

[vimeo=http://www.vimeo.com/8392566]

25 thoughts on “Update: Realtime 3D For You Too!

  1. Thanks!

    One way Hack-a-day-ers could really contribute to this is by adding an Arduino.

    No, really, I’m serious!

    There is a pin on the ps3eye I’ve documented here http://www.flickr.com/photos/kylemcdonald/4132730448/ that outputs a pulse for every frame the camera captures. It’d be awesome to see someone output a 1024×768 VGA, or composite video, locked to that timer. That would keep the camera and projector in sync, and free up the computer for doing realtime decoding rather than worrying about glitch-free projection!

  2. @Kyle McDonald

    That would indeed be a very good idea, and probably not too hard

    Also, the structured light pattern is simple enough to be generated on the fly, not have to be read from a data card or anything, which might not have been achievable (data rate etc.).

  3. Wow. That is truly brilliant!
    Although that glitching and interference effect is quite fitting for a music vid or something like that, I would hope you are actively looking at eliminating it because it makes my eyes bleed! ;-)
    Oh yeah watch out for that big shot film director knocking at your door, or worse still just outright stealing your techniques without asking.

  4. @twistedsymphony: I actually have an algorithm for doing this already, where it uses the last phase image as a guide for unwrapping the current one. Unfortunately if you have a glitch in your first scan, it keeps propagating… I’m definitely working on other ways of dealing with this. Some better (quality-guided) unwrapping algorithms should help a lot.

    @Stu: “Big shot film directors” have access to much nicer techniques. I’m developing for all the hackers and independents out there :) See “Digital Emily” for comparison http://gl.ict.usc.edu/Research/DigitalEmily/

    @Aaediwen: Would make for awesome video chat :) I’m guessing less than a month after Natal is released we’ll see something like you describe.

    @nave.notnilc: it needs a lot of work, and I would appreciate any ideas you have or more specific criticisms! Send me an email :)

  5. A friend of mine just bought a 3D scanner (http://www.nextengine.com/) that works in a fashion similar to this but using 8 lasers. It arrived only hours before he had to leave town for the holidays, so we only played with it for a short while. It does scan color, which was cool, but we could only get partial scans from it, and it was very slow…

  6. Now put 3 projectors and 6 cameras in there with filters and then you can interpolate colored variants of the hashing pattern and have the sides and back also captured… for example 2 cameras have blue filters and one projector projects blue lines…. red and green follow

  7. @nebulous: Great idea (multiplexing via polarization), but unfortunately most surfaces don’t preserve polarization. This is why 3D movies can be expensive to project: it isn’t the filters or the glasses, but you need a really big silvered screen (literally, it’s coated in a thin reflective metallic layer that preserves the polarity of the light as it bounces off). If you coated your scene in a similar material it might work.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.