Failed attempts at building a DIY stereoscopic GIF camera

Arthur Schmitt
5 min readDec 9, 2016

--

This is a story detailing a one-year quest by two friends to build a DIY wigglecam. It doesn’t provide any answers, as most attempts didn’t quite work. But let’s hope it helps someone out there.

We set up to build a DIY camera to make stereoscopic animated GIFs, also called wigglegrams (if you’re curious, the Internet obviously has a corner dedicated to them). We were especially inspired by the ones you can find on FourRealz’s tumblr. Wigglegrams use 4 different images that are shown successively to give the impression of depth.

Image : FourRealz

Most wigglegramers use old-school stereoscopic cameras like the Nimslo. These film cameras came out in the 80’s and rely on 4 lenses and reticular printing to get the ‘3D’ effect. But what wigglegramers do now is that they scan the films and patch them into an animated GIF. They look awesome, but require a lot of work... So we attempted to make a fully digital version.

Nimslo stereoscopic camera

Wigglegrams are also a simpler version of the bullet time effect (known in the movie Matrix). Those usually require a heavy duty rig and loads of pricey cameras.

360° bullet time effect

Attempt #1

BOM

Concept

During Space Apps challenge Montreal 2015, we built or first prototype. The 3D printed case allowed for precise positioning of the webcams (They’re all supposed to be pointing to the object). The first pictures we took were completely off, so we had to recalibrate quite a bit (thus losing a big part of the images). We also integrated a screen for feedback.

The prototype (I couldn’t find a picture with the total 3D printed body)

Limits:

  • The main limit is that the Raspberry Pi can only handle one webcam feed at a time. So we basically had to switch them all on and off successively, which meant that we couldn’t capture a ‘picture’. People had time to move during the capture.
  • Even though we used 4 webcams of the same brand, they seemed to have some inconsistencies (slightly different direction and/or focal distance).

Best result

Behold!

Attempt #2

BOM

Concept

The idea with this one was to rely on just one camera that takes a picture of a set of mirrors that would show 4 different views of the same scene. It was inspired by devices like the ones made by Kula3D (which only have 2 views). To get 4 views, we needed 8 mirrors. And we need them placed precisely.

Kula3D stereoscopic adapters

We used blender to define the position of the mirrors. We used a parametric design in which we could change the distance of the subject, the camera lens and the setup width to get the position of the mirrors. The position was then used to create a 3D printed case to hold the mirrors in place ‘precisely’.

Blender parametric design

The result was promising in Blender:

Result using images from Blender
Pictures of the different setups
Example of a picture before patching

We made 3 or 4 different setups, but never quite got it to work. We ran into a variety of problems :

  • image distortion on the extreme mirrors due to the camera lens
  • cleanliness of mirror edges (and mirrors)
  • it’s tricky to find a position where the mirrors don’t create occlusion between each other. And that limits greatly the field of view…
  • imprecise position of the camera relative to the mirrors (at some point, we tried to solve that by 3D printing the support for the camera at the same time as the main frame, but it wasn’t very conclusive)

Out of the 3 attempts, this one is definitely my favorite. There’s something really elegant to it. And I can’t say it’s impossible. There’s probably a way to make it work (bigger mirrors, fixed camera, etc.) but after a while, we just gave up…

Best result

Behold!

Attempt #3

BOM

Concept

This last attempt relies on a simple idea. It uses the Kinect’s depth map information to distort a picture. Pixels are moved horizontally according to the depth map. But the images end up with ‘holes’ that need to be patched. So when a pixel doesn’t have color information, it averages the colors around it. A clear advantage of this technique is that you’re not limited to just four picture. You can get a much smoother 3D effect.

Limits:

  • Obviously, the Kinect takes only one picture at a time, so it doesn’t have enough information and it has to rely on color extrapolation to create the effect. In most places, this is fine. In others, it can create really weird situations.
  • The Kinect doesn’t like transparent or shiny objects. For example, the beer bottle below looks really weird.

Best result

don’t pay attention to the mess

Conclusion — where to go next…

It’s clearly a problem that can be solved by throwing money at it. One easy way would be to use the same tech photographers use for ‘bullet time’ setups (many fancy cameras that are triggered at the same time). But we wanted to build something compact and cheap that people could carry around. Our next step might be to try with one of the RasPi video multiplexers out there (but that makes a +250$ project).

Camera multiplexer

One other thing that we would need to work on is a better calibration technique. Up until now, we pretty much sticked the cameras and hoped for the best, but it would definitely require a better system, using an algorithm + a grid / checker for example.

Good luck!

--

--

Arthur Schmitt

#engineer #designer #maker #cyclist #father Interested in #technology, #culture and the #future