OpenGL ssystem 1.2 May-2-1998 ----------------------------- What is ssystem: ---------------- ssystem is an OpenGL Solar System simulator. Only the Sun , the nine planets and a few major satellites are included. Background stars are also included. Although ssystem is not 100% accurate I've tried to keep it as close to reality as possible. Starting with version 1.1 all planets' data except planets' radii, which are scaled up for easier visualization, should be correct (within the accuracy limit of the new planet positioning algorithm, see positions.c for details). System requeriments: -------------------- -Linux or Windows 95/NT OS -OpenGL library (tested with Mesa 2.6 and Microsoft DLLs) -GLUT library (tested with 3.6) -Voodoo Graphics card (tested with a Monster 3D) -Glide library (tested with 2.4b1 in Linux and 2.43 in Windows 95) -JPEG library (tested with 6.0.1) JPEG library is not included since most linux distributions install the shared version (see WINDOWS notes). See Makefile for compile time options. Installation notes: ------------------- LINUX: -Get OPENGL/GLU/GLUT compliant libraries. (Mesa includes all these and it's easy to compile, get it here --> http://www.ssec.wisc.edu/~brianp/Mesa.html) -Edit the Mesa libs directory in Makefile. -Run 'make' and hopefully it's done. WINDOWS: -Ensure you got OPENGL32.DLL GLU32.DLL and GLUT32.DLL. If you don't you can download them from ssystem homepage. ( http://www1.las.es/~amil/ssystem ) -I've included a Visual C++ Makefile (Makefile.win) in the source distribution. It won't work if you try to link against compiler OPENGL dafault libs, so once again I recommend you getting Mesa. JPEG library binary and header files are now included. 3DFX: -DLLs with 3dfx Voodoo Graphics support are availables in ssystem homepage. Unless these DLLs are in the same directory as ssystem.exe or in your search path (first method is preferred) the program will use default OpenGL DLLs (if installed) and framerate will be VERY low. Command line options: --------------------- -bench Aborts program execution after 1000 frames, displaying framerate -slices N Sets sphere SLICES parameter to N -stacks N Sets sphere STACKS parameter to N These two last options (slices and stacks) have a great performace impact (see Performance section) Performance: ------------ Hardware acceleration is not required, but highly recommended for smooth framerates. I get 48fps (running on Linux) with the "-bench" command line option in my Pentium 233 (overclocked to 266). The Planets' Sphere detail (SLICES and STACKS) is the key factor in performance, increse them if your CPU is powerful enough (I get over 110fps with both set to 2). Default value for SLICES and STACKS is 12 but you can play with these values in the command line (see Command line options section). Depending on your system you may start trying with the following values: SLICES STACKS Pentium 60 and below 8 6 Pentium 100-166 10 10 Pentium 200-266 12 12 Pentium II 233 16 14 Pentium II 300 20 18 Keyboard bindings: ------------------ Home/End: Selects previous/next body. h : Online help f : Flat/Smooth shading model. t : Texture on/off. l : Lighting on/off. s : Stars on/off. d : Demo mode on/off. n : Moves camera near current planet. c : Toggle between free and linked to planet camera modes. p : Pause Hold SHIFT for faster operation in the following key bindings: +/-: Increase/Decrease time factor. Arrow keys: Rotate camera. Page Up/Down: Increase/decrease speed. Camera movement: ---------------- Default camera mode is free. In this mode Arrow keys rotates camera, Page Up/Down increase/decrease camera speed. Linked mode is a bit different, here arrow keys are useless. You can move the camera towards the planet by increasing speed. Once you're near the planet program sets camera speed to zero. Camera speed is limited to 10000 Km/iteration (1 iteration = 1 frame), which is light speed at 30 frames/sec. Known bugs: ----------- Outer bodies movement is a bit jerky. Although ssystem uses double precision floating point arithmetic, Mesa uses simple precision arithmetic internally (faster and precise enough for most aplications). I'm working on it. ACKNOWLEDGEMENTS: ----------------- -Brian Paul (Mesa) http://www.ssec.wisc.edu/~brianp/MesQ.html -Daryll Strauss (Linux Glide) -David Bucciarelli (Mesa 3dfx driver) http://www-hmw.caribel.pisa.it/fxmesa/index.shtml -Curtis L. Olson (star catalog stuff) -This software is based in part on the work of The Independent JPEG Group -Galilean and Saturn satellites computed using code extracted with permission from XEphem, (c) 1997 Elwood Charles Downey http://iraf.noao.edu/~ecdowney/xephem.html -Keith Burnett's planet positioning algorithm used with persmission. http://www.xylem.demon.co.uk/kepler/ -Nacho (beta testing) -And of course, thanks to all of you who help me with suggestions and tips. NOTE: ----- This is my first OpenGL program and it's still in developmental stage, so I'd really appreciate your feedback. Constructive criticism is always welcome. :-) Check ssytem homepage for updates (http://www1.las.es/~amil/ssystem). Raul Alonso