This was developed as part of my final year project during the first 6 months of my final year at university. It consists of various modules, including: mesh generation, noise generation, texturing, lighting, level of detail, camera and movement systems, atmosphere simulation and, on the correct hardware, 3d/VR display.
The sphere generation is done by subdividing a cube into a number of segments and normalizing all the vertices to turn the cube into a sphere. A "noise" amount is generated and applied to the length of each vertex to achieve a more realistic planet shape.
Texturing and lighting are applied via shaders, the variables of which can be controlled using the user interface. The level of detail is achieved via quadtree subdivision of the planets mesh.
The system was developed to run using a variety of controllers via a simple interface structure. The requirements for this came for the necessity for the program to run on a 3d projection system, where the scene is rendered to each projector with a small variation in its camera in order to achieve 3d display, and where just using a mouse & keyboard wouldn't be possible.