Interactive 3D solar system visualization with OpenGL, featuring planetary orbits, textures, and real-time animation.
I built this solar system simulator to explore computer graphics concepts and create an educational visualization of our solar system.
Goal: demonstrate OpenGL programming techniques including 3D transformations, texture mapping, and animation.
Context:
- Computer graphics education often lacks interactive, visually engaging examples
- Solar systems provide perfect subject matter for demonstrating orbital mechanics and 3D rendering
- OpenGL remains fundamental for understanding modern graphics programming
- Real-time planetary orbital animation with accurate relative speeds
- Texture-mapped planets using BMP images for realistic appearance
- Interactive camera controls (rotation, scaling) with mouse input
- Dynamic lighting system with configurable light sources
- Wireframe orbital paths for visualizing planetary trajectories
- Support for multiple view modes (outside/inside perspective)
- Animated helicopter blades demonstrating rotation transformations
- C++ with OpenGL/GLUT
- FreeGLUT for window management and input handling
- GLEW for OpenGL extension management
- Custom texture loading for BMP images
- 3D model loading from OBJ files
- GLSL shader support (included but not actively used)
src/
├── sample.cpp # main application and display logic
├── drawHouse() # house rendering function (currently disabled)
├── Display() # main rendering loop
├── Animate() # animation update logic
└── supporting files/
├── bmptotexture.cpp # BMP texture loading
├── loadobjfile.cpp # OBJ 3D model loading
├── osusphere.cpp # sphere generation utilities
└── heli.550 # helicopter 3D model data
make
./sample- Left Mouse Button: Rotate the view
- Middle Mouse Button: Scale the view
- Right Mouse Button: Access context menu for options
- ESC: Exit the application
- Toggle axes display
- Change axis colors
- Switch between orthographic/perspective projection
- Enable/disable depth cueing and fog effects
- Debug mode toggle
- Reset view and quit options
For questions or collaboration opportunities, please visit: https://www.freyazou.com/contact/
