Multi-Photo Panoramas in 3ds Max
December 2006

The end result.

If you have a camera with a decent zoom lens, then you're better off using a light probe (see HDRShop, Keith Bruns, Brock Stern). My Canon s50 digital camera doesn't have a decent zoom lens, so photographing a chrome ball bearing doesn't really work.

I also tried using a 12-inch garden-style gazing globe, but the dimples and imperfections from the 2592x1944 photo were magnified huge when I finally got to the 1024x1024 cubemap stage.

If you don't want to buy a better camera, you could try the cheap solution of just shooting a bunch of pictures and hand-stitching them. Not as easy as a light probe, but it goes pretty fast once you figure it out. Any cam will do, as long as you can lock the exposure.

I used Canon's stitcher software only for stitching together the vertical... the horizontal I pieced together in Photoshop.

Canon's stitcher only creates a "straight" image when the camera is panned perpendicular to the left/right edges. So for a 360 horizon, you would have to keep it vertically-centered on the horizon. Not good for me, I wanted the horizon at the bottom of the frame. Photoshop is fast though... drag/drop, erase the edge, load the next image, drag/drop. Then clone out the buildings and make the sides tile.

In 3ds Max, here's how I set up the geometry. Almost any 3D software could do this.

The horizontal. Default sphere UVs, twiddled the bitmap tile/offset spinners, turned off tiling checkboxers.

Copied for the vertical, just rotated the sphere and scaled it down a bit.

Added a gradient opacity.

Render from a camera in the center. Tip... Max's Panorama Exporter only likes it when the camera is level, otherwise the latlong will be skewed.

I rendered the hemisphere panorama format so I could create the lower half myself in Photoshop. I flipped the top part, blurred and adjusted it, to look something like water.

Finished result:

Another example:

Then I brought the panorama back into 3ds Max to convert into a cubemap for use in our real-time 3D software. Here are two ways to make cubemaps in 3ds Max.

1. The easiest way... render from a Reflect/Refract map. In a new material, put a Reflect/Refract map into any slot (doesn't matter where). Check the 'from file' button. Size = each view's render size. Click on the To File to tell it where to dump the files and what name to give them. Click the 'pick object and render maps button' and click on a camera or object you want it to render from.

2. More work, but more flexible... use VideoPost to render from six cameras. Here is a Max 7 file with cameras setup to render via Video Post... uggghhh I really hate Video Post.

Hope this helps. After all the frustration with the ball, it was so cool when this worked out.