Currently work in progress, but the final result would be a program that renders and accurately displays planetary positions, trajectories from a planet-bound perspective.
- Main things
- Ability to select a celestial body and fix the camera's position and relative rotation to it, giving a perspective of the solar system from a specific coordinate of that body.
- Planetary Rotation
- Celestial bodies should display velocities, poles, as well as rotation
- Text GUI (May need to swap out pygame first, unless GUI is in a separate window (TKINTER))
- Separate
camera.py
into to different modulescamera.py
andcontrols.py
for organization - Better visuals
- Ability to assign cubemap textures to celestial bodies
- fix the broken detail culling
- anti-aliasing
- generic skybox
- Optimization
- Memoization of trajectory paths to avoid need to recalculate precise position of every point of trajectory path each frame
- Bezier curves for smoother curves and less memory needed for storing points?
- Structure tree class to store celestial bodies for better organization and rendering performance.
- With pyopengl's matrix stack and celestial bodies' body-orbiting-body-orbiting-body recursive nature, a tree structure that recursively groups the bodies can render objects recursively more efficiently than the current method
- Replace pygame with a better, more lightweight(?) rendering front-end. Pygame causes issues with my KDE compositor anyways.
I've only ever tested this on Linux but installation is simple and should work on any operating system.
pip install pygame PyOpenGL PyOpenGL_accelerate
git clone https://github.com/jtyrmn/milankovich-renderer
You can run the program by running python on src/main.py
Currently, to control the camera use W,A,S,D to move around and mouse to rotate the camera. Press escape to exit the window. Press e to select a celestial body. Console will display selected body.