This project is an effort in relearning OpenGL by remaking the first project from a Computer Graphics course I took at UNR in the Fall 2021 semester.
Use XML file with basic planet information for the sun, 8 planets, and pluto. COMPLETE 2/14/24
Add rings for Jupiter, Saturn, Uranus, and Neptune. COMPLETE 2/14/24
Add Major moons of Earth, Mars, Jupiter, Saturn, Uranus, Neptune, Pluto.
Add consistent/accurate scale in planet size and distance.
.obj files for sphere, saturn ring, and smaller ring systems. COMPLETE 2/14/24
.jpg texture files for sun, 8 planets, pluto, saturn rings, smaller rings, and moons. COMPLETE 2/14/24
.mtl files for sun, 8 planets, pluto, saturn rings, smaller rings, and moons. COMPLETE 2/14/24
normal maps for sun, 8 planets, pluto, saturn rings, smaller rings, and moons.
basic unlit shading COMPLETE 2/14/24
blinn-phong reflection model COMPLETE 2/23/24
implement dynamic shadows
normal map lighting
add transparency to rings
clear color for background COMPLETE 2/14/24
add starry background
zoom in and out (W S) COMPLETE 2/14/24
update zoom to scale with planet radius COMPLETE 3/25/24
rotate horizontally (A D) COMPLETE 2/14/24
rotate vertically (R F) COMPLETE 2/14/24
select specific planet (0-9) COMPLETE 2/14/24
update planet selection to reset angle COMPLETE 3/11/24
reset viewing angle (spacebar) button implemented COMPLETE 2/14/24
update reset angle to the camera facing the sunlit side of the planet COMPLETE 3/11/24
Include console output showing control options. COMPLETE 2/14/24
Add GUI to replace console output.
Add updating planet information to GUI:
-Which planet is selected, current zoom distance, horizontal and vertical angles.
basic window at 800 x 600 resolution.
update window to handle variable resolutions and fullscreen.
I'm including the instructions to build and run this program on your own.
For both of the operating systems to run this project installation of these programs are required: GLEW, GLM, GLFW, ASSIMP, GRAPHICSMAGICK You'll also need a C++ compiler. I used the MinGW g++ compiler.
sudo apt-get install libglew-dev libglm-dev libglfw3-dev libopengl0 assimp-utils libassimp-dev libassimp5 graphicsmagick libmagick++-dev
This project is designed to be built in CMake to generate the makefile and handle new files being added to the src and include directories.
The building of the project is done using CMake, installation with apt-get may be necessary.
~navigate to the folder containing this readme~
mkdir build
cd build
cmake ..
make
./Solar
This project makes use of the TinyXML2 library written by Lee Thomason. The header and driver for that library are included in this repository.
The framework of this code is based around chapter exercises from the book "Computer Graphics Programming in OpenGL with C++" Second Edition by V. Scott Gordon and John Clevenger.