Not all dome environments have the hemisphere surface arientated the same, for example a VisionStation and a planetarium typically have their hemispheres at 90 degrees to each other. Many planetariums have seating arranged so that the center of attention of the audience is 30 or 40 degrees above the horizon, still other planetarium domes are tilted placing the center of attention higher above the horizon.

When creating synthetic fisheyes using computer graphics the different dome orientations can be catered for by simply rendering the models/animation again. However for filmed fisheye material it isn't always possible to repeat the filming, for example it may be of a remote location or a recording of a once only event. This document describes how one might create fisheye images at different angles to the angle the original fisheye was captured at.


The example shown here converts a movie that was captured with the fisheye pointed "forwards", suitable for an environment such as the VisionStation. The new intended viewing dome was a small inflatable where the center of attention is perhaps half way between the horizon and the pole. The image above shows the new fisheye as if it was tilted 30 degrees, and below a 60 degree tilt.

Note that these are obviously no longer full fisheye images because there is information that simply isn't captured in the new fisheye orientation. This is somewhat helped if the projection system employes the common truncated fisheye image/lens arrangement which crops parts of the fisheye anyway, in this case it is just cropping unavailable portions.

Since the images here are all fisheye, the warped images for mirror projection are equally straightforward to create. The image below and the image above contain exactly the same visual information and look identical on the dome even though the projection hardware is very different.

Application
An application called "fishtilt" implements the fisheye rotation described here. It is designed to work on a single image but obviously can be applied to each frame of an animation. Antialiasing is implemented as a straightforward supersampling of 2x2, 3x3, etc. The performance is dictated by the dimensions of the output image and the level of antialiasing, it is independent of the size of the input image.
Usage: fishtilt [options] fisheyeimage Options -w n output image width, default = 600 -af n aperture of fisheye (degrees), default = 180 -cf x y center of the fisheye image, default is image center -r n n horizontal and vertical radius of fisheye -t n tilt by n degrees about right vector, default = 0 -a n antialiasing level, default = 1 (no antialising)Geometric conventions
Similarly a fisheye can be "panned" (rotated) left and right.
![]() 0 degrees, original image |
![]() 10 degrees |
![]() 20 degrees |
![]() 30 degrees |
![]() 40 degrees |
![]() 50 degrees |
![]() 60 degrees |
![]() 70 degrees |
![]() 80 degrees |
![]() 90 degrees |
![]() 100 degrees |
![]() 110 degrees |
![]() 120 degrees |
![]() 130 degrees |
Usage: fishrotate [options] fisheyeimage Options -w n output image width, default = 600 -cf x y center of the fisheye image, default is image center -r n n horizontal and vertical radius of fisheye -t n rotate by n degrees about right vector, default = 0 -a n antialiasing level, default = 1 (no antialising) -bb clip top of fisheye for truncated fisheye