Building a Bullet Time Video Booth with 12 DSLR Cameras
This project by Sebastian Staacks brings the classic Matrix effect into real-life by taking an array of photos and stitching them together.
The idea
Made famous in the first Matrix movie from 1999, the bullet time effect, wherein the camera orbits around an almost still subject, has since been copied in other films and video games, albeit at a pretty large cost to implement. So instead of creating a fancy Hollywood-grade setup for a cousin's wedding reception, Sebastian Staacks from There Oughta Be built his own version using off-the-shelf components and several processing techniques to achieve a similar result.
Setting up the cameras
Bullet time effects need one camera per frame, and at 25 frames per second, it can get very expensive, very fast. To reduce the number of cameras needed from 25 to just 12, Staacks had to employ a couple of methods to stretch the video from half a second back to a full second.
The cameras themselves are Canon EOS 400D DSLRs, which were picked up for just $50 each and have the capability to be remotely triggered, maintain proper focus/white balance, and shoot at a slightly larger than 4K resolution. After mounting them on a semicircular stand with the distance between cameras increasing to give an acceleration effect, each one was connected via USB to an active USB hub and then to an old laptop for processing the incoming images.
Trouble with power
Because this booth needed to be at a wedding an run all day without interruptions, using batteries was simply not an acceptable solution. Instead, Staacks ordered mock battery packs that have two leads for power running to a boost converter that takes incoming USB 5V power and increases it to 7.2V for the camera. However, one pair of USB charging hubs proved to be insufficient since the cameras would reset after taking photos due to a current spike. Resolving the problem took an additional four power hubs in order to distribute the load more evenly.
Triggers and buttons
Taking a photo at the precise moment required for bullet time requires every camera to take a picture at the same time. After experimenting with USB triggers, he discovered that some cameras would lag behind the others, resulting in a smeared video. Instead, each barrel jack shutter connector was wired into a 3.5mm audio splitter, and all of these were connected to a single Raspberry Pi Pico that pulls the shutter pin to ground when signaled by the laptop.
After capturing an image sequence and viewing the video, guests are able to select if they want to keep or destroy it. This was done by building two AA-powered buttons that each contain a Raspberry Pi Pico W, which presents itself as a Bluetooth keyboard for sending inputs to the laptop.
Creating the final video
Now that the cameras could send their photos to the laptop, along with the main Sony a5000 sending video via an HDMI capture card, these sources all had to be stitched into a single clip. Due to the slight misalignment between DSLRs, Staacks had to use FFMPEG's image stabilization feature to evenly crop them. The final frame also got a small shift to the left and a strong horizontal blur so that it appears to move behind the wall when played in sequence. To create the finished video, each clip was imported into DaVinci Resolve where motion tracking and additional frames could be added for increased smoothness.
You can read about this project in far more detail here in Staacks' blog post or watch the video here on YouTube.