SkySafari and dome projection

Written by Paul Bourke
August 2011

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.

Figure 1: Computer display, 1600 pixels tall, capture region 1450 pixels square

Figure 2: Full screen secondary display for iDome, 1920x1080 pixels

Figure 3: Photograph example on iDome


  • 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.