Photo Cube from Ball Bearing Experiment

What you are looking at:

This is an experimental photo. The metastream file is generated from a single photo I took of a one inch chromed ball bearing. If you're looking and can't find a large size locally try Emmerson Bearings, they carry any size you could possibly want. I paid $12 locally for 3, 1" bearings (heck of allot cheaper than custom spherical mirrors). I then took the image and remapped it using Ken Turkowski's Defish (Mac), I believe this can also be done with Helmut Dersh's Panorama Tools (Mac/PC/Linux) although I haven't quite worked it out yet. I then mapped the resulting photos onto a cube with Canoma.


The image quality may look pretty poor, but this is only a one-inch and I could not fill the frame with my Nikon950 because the tripod I was using was too high, so it could be higher res. Looks like the table I was on was moving a bit and blurred the image. I didn't take the time to polish the bearing. In fact I didn't even wipe it off to prevent fingerprints, which are visible as light streaks in the image around light sources. As I said this is an experiment, but I think the technique has some promise.

The Problems

What I wanted to do, and eventually succeeded in doing, was to remap the bearing reflection corrected into a cube. This then could be used as a backdrop for the rest of a 3d-modeled scene adding another layer of realism.

I had difficulty getting this to work in Canoma. I was able to successfully map 3 sides onto a curtain. I then tried to use polygons to map the 4th wall and ceiling. I found that the 4th wall (polygon) then blocked the middle section of the curtain. The polygon wall then had different projections on either side, and the middle section of curtain had no projection. I then tried to use a 2nd curtain to form the floor, 4th wall and ceiling. The problem with this was that the x-axis cannot be rotated 90° even when unfixing the parameters and constraints. The bottom of the curtain seems to be in a fixed orientation to the floor.

The best that I could do was to map the walls and ceiling onto a cube and view it from outside the cube. This wasn't what I was after but was kind of an interesting effect. See below.

If you do not see any 3D content in the frame below, you probably do not have the Metastream plug-in. You can download it here.

Rotate: click and drag left button
Pan: click and drag left button + SHIFT key
Zoom: click and drag left button + CTRL key


The Workaround

Well I was almost there. The answer was in the HTML attributes of the embed tag for metastream. I turned the culling off which caused the model to map the textures on to both sides of each surface. I then loaded the file into the metastream player and changed the point of view to the center of the cube. Next I used Control+Option+Command to select the Copy Camera Location command from the Viewer1s pop-up menu, and put this in the camera attribute of the embed tag so that the users would begin in the center of the cube. I then turned off panning and zooming (which actually changes the perspective) to make sure my visitors did not leave the center of the cube to maintain the cubic panorama effect.

<embed src="cube.mts" width="500" height="323"camera="0.000 0.000 -3.460 0.003 -0.864 0.022 119.586 0.000 0.000 3.199 1.000" cull="none" pan="0" zoom="0" antialias="16">

The last step was to add a model that would sit inside the 360° by 360° pano. I was pleasantly suprised that this "just worked" with Canoma. I just zoomed the perspective in until I was inside the cube, added an image, modeled it, and output the file to metastream. So I didn't need to go through all the pain of trying to make curtains do something they weren't made to do.


What's Next

Next I would like to achieve straighter horizon lines from Defish. It may have been my settings but they came out a clearly curved. I'd also like to find out exactly how many degrees a spherical reflection captures. I had assumed it would be about 180° but if you notice it mapped most of the table the ball bearing was sitting on, up to a few centimeters around the bearing. My guestimate would be about 270°. If this is so, then the proportions of the mapings generated from defish are inaccurate and the sides or walls should be higher.

Of course I would also like to try again with a higher quality, higher res shot done with a telephoto instead of a Macro, use a larger polished ball with no fingerprints, bracket and composite it with Helmut Dersh's PT Average. I would like to model a real scene inside a cubic Pano of the same scene.

Further into the future, once I get these techniques working, I would like to incorporate Paul Debevec's techniques of high dynamic range radiance maps (he uses bearings for his images) so that synthetic objects could be added and lit with natural light samples. I am eagerly awaiting Lightwave 6 (March 2000), I spoke with Newtek at MacWorld and they say that they are going to support these High Dynamic Range Images for illumination.

Any questions, suggestions, comments, or job offers can be directed to

My Homepage