Skip Navigation: Avoid going through Home page links and jump straight to content

THE JUPITER AND SATURN FLY-BY ANIMATIONS

clrbar.gif

                           James F. Blinn
                      Member of Technical Staff
                      Jet Propulsion Laboratory
                      Pasadena, California 91103
                                 USA
                                1980

INTRODUCTION

In the past two years three NASA spacecraft have made close fly-bys of the giant outer planets Jupiter and Saturn. The first of these events, the Voyager 1 fly-by of Jupiter, occurred at about the time the newly formed computer graphics laboratory at JPL came into existance. While computer simulations have always been used for mission planning purposes we at the laboratory decided to produce a movie depicting the planned mission for public information purposes. This first film was sufficiently successful that it motivated the production of similar documentaries of the Voyager 2 fly-by of Jupiter and the Pioneer 11 fly-by of Saturn. The production of the frames from these movies required the confluence of many different computer graphics techniques in order to produce reasonable quality images with the somewhat limited equipment available. These include the use of dithering, simple antialiasing, careful color space encoding and most importantly the use of a high order depth priority algorithm for solving the hidden surface problem. This paper describes the use of all of these techniques and how they interact to produce the final images.

The overall production of such a movie proceeds in two steps. The first step consists of a simulation of the paths of all relevant bodies (planets and moons) and of a simulated "camera crew". A schematic depiction of the proposed movie can be viewed quickly on an line drawing display. Any parameters of the movie are then adjusted to give the most pleasing effect. The second step consists of generating the frames of the movie as shaded color images. Each object is drawn separately from the others and is overlayed in a frame buffer over whatever is already drawn. This allows the organized use of several small, specially tailored programs rather than requiring one large general purpose one, important if a small computer is being used.s

SIMULATION AND SCRIPTING

The main program in the movie making process calculates the positions of the various moving bodies and simulates views of the scene from various viewpoints. A schematic drawing of the current view is visible on a line drawing display. The planets and moons are represented as oblate sphereoids moving along elliptical orbits. The description of these orbits for the times of the spacecraft encounters were obtained from the mission planning team. The position of the spacecraft or any moons or planets can then be calculated for any desired time by a bit of classical celestial mechanics.

Once the three dimensional positions of all objects are known, a view can be made of the situation by specifying a location for the desired eyepoint and a desired viewing direction. The eyepoint is positioned relative to one of the celestial bodies, typically the spacecraft. Thus the observer appears to ride along near the spacecraft as it passes through the planetary system. The vector from the spacecraft to the observers position is calculated in one of two modes. In "manual" mode its X,Y,and Z coordinates are set directly. In "automatic" mode the length of the vector is specified as well as the desired position of the spacecraft on the screen. The program then calculated the appropriate displacement vector to satisfy these two constraints. The viewing direction is likewise specified in one of two ways. In manual mode, the direction is set in terms of X,Y and Z coordinates. The automatic mode is specified in terms of some desired target body and its desired screen location. The viewing vector is then calculated to produce the desired view. If both the eyepoint and viewing direction are being calculated a simple closed form solution to the constraints is not possible and an iterative scheme is used. This mode, however, gives the most pleasing results as the simulated time moves forward. The resultant pictures have the spacecraft in the foreground and some moon or planet in the background.

Finally, the script of the movie itself was specified. The intended three minute running time of the final film represents over 4000 frames to calculate. The interesting events of the fly-by encompass about 72 hours of real time. Thus the simulated time was about 2 seconds of screen time per hour of real time. As a spacecraft passes through a planetary system the various moons pass by in different directions as well as the planet itself. Therefore the target body is changed for different portions of the movie. All the information necessary for any desired view is given in a set of viewing parameters. The values of these parameters for various key frames of the movie are stored in a table. Then given any frame number the desired viewing parameters are generated by interpolation from this table. This has the advantage of making any frame number immediately accessable (vs incremental mode). Thus the production process can easily be restarted at any point in the movie.

DATABASE GENERATION

The color images of the final movie require several additional items of data beyond those necessary for the schematic version. These consisted of generating a database to describe the spacecraft and the surface features of the moons and planets.

Images of the spacecraft were made in a fairly conventional fashion by modelling it as a collection of polygons and using a polygon based shading algorithm. The database was generated by digitizing portions of the blueprints of the spacecraft into a set of polygon generation commands. Certain shapes whch recurred often in the process were built in to the program as primitives, e.g. tubular struts were described to the program simply in terms of the endpoints and radius of the strut. These higher level descriptions were converted into two or three polygons at image generation time when the desired viewing geometry was known. The spacecraft camera boom was also encoded in a way to make it articulated in the same manner as the real spacecraft.

The surface features of the moons of Jupiter were not known in any detail prior to the fly-by of Voyager 1. It was therefore necessary to create a hypothetical set of maps for the surfaces and to enter them into the computer as arrays of intensity values. This was accomplished by using a frame buffer painting program, a standard tool for manipulating and creating image information. The program operates by monitoring the position of a digitizing pen on the surface of a tablet and by writing new intensity values in the frame buffer as a response to the artist pen motions and pressure. An astronomical artist names Rick Sternbach was employed to create the maps of the four gallilean sattellites using the best scientific data available at the time as inspiration. These maps were used in the productin of the Voyager 1 flyby movie. .paragraph Once the images of the real appearances of the moons and of Jupiter were returned by Voyager 1 it was desirable to use them to produce more accurate maps for the production of the Voyager 2 movie. Therefore, a new set of maps were produced by manipulating the images sent back by Voyager 1. In effect, this amounted to running the image making process in reverse. For each moon, four or five images were selected that together covered the entire surface. For each picture, the time at which it was made was entered into the simulation program and a transformation matrix was calculated which represented the viewing geometry. Then, each lattitude and longitude in the map was transformed via this matrix yielding a pixel coordinate on the real image. The intensity value at this pixel was then placed in the map at the appropriate place. The several views were then blended together with come correction for lighting effects to produce a final map. Once this map was generated it was then possible to make images of the moon or of Jupiter from viewing angles other than those where the picture was taken. COLOR FRAME GENERATION A typical frame from the movie contained elements that were produced by various, fairly different algorithmic methods. Since the movies were produced on a computer with limited addressing space, a PDP 11/55, the different algorithms could not be combined into one program. Each such algorithm was encompassed in a separate program which was driven by keyboard commands or from a command file. This made each program easily separable from the others and more easily debugged. When a color frame was produced, a master program examined the positions of all the visible objects, wrote out command files for the appropriate rendering programs and invoked them in the correct order. Then general scheme used consisted of the "painters algorithm". This technique draws objects in the scene in order back to front. Each object is drawn by overwriting its image in the frame buffer on top of whatever was already there. Thus a close by object would hide a far away one by being drawn after it.

The display medium for the final frames consisted of a frame buffer with 8 bits per pixel. This does not provide enough resolution for a full color display.

Most of the objects (moons and planets) in the scenes are quite simple geometrically (i.e. spheres and ellipsoids) but have quite complex surface markings.

The spacecraft itself was rendered using a fairly standard polygon based hidden surface algorithm.

Added enhancements to some of the scenes fall into the category of "special effects".

PRODUCTION

The actual production of the frames of the film consumed a considerable amount of time and energy.

The resulting frames must then be transferred to film. All editing functions normally performed with an optical printer were performed by computer programs.

RESULTS

Three films have already been produced by this technique lasting two to three minutes each.

saturn_home.gif Saturn Ring Plane Crossing Home Page

clrbar.gif

jplred.gif