Intro: Instant Wallpaper Generator
Inspired by the Immersion Room at the Cooper Hewitt Design Museum, the Instant Wallpaper Generator is a simple and interactive installation by artist and designer Purin Phanichphant. It offers the audience a unique experience: the ability to tangibly generate a wallpaper pattern that instantly gets projected onto the wall right in front of them.
Using provided 2D geometric shapes, construction paper, found objects, audiences can create their own designs on the “capture area” and watch their creations get replicated and magnified up on the wall projection. This is made possible by using a webcam to capture live video, running it through a simple code written in Processing, and projecting the output using a short-throw projector.
With ease and simplicity in manipulating the pattern and the instant dramatic effect, the Instant Wallpaper Generator aims to let audiences, both young and old, capture their imagination into reality.
Step 1: Planning & Dimensions
The first first thing to do is to plan out the space, particularly the projection cone. Working with an Optoma GT760 720p short-throw projector, the distance of the pedestal/podium from the wall is roughly 6’. Optoma actually has a decent website that helps you figure out how big your projection would be, given the placement/position of your projector: http://www.optomausa.com/distancecalculator/
The idea here is to cover an entire wall you’re working with, from floor to ceiling, say, at least 8’ tall. This allows for one to feel more immersed in the projection. The projection quality works best on a white wall with a smooth surface.
Step 2: The Pedestal Box & the Camera Arm Attachment
The pedestal box will provide three functions: 1. A tabletop surface for the image capture 2. A housing / hiding place for the projector and the computer running it and 3. A place where the camera and its arm will attach.
In my design, I went with W 24” x H 34” x D 18”. The pedestal was made with 0.5” MDF, with no bottom. I cut out a W 18” x H 4” slot at the bottom of the box’s back to slide in the projector.
I then built two pieces of camera arm attachment, to be attached to the back of the box, out of 0.75” MDF. Each piece are roughly 4” x 5.5” x 1.5”, with a 1” diameter hole to fit the camera arm. Plus, I drilled a 3/4” hole in the back of the pedestal box, so that the USB cable will go in to attach to the computer.
Put together the box and the camera arm attachment using wood or drywall screws. I painted the entire piece with flat black acrylic paint. Now on to the camera arm itself!
Step 3: The Camera Arm
The camera arm will need to hold the camera cylinder assembly sturdily. You can imagine building it so that it’s adjustable, but I like mine to be fixed-position and minimal. I used a 1” diameter hollow aluminum tubing with 1/8” wall thickness. I rough-cut the piece on a metal cold saw, then bent it using a tubing bender with appropriate setup for a 1” tubing. I did a few more rough cuts on the cold saw (and de-burred the ends using a hand file). The final dimensions for my camera arm are H 31” x D 11.5”, with the bottom edge of the aluminum tubing lining up with the bottom piece of the attachment. The idea is to place the camera cylinder right in the middle of the capture platform/table top, and for the distance from the camera to the table top to be appropriate (in my case, that distance is 16.5”). I spray-painted the piece with black primer, which provides a nice flat finish, just like the paint I used for the pedestal box.
Step 4: The Camera Cylinder
The camera cylinder will house a webcam as well as an USB LED lamp (even though I ended up turning it off, so you can ignore that part in my design). The cylinder needs to attach to the camera arm as well.
I used a 4” diameter PVC pipe to fit the Logitech C920 pro webcam I have. I got this 4” diameter PVC pipe from McMaster Carr, but I’m imagining they can be bought at any home improvement store. I then cut it down to 6” length using a cold saw.
For the cylinder bottom and cap, I designed the pieces in Illustrator (see the attached file) and cut them on an Epilog laser cutter on a 1/8” acrylic. Note how I designed it so that the cap and bottom fit into the PVC pipe nicely, as well as providing perfect fit for the camera and the [unused] LED lamp. The acrylic pieces were glued together using super glue. The bottom was later glued to the PVC pipe using regular latex glue.
I spray-painted the entire cylinder, the cap, and the bottom using black primer.
Step 5: Putting Together the Camera Cylinder and Camera Arm
Assemble the camera arm onto the camera arm attachment, securing it with two 1” internal diameter collets. Be sure to straighten it perpendicular to the front and back of the box. Feed the USB cable through the aluminum tubing (this one I got fits perfectly), with the female end at the camera cylinder, and the male end at the bottom of the pedestal, through the small hole to be connected to the computer.
Attach the camera cylinder assembly onto the camera arm, then connect the USB of the Logitech webcam to the USB extension that runs through the aluminum tubing.
Step 6: The Code
As for the code, I used Processing running on a Mac laptop. The idea is simply to take in the webcam video input, and display smaller versions of them in a tiled manner (using the “translate” function), row by row. I’m far from an expert at programming, and I essentially manually hard-coded each row, as opposed to writing an object that I reuse over and over again. But the code works well enough for my use — see the attached .pde file. When I run it, I actually use Mac’s screen zoom function to make the sketch appear full-screen on the projection.
Step 7: Play Shapes
This part is completely optional, but I thought it would be fun to provide some basic shapes for users to start off with. I cut 1/8” acrylic pieces on the laser cutter, on both black and white colors, and sandwich the two colors together using super glue (so that one side is black, and the other side is white).
Step 8: Putting It All Together
Connect the projector to the computer (in my case, it’s mirroring a laptop screen). Fire up Processing and run the sketch. You might have to change the camera name variable (should be listed in the debug console), depending on the camera model you have. The one last step is to make the sketch look full screen. I did this using Mac OS’s “Zoom” capability (under System Preferences > Accessibility > Zoom > Use scroll gesture with modifier keys to zoom.
Voila! Anything under the camera should now tile up on the wall. Try all sorts of shapes, objects, colors, motion, etc. Have fun!
robmac made it!