SkySafari and dome projection

The following describes the presentation of imagery from the SkySafari software onto
a hemispherical dome. The general technique of using a screen capture plug-in for Quartz
Composer is introduced here in the context of Stellarium,
as such that aspect will only be discussed in passing.

SkySafari presents a 180 degree fisheye view by default, if one had a data projector with
a full frame fisheye then this would be the end of the story. In reality few fisheye solutions
employ the full frame, they are often truncated for pixel efficiency. Some other fisheye lens
products don't have a constant relationship between distance from the centre and latitude.
Another common approach to single projector fulldome projection is the use of a spherical
mirror instead of a fisheye lens. The most general solution that supports all the above
is to apply the full fisheye image to a mesh that prewarps the image to correct for the
distortions, or apply the truncation. Unfortunately implementing this within the application
requires access to the source code, something not normally available for commercial packages.

The solution is to draw the fisheye to the display and somehow capture that image for
warping or truncation. Two free products that permit this are "pbmesh" (see the Kineme site)
and "v002 Screen Capture" patches for Quartz Composer.
The approach is illustrated below, the computer needs two displays, one connected to the
projector and the other to a display which has many vertical pixels as possible. The Quartz
Composer editor window and the SkySafari window are placed on the display, the Quartz Composer
viewer window is presented fullscreen on the projector. The SkySafari window is made square and
as large as possible, the capture region for the V002 Screen Capture is set to match. In
the following a 30inch display is used, the resulting fisheye here is 1450 square which is
close to the maximum size required given the HD projector presenting in the dome.

SkySafari only creates an inscribed 180 degree fisheye for a square window.
The easiest way to achieve this is to set the square capture region using the V002 patch and then
size the SkySafari window to match. See figure 1.

The resolution of the result on the dome is limited by the screen resolution of the
display the fisheye generating application is running on. The higher the resolution of this
display the better the result. For example for a good HD spherical mirror projection one
should aim for close to 1600 pixel high fisheye, this is only really possible with a 30 inch
2560x1600 pixel display.

If one was correcting for radial distortion of a fisheye lens then a smaller input fisheye
image could be used, for example, one close to the resolution of the fisheye projector. For
a truncated fisheye one would ideally use the resolution of the pre-truncated fisheye.

The Quartz Composer patch could be as simple as the following, also see figure 1.