Institute of Computer Science
  1. Courses
  2. 2023/24 fall
  3. Computer Graphics (MTAT.03.015)
ET
Log in

Computer Graphics 2023/24 fall

  • Main
  • Lectures
  • Practices
  • Projects
  • Exam
  • Results
  • Links

Procedural Planetary Systems

Kalle Ever, Madis Kariler, Joosep Tenn

Links

Repository

Live Demo

Final Report


Description

The aim of this project is to generate planetary systems. A planetary consists of a star or a star system, around which orbit non-stellar bodies (planets, moons). The generated systems should be relatively scientifically accurate: the scale of the stellar/non-stellar bodies and distances between bodies should be realistic and the time it takes for a body to complete the orbit should be dependent on the mass of the body it orbits.


Images

B-class
A B-class star.
A-class
An A-class star with an earth-like planet in the distance.
Active volcanism
A metallic body with active volcanism. An A-class star is seen in the distance
Binary stars
Binary stars
Binary stars 2
Binary stars with non-stellar bodies orbiting each of them (distances are at 1/10 scale)
Earth-like
An Earth-like planet with 3 moons
Gas Giant
A gas giant with no rings
Ringed Gas Giants
A ringed gas giant with another one in the distance
Ringed earth-like
A ringed Earth-like planet
M-class
Several bodies orbiting a M-class star. Some of the bodies have other bodies orbiting them.

Final Report

The Topic

Two members from the team (Madis and Kalle) had taken an interest in playing a game called Elite: Dangerous, which features an excellent procedurally generated MIlky Way galaxy with around 400 billion star systems. That gave us an idea for the project and we decided to go through with it. But instead of generating a whole galaxy we decided to just generate individual systems.

Tools and Methods Used

Three.js was used for this project. In our procedural generation, we tried to be scientifically accurate as possible, however some trade-offs had to be made because of the scope of the project and some technical limitations. Some parts were also “improvised” as we couldn’t find any specific information about certain topics (for instance gas giants - do they need any special conditions to exist, or do they have to be a certain distance from the star).

Complications

  • Choice of scale that we made initially might have not been the greatest. Currently 1 three.js unit corresponds to 1 Earth radius. In this scale however bodies of very small size can’t be seen (for instance moons the size of Phobos and Deimos)
  • Orbit lines are not accurate on large orbits. Using circles with enough segments so that they would be accurate for large distances was taxing on the performance. Perhaps we should have made the count of segments depend on the radius?
  • We actually wanted that the planets would show up as bright dots if they were too far from the camera to be seen, but couldn’t figure out a good, working solution.
  • Scaling the orbits caused some bodies to end up inside other bodies. We made the orbits hold a certain minimum distance, which fixed the issue in most cases, but in systems that have non-stellar bodies orbiting the center of mass of binary stars the orbits can still sometimes end up inside the stars.

Contributions

  • Madis - basic procedural generation, star halo, gas giants, ringed bodies
  • Joosep - listing the bodies in the system in a menu, ability to regenerate a system, proper planet rotation, searching for materials/resources
  • Kalle - Earth-likes/water worlds, rocky and metallic bodies, stars, binary systems, shaders, helper functions(eg to calculate orbit periods, star classes), bug fixing

References

Stellar Classification of Stars
Stellar Classification of Stars. Source
Hertzsprung-Russell Diagram
Hertzsprung-Russell Diagram. Source
  • Harvard spectral classification
  • Stellar evolution
  • Mass-Luminosity relation of stellar bodies, stellar lifecycles
  • Mass-Luminosity relation #2
  • Stefan-Boltzmann law - Can be used to find a stars temperature based on it's luminosity and radius
  • Circumstellar habitable zone
  • Institute of Computer Science
  • Faculty of Science and Technology
  • University of Tartu
In case of technical problems or questions write to:

Contact the course organizers with the organizational and course content questions.
The proprietary copyrights of educational materials belong to the University of Tartu. The use of educational materials is permitted for the purposes and under the conditions provided for in the copyright law for the free use of a work. When using educational materials, the user is obligated to give credit to the author of the educational materials.
The use of educational materials for other purposes is allowed only with the prior written consent of the University of Tartu.
Terms of use for the Courses environment