Table of contents
What is projection mapping?
Projection mapping is the process of warping or aligning projected images and videos to match the dimensions of physical objects. Essentially it is the use of real-world objects as projection surfaces and using software to correct for distortions.
How does it work?
When you take an image and project it onto an arbitrary object you will find that the image simply doesn’t match up with the object. If the object has angles (or is rotated relative to the camera) the image will be awkwardly stretched and distorted. You can physically move the camera to point directly at the surface you want to project on then move it close enough to fill the surface, but that is a very low-tech solution that breaks down as soon as you want to project onto multiple surfaces simultaneously.
Using special software, you can “pre-warp” the image you want to project on the computer so that when it physically is projected onto the object it all appears to be undistorted. Here is what that this looks like for a simple cardboard box that is placed at an angle to the projector:
In general, to pull off projection mapping you need four things:
- A projector
- A computer with data you want to project
- Software to warp the data onto real-world objects
- An object or environment that you want your projected data to match.
In this article I’ll talk a fair bit about the projector and the computer, and provide an overview of available software. In future articles I will go more in-depth about the software and demonstrate projection mapping techniques onto various types of objects and environments.
Examples of projection mapping
The web is full of cool videos and photos of projection mapping done by others, just search around! Here are a few links to get you started, as well as some videos of my favorite mappings:
Let’s talk hardware
Projection mapping is a very graphically intense process, and therefore benefits first and foremost from a good graphics card. However, a good graphics card is only useful if the computer it is connected to is able to feed it a lot of data quickly, especially if that data is being generated in real-time. Therefore, a good processor and plenty of memory is ideal. With this in mind, I would say that the most important components to look at when choosing a computer for projection mapping are:
- Graphics card
- At least 1GB of memory
- Get the most powerful card you can afford.
- As many output interfaces as you can get. More interfaces = more projectors that you can use at once.
- Faster speeds and multiple cores will help your computer do more things at once. This is especially critical if you are generating visuals in real-time, instead of just playing back pre-rendered videos.
- More memory will allow you to store more image data (and higher quality data) per frame.
- At least 4GB (8GB or more if you can afford it)
You can have the most amazing visuals in the world stored on your computer, but if your projector isn’t bright enough, or is out of focus, no one will know! The projector itself is perhaps the most important aspect of projection mapping, which presents somewhat of a “barrier to entry”; projectors are expensive!
- Brightness (measured in lumens) – how much light the projector puts out. This is one of the most critical parameters for choosing a projector for projection mapping, and can make or break the illusion you are trying to pull off. Cheap conference room and home theater projectors can work great for dark indoor settings, but will not cut it for outdoor performances.
- Resolution – most projectors have a selection of resolutions you can choose from. Higher resolutions will result in higher-quality images, but will also require higher-quality source data (which can tax your computer). The most important thing is that your source data’s resolution matches the resolution of the projector. Go as high as you think your computer will let you, as lower resolutions produce noticeable pixelation.
- Throw distance (and image size) – the lens of your projector will dictate the size of the projected image at certain distances, which is usually indicated by a table included in the projector’s user manual. You can also use online tools to find the throw distance (and many other cool parameters) of different projectors, like this one: http://www.projectorcentral.com/projection-calculator.cfm
- Remote control – not strictly necessary, but definitely helpful if you are installing the projector in a hard to reach place, or are using multiple projectors.
- Interface method – the most common input methods for projectors include VGA, DVI and HDMI. Make sure your computer’s graphics card will allow you to easily connect to the projector. There are a variety of display type adapters out there, but that will increase cost and may (depending on the interfaces) result in loss of quality.
Software at a glance
While there are free options available for projection mapping, the pickings are slim. In my experience, neither of the two free programs I found worked for me, and were somewhat confusing to operate. If you have the time and the interest, download and try these programs, but don’t worry if they don’t work well for you. In future articles I’ll talk more in-depth about what I recommend and show you everything you need to know to use it!
- LPMT – promising, but somewhat confusing and lacking in documentation. Worth keeping an eye on.
- VPT – appears robust, but crashes for me.
As far as commercial options go, there is good news and bad news. The good news is that there are many programs to choose from, but the bad news is that they all cost quite a bit. Fortunately, you don’t need to use any of these to get started experimenting with projection mapping!
- MadMapper ($399+)
- Millumin ($799)
- Modul8 ($399)
- Resolume ($400+)
- ArKaos GrandVJ XT ($799)
- Torsionsoft TorsionSurfaceMapping ($299+)
- VDMX ($349)
Make your own
Between the high cost of the commercial options, and the difficulty of use of the available free programs I found, I feel like the best option for me is to use free creative coding tools to make my own projection mapping software. This will give me the opportunity to teach you not just about projection mapping, but a little bit of programming along the way! Trust me, it’s nowhere near as bad as you might expect!
- Processing – cross-platform, Java-based creative coding environment.
Relevant libraries include:
- openFrameworks – creative coding platform built with C++.
Relevant addons include:
- vvvv – popular visual programming environment
As with any technical topic, some jargon is necessary. I will try my best to explain things simply and stay away from confusing jargon, but here are a few terms that you can use to do further research on your own:
- Projection mapping (mapping) – the process of warping or aligning projected images and videos to match the dimensions of physical objects.
- Quad – a “quad” is a common 3D graphics term meaning a rectangular surface with four corners.
- Corner pin/quad warping – when you take the corners of a quad and reposition them, causing a distortion in the quad surface.
- Bezier – a parametric curve commonly used in computer graphics. Allows you to define a complex curve using anchor points.
- Bezier warping – warping a surface that conforms to a curve.
- Edge blending – feathering or dimming of the edge(s) of an image to allow it to smoothly blend into other imagery.
- Keystone – warping a surface to make it shorter on one side, resembling a trapezoid.
- Homography – a very mathematical term for mapping one set of data onto another.