Camera mapping is a technique whereby a flat photo is projected onto 3d geometry. This gives us a limited ability to turn the flat photo into a rudimentary 3d scene, allowing for some limited camera movement. This is easiest done on interiors, but can also be applied to landscapes.
NB: This is an updated version of a previous tutorial that utilised the ‘Camera Mapping’ modifier on the geometry. For whatever reason, this didn’t work with my latest version of Max, so I have updated it to use more up to date techniques.
There are several ways to use camera mapping- several of which do not require 3DS Max. The benefits of using max are that you can add other 3d objects into your scene; and when modelling characters you can project texture data from photos, without having to manipulate it too much in Photoshop. Max also allows you to create more detailed geometry than the projection methods in after effects, giving a heightened sense of the parallaxing motion.
1. By right-clicking the text at the top left of your perspective window, set viewport background as your ref image. In the settings, choose ‘Use files > Match Bitmap’, and remember to set render setup to match the size of your file.
2.Align your perspective grid with the background photo. Use the Utility > Perspective Match Tool to align your view correctly with the photo. With perspective view selected, Create a camera from your current view with Ctrl + C and name this ‘Mapping Camera’. We dont ever want to move this camera, so it might be handy to freeze it in place. Now, make your geometry using this as a base. Note: When creating planes for flat walls etc, add a few extra subdivisions than you really need. this will help even out texture placement and avoid any stretching.
Another useful tip is to set a plain grey material over your geometry, and reduce it’s opacity to about 50, allowing you to see the photo through the polys.
3. With the Geometry created, we now have to create our material that will be projected onto it. Press M to open the material editor, and choose an empty slot. Click the grey box beside the Diffuse colour and choose ‘Camera Map Per Pixel’. With this map, we have to fill two slots – first choose the photo we want to project (same as we used for viewport background) and then the camera we want to project from.
4. This will project the photo texture onto the visible faces of the model where camera is pointing. In the viewport window, the textures will look all stretched and screwy, but if you do a quick render, they will look fine!
NB – I noticed that whilst doing this I had to apply the modifier to each object separately, for example the radiator and the wall in the foreground. Selecting them all at once and adding the map modifier to all 4 didn’t work.
NB – Since camera mapped objects contain lighting info from the reference photograph, they should have their properties set to not accept scene lighting. Alternatively, set self illumination to 100, and although it will be accepting lights, they will be washed out from its own illumination.
1: Create another new camera, and name this ‘Animation camera’. This is the camera we will use to move through our scene. Use ‘auto key to set up a few different camera positions, and render out a flythrough of your scene.
Although this projection works fine when rendered, just to be safe we should bake out a texture map with this alignment. This is also useful as it gives us a more accurate texture visible in the viewport, rather than the stretched distorted default.
1:Press 0 (zero) – the ‘Render to Texture’ window will open. Make sure your geometry object is selected to have it appear in the table in the ‘Objects to render setting’.
2: Set ‘Mapping Co-ords’ to use auto unwrap, and in the table under ‘Output’ add a Diffuse map. In ‘Baked Material Settings’, check ‘Output into Source’ And down at the bottom of the window, make sure both ‘Views’ and ‘Render’ are checked to ‘Baked’.
3: Select a save location and texture size, then hit the Render button. Remember to save this render. Your 3d object should now render correctly in the viewport.