Moons
Posted: Mon Dec 31, 2018 5:26 am
Moons
Core pack
Latest OXZ - Version 1.1.1
Updated 09 February 2019
Moon texture pack
Latest OXZ - Version 1.2.0
Updated 28 November 2020
There are 19 natural satellites in our Solar System massive enough to have achieved hydrostatic equilibrium (having shape of globe, not irregular shape like potato). One large moon of Earth, four Galilean moons of Jupiter, seven moons of Saturn, five moons of Uranus, one moon of Neptune and Pluto.
How many moons we have in generic Ooniverse system?
Exactly zero.
Well, obsolete System Redux pseudo-randomly generates maximum two moons of main planet in static configuration. Additional Planets SR pseudo-randomly generates maximum three moons of additional planets in static configuration too.
Having pseudo-dynamic solar system in Planetary Systems, simulation of pseudo-dynamic moons is logical next step.
Two moon sets implemented in Moons OXP: 2 main planet moons (Terran moons) and 2 moons of gas giant (Jovian moons). Positions of Terran moons are calculated to simulate circular orbits (the Third Kepler's law used, but constant of gravity is not matched exactly with real value to simplify code). Positions of Jovian moons are vectors with pseudo-random magnitudes and random orientations (Oolite is not planetarium software and I have no ambitions to simulate orbital mechanics in details!).
Why only two moons of Jupiter analog, not all four?
Lazy coding You always has centers of three objects (planet and two moons) in one plane.
There is some trick in seeding of Jovian moons. Planetary Systems needs some time to place planets on calculated orbits, so to place Jovian moons correctly you need some time lag. But if you are using Planetary Compass OXP (author Thargoid), too long time offset will prevent generated moons to be displayed on ASC. Seems Planetary Compass completes system scan and generation of navigation database before seeding of Jovian moons, so these moons remains unvisible to ASC. This issue was fixed by reducing time lag from initial 1 s to 0.2 s.
Conflicts and dependencies
Due to large moons you need Planetary Systems OXP to use Moons.
Distance between main planet and large moon is in range 16...24 main planet radii, comparable with distance to sun in vanilla Ooniverse. So Sun Gear OXP is obligatory too. In any case you need Sun Gear for correct functionality of Planetary Systems.
Planetary Systems also provides additional option - displays Moon Data Sheet if you are docked with moon surface port. See Planetary Systems readme file for more details.
Using Moons with Additional Planets SR can generate logical collision as a result of conflicting mechanisms of moon seeding.
Moons OXP structure
To provide easy updates all moon textures repacked as separate texture pack.
Moons.oxp - core package.
Moons Texture Pack.oxp - Textures.
Credits
A piece of code from Additional Planets SR base 0.6 (authors: spara, Redspear, phkb) and Orbits (authors: Ebi, Kaks) is used to calculate orbits of main planet moons.
See more detailed moon texture credits in Texture Pack Readme document.
Core pack
Latest OXZ - Version 1.1.1
Updated 09 February 2019
Moon texture pack
Latest OXZ - Version 1.2.0
Updated 28 November 2020
There are 19 natural satellites in our Solar System massive enough to have achieved hydrostatic equilibrium (having shape of globe, not irregular shape like potato). One large moon of Earth, four Galilean moons of Jupiter, seven moons of Saturn, five moons of Uranus, one moon of Neptune and Pluto.
How many moons we have in generic Ooniverse system?
Exactly zero.
Well, obsolete System Redux pseudo-randomly generates maximum two moons of main planet in static configuration. Additional Planets SR pseudo-randomly generates maximum three moons of additional planets in static configuration too.
Having pseudo-dynamic solar system in Planetary Systems, simulation of pseudo-dynamic moons is logical next step.
Two moon sets implemented in Moons OXP: 2 main planet moons (Terran moons) and 2 moons of gas giant (Jovian moons). Positions of Terran moons are calculated to simulate circular orbits (the Third Kepler's law used, but constant of gravity is not matched exactly with real value to simplify code). Positions of Jovian moons are vectors with pseudo-random magnitudes and random orientations (Oolite is not planetarium software and I have no ambitions to simulate orbital mechanics in details!).
Why only two moons of Jupiter analog, not all four?
Lazy coding You always has centers of three objects (planet and two moons) in one plane.
There is some trick in seeding of Jovian moons. Planetary Systems needs some time to place planets on calculated orbits, so to place Jovian moons correctly you need some time lag. But if you are using Planetary Compass OXP (author Thargoid), too long time offset will prevent generated moons to be displayed on ASC. Seems Planetary Compass completes system scan and generation of navigation database before seeding of Jovian moons, so these moons remains unvisible to ASC. This issue was fixed by reducing time lag from initial 1 s to 0.2 s.
Conflicts and dependencies
Due to large moons you need Planetary Systems OXP to use Moons.
Distance between main planet and large moon is in range 16...24 main planet radii, comparable with distance to sun in vanilla Ooniverse. So Sun Gear OXP is obligatory too. In any case you need Sun Gear for correct functionality of Planetary Systems.
Planetary Systems also provides additional option - displays Moon Data Sheet if you are docked with moon surface port. See Planetary Systems readme file for more details.
Using Moons with Additional Planets SR can generate logical collision as a result of conflicting mechanisms of moon seeding.
Moons OXP structure
To provide easy updates all moon textures repacked as separate texture pack.
Moons.oxp - core package.
Moons Texture Pack.oxp - Textures.
Credits
A piece of code from Additional Planets SR base 0.6 (authors: spara, Redspear, phkb) and Orbits (authors: Ebi, Kaks) is used to calculate orbits of main planet moons.
See more detailed moon texture credits in Texture Pack Readme document.