home about gallery publications education links contact


..::fish-eye::..

Most plugins tend to distort the image after it has been rendered. This is all well and good, but the distortion process can create artefacts in the image, and also does not give a faithful representation of the effect. Without having to download a third party plugin, the same effect can be pretty much reproduced in Photoshop by using the Spherize Filter.

The fish-eye lens effect greatly distorts the image around the sides of the frame, so we can view the scene up to 180 degrees. It’s a technique that has been greatly used in popular culture, from music videos to film; mainly used to exaggerate an object or person’s features – namely a finger pointing at the camera so the subject is almost rubbing the inside of the TV screen, or is used as an alien’s point of view.

The technique is quite simple for standard photography. The large lens is fitted to the camera to refract the light into the aperture to allow for wide-angle photography. This is normally around a 16mm focal length, but if you try to emulate this in your 3D package, you will discover that there is no lens distortion whatsoever. This is good for some scenarios, but not so great for others.

As we need some lens distortion and to be able to see completely 180 degrees around the camera, what do we have in our 3d package that could do this? A sphere perhaps? That’s totally reflective? The solution is very very simple, yet to get the camera setup exactly how we want it so we can easily control it directly within the Viewport is going to take a little bit of work (but not much).

As with setting up any animation, we need to see what the end result is going to look like. Therefore our main camera should be set with a wide-angled lens and positioned accordingly. As previously mentioned, to create the fish-eye effect, we need a reflective spherical surface. So create one. Create a sphere and position it exactly where the camera is situated. Ensure it does not cast or receive shadows from any object within the scene. Add a raytraced material to the sphere that has no colour and 100 reflection and assign it to the sphere. Link the sphere to the camera, and play the animation – make sure that the sphere does not pass through any surfaces or get clipped by any other geometry, If this is the case, reposition the camera at these culprit frames and try again. As the sphere is now centered and linked to the camera, it should not be touched; only the camera is to be moved.

This is all well and good, but as the sphere is encompassing the camera, with it’s normals facing outwards, how to we view the reflected scene with this camera? Answer: we don’t. The first camera is cloned along it’s Z-axis and positioned outside the sphere, facing in the opposite direction. The position of the second camera should be checked in one of the Viewports to ensure no clipping is occurring and that the sphere completely fills the Viewport. This second camera should be linked to the first.

This entire shooting match ensures that you can animate your scene accordingly with the first camera, and then render from the second. This will give you a fish-eye effect that is an exact mirror of the desired result. Therefore a little post-processing is required to flip the image back the right way, but apart from that it’s a simple procedure. Happy distorting!

Enlarge Screenshot Open the fish-eye_start.max file included on the cover CD, or open one of your own files. Create and position a camera where you want the scene to be viewed from. You might wish to set the Lens to 16mm as described in the opposite text to give an accurate representation of what is to be rendered.
Enlarge Screenshot Create a Geosphere primitive and set it’s Segments spinner setting to 8. Click on the Align tool and select the Camera as the object to align to. Select the X, Y and Z position alignment and align all orientations. Link the Geosphere to the camera.
Enlarge Screenshot Move-copy the camera along it’s local Z-axis. This will create a clone of the camera on the opposite side of the sphere. Change the copy’s lens settings to 35mm. Change the Camera’s type to Free Camera and rotate it along it’s local Y axis 180 degrees so it is pointing at the sphere. Make the camera’s view visible in a viewport and dolly it so the sphere completely fills the frame.
Enlarge Screenshot Link the second camera to the first. Animate the first camera as necessary to show off the scene and/or the effect by moving around the scene and in close proximity of other objects. Select the geosphere and eclude the object from casting or receiving shadows.
Enlarge Screenshot Create a new Raytrace material and label it “Mirror”. Assign this new material to the Geosphere primitive. Set the Specular Level and the Glossiness to 0. Amend the Diffuse swatch colour to black and the Reflect swatch colour to white. This ensures that the material is 100% reflective. Exclude the object from being reflected in other raytraced objects (if any other reflective objects exist in the scene)
Enlarge Screenshot As the resulting renders will be a mirror of the original viewport, any images or text contained in the scene will obviously be mirrored. If you feel it is necessary, you should mirror the resulting render to achieve a result comparable with that you originally saw in the first camera’s viewport that we used as a reference.
Enlarge Screenshot And the final image. The edge distortion can be reduced by repositioning or dollying the second camera in slightly. Again, the image has had to be mirrored to achieve the image viewed from the first camera.
Download the max file! Zip file to accompany.

..::tips::..

If the scene is too pixelated or too aliased to your liking, ensure supersampling is enabled, or if the worst comes to the worst, flip on raytrace anti-aliasing, but be prepared for render times to dramatically increase! There are settings contained within the anti-aliasing window that can be altered to speed up renderings, but be warned that this may degrade the qualityo the overall image, especially if other objects are raytrcaed in the scene.

Always ensure that the reflective sphere does not intersect with any other geometry in the scene. If so, amend the positioning of the camera at those specific frames, or reduce the size of the sphere. Because the sphere’s size has been reduced, you will need to amend the position of the second camera so the sphere fills the frame again.

As opposed to mirroring every single frame in an animation, create a simple Photoshop action to mirror every single frame. This is a simple operation which will save time by processing every frame in the sequence… unless you have a post-effects program that can perform this operation automatically!

As the rendered frame is completely filled by a single object, additional lens effects such as z-buffer depth of field and image motion blur will not work. However, their counterparts object (and scene) motion blur will work, as will camera depth of field as these work on a multiple-pass method.

Initially published: 3D World magazine, Issue 34, January 2003.

Copyright Pete Draper, January 2002. Reproduction without permission prohibited.

www.xenomorphic.co.uk