Simulating derelict spacecraft in Celestia

Discussion forum for Celestia developers; topics may only be started by members of the developers group, but anyone can post replies.
Avatar
Topic author
DaveBowman2001
Posts: 741
Joined: 06.07.2018
Age: 23
With us: 5 years 10 months
Location: Manila, Philippines

Simulating derelict spacecraft in Celestia

Post #1by DaveBowman2001 » 15.04.2021, 12:59

This idea first came up back when FarGetaNik published his Pioneer 10/11 and Voyager 1/2 on the Motherlode:

As of this date, there are about 48,000 artificial objects large enough to be catalogued by NORAD since the launch of Sputnik 1. This includes all the manned missions, rocket stages, miscellaneous debris, and every space probe sent to the Solar System and beyond. However, only a fraction of these objects were either recovered on Earth or destroyed from crash-landing, atmospheric entry, in-space collisions, etc. Therefore, the spacecraft that has long since ended their contact with Earth are still intact, whether they're satellites orbiting the Earth or the Sun, or sitting on the surface of Venus, Moon, Mars, or Titan.

I mentioned FarGetaNik's addons above because the aforementioned spacecrafts' labels no longer appear on Celestia even though the Spacecraft Label is activated on the exact date when they lost contact with Earth in 1995 and 2003 respectively, (in the case of the Voyagers, their XYZV trajectories end by 2030) without disappearing in thin air.

The idea is that on Celestia, the probes "lost" contact with Earth when their labels disappeared from the screen. But the Pioneer/Voyager addons were able to do this because right after the XYZVs ended, a hyperbolic SSC orbit was coded in them, of which Celestia are not able to label. So to simulate "decommissioning" satellites/landers in Celestia, the SSC file therefore must have a duplicate entry for the spacecraft coded, with the duplicate superseded by an "Add" command, and classified as a "component" rather than "spacecraft".

Examples below:
(Landers)

Code: Select all

"Surveyor 1" "Sol/Earth/Moon"
{
   Class      "spacecraft"
   Mesh      "Surveyor.cmod"
   Radius   0.001

   Beginning   "1966 06 02 06:17:36"
   Ending   "1967 01 07 00:00:00"

   LongLat   [ -43.22 -2.45 0.001 ]
   Albedo   0.80
}

Add "Surveyor 1" "Sol/Earth/Moon"
{
   Class      "component"
   Mesh      "Surveyor.cmod"
   Radius   0.001

   Beginning   "1967 01 07 00:00:00"

   LongLat   [ -43.22 -2.45 0.001 ]
   Albedo   0.80
}


(Satellites/Orbiters, without timelines/XYZV trajectories):

Code: Select all

"CoRoT" "Sol/Earth"
{
   Class   "spacecraft"
   Mesh   "corot.3ds"
   Radius   0.0065

   Beginning   "2006 12 27 14:24:00"
   Ending   "2014 06 17 10:27:00"

   EllipticalOrbit {}
   
   Albedo   0.3
}

Add "CoRoT" "Sol/Earth"
{
   Class   "component"
   Mesh   "corot.3ds"
   Radius   0.0065

   Beginning   "2014 06 17 10:27:00"

   EllipticalOrbit {}
   
   Albedo   0.3
}


(Satellites/Orbiters, with timelines/XYZVs):

Code: Select all

"Herschel" "Sol"
{
   Class   "spacecraft"
   Mesh   "herschel.3ds"
   Radius   0.00375
   Timeline
   [
      {
         Beginning   "2009 05 14 13:42:00"
         Ending   "2013 06 18 00:00:00"
         SampledTrajectory
         {
            Source   "herschel.xyzv"
            DoublePrecision   true
            Interpolation   "cubic"
         }
      }
      {
         Ending   "2013 06 18 01:00:00"
         
         EllipticalOrbit {}
      }
   ]
   Albedo   0.4
   InfoURL   "https://en.wikipedia.org/wiki/Herschel_Space_Observatory"
}

Add "Herschel" "Sol"
{
   Class   "component"
   Mesh   "herschel.3ds"
   Radius   0.00375

   Beginning   "2013 06 18 01:00:00"

   EllipticalOrbit {}
   
   Albedo   0.4
   InfoURL   "https://en.wikipedia.org/wiki/Herschel_Space_Observatory"
}


Notice that in the last example, if the spacecraft has a timeline/XYZV file coded, an SSC orbit must be present as a last entry in the timeline (idea undertaken by the Celestia Origin team), with the duplicate entry copying the said last timeline entry (i.e., the SSC orbit). All the duplicates begin right after the ending dates of the originals. In this way, you can still visit these spacecraft even if their Ending dates were many years in the past in Celestia


As the name of the thread suggests, this aims to simulate what are the spacecraft that were active or inactive in a particular date in Celestia. I hope you find this idea useful and interesting! :smile:
"Open the pod-bay doors HAL"
"I'm sorry Dave, I'm afraid I can't do that"

Spacecrafts Addon Developer since 2018
Celestia Versions: 1.6.9 (Mobile), 1.6.3 and 1.7.0 (Windows)

Endeavor35
Posts: 49
Joined: 16.11.2020
With us: 3 years 5 months

Post #2by Endeavor35 » 17.04.2021, 22:11

I think the idea to do something like this could be interesting. The question I have is unlike stars, spacecraft generally have their own unique designs which differ from one another. So if we were to say simulate certain defunct satellites, from my understanding we would either need to have a very lightweight file/s, which hold/s a series of simplified spacecraft model designs to allow for very fast loading. Or do something so that when out of view, the model does not eat up a lot of performance on lower end devices.


I say this as I find that all the sprite models, regardless of who made them, always cause both my FPS & device performance to be hurt significantly. In addition, would this also be accounting for historical hardware such as spent rocket stages, or special cases such as the Apollo 9 LEM "Snoopy?" Or would it be something that would start or remain focused on spacecraft such as satellite similar to your recent spacecraft addons? If it were the second of the two scenarios, I could possibly see something like this working imho.


As long as it didn't impact performance or cause the base/vanilla install of Celestia to become very large, I would be open to such an idea. Perhaps something like what Microsoft has done with some of their past Flight Sim games. In which all non playable aircraft had very simplified models compared to the playable aircraft. Granted I realize that Celestia is not that kind of software, but the idea of using a lightweight/simplified version of the actual spacecraft model is more of what I am focusing on here. That way, users on lower end devices or even on mobile could still have relatively good performance as their devices would not be trying to load a thousand plus high fidelity spacecraft models all at the same time.


Hope the feedback/critique helps! :smile:

Avatar
Topic author
DaveBowman2001
Posts: 741
Joined: 06.07.2018
Age: 23
With us: 5 years 10 months
Location: Manila, Philippines

Post #3by DaveBowman2001 » 18.04.2021, 06:21

Endeavor35 wrote:The question I have is unlike stars, spacecraft generally have their own unique designs which differ from one another. So if we were to say simulate certain defunct satellites, from my understanding we would either need to have a very lightweight file/s, which hold/s a series of simplified spacecraft model designs to allow for very fast loading. Or do something so that when out of view, the model does not eat up a lot of performance on lower end devices.
Creating another dedicated model for defunct spacecraft is no longer needed, since on the SSC it just duplicates the parameters that made the object rendered in Celestia possible.

For example: ISO (Infrared Space Observatory) was launched in 17 Nov 1995, but was decommissioned and made its last contact with Earth on 16 May 1998....

Code: Select all

"ISO:Infrared Space Observatory" "Sol/Earth"
{
   Class   "spacecraft"
   Mesh   "iso.3ds"
   Radius   0.003

   Beginning   "1995 11 17 01:20:00"
   Ending   "1998 05 16 12:00:00"

   OrbitFrame
   {
      EclipticJ2000   { Center "Sol/Earth" }
   }
   EllipticalOrbit
   {
      Epoch   2451010.5  # 1998 Jul 16
      Period   0.9970588169786434
      SemiMajorAxis   42158.22893346175
      Eccentricity   0.8156539388250974
      Inclination   23.73542909356602
      AscendingNode   174.3851138309547
      ArgOfPericenter   13.93068437276141
      MeanAnomaly   55.59052362064862
   }
   FixedRotation   { }
   BodyFrame
   {
      TwoVector
      {
         Center   "Sol/Earth/ISO"
         Primary
         {
            Axis   "-z"
            RelativePosition
            {
               Observer   "Sol/Earth/ISO"
               Target   "Sol/Earth"
            }
         }
         Secondary
         {
            Axis   "y"
            RelativeVelocity
            {
               Observer   "Sol/Earth/ISO"
               Target   "Sol/Earth"
            }
         }
      }
   }
   Albedo   0.4
   InfoURL   "https://en.wikipedia.org/wiki/Infrared_Space_Observatory"
}

....but since it wasn't deorbited and still orbiting Earth intact, its derelict remains were coded in the SSC like this:

Code: Select all

Add "ISO:Infrared Space Observatory" "Sol/Earth"
{
   Class   "component"
   Mesh   "iso.3ds"
   Radius   0.003

   Beginning   "1998 05 16 12:00:00"

   OrbitFrame
   {
      EclipticJ2000   { Center "Sol/Earth" }
   }
   EllipticalOrbit
   {
      Epoch   2451010.5  # 1998 Jul 16
      Period   0.9970588169786434
      SemiMajorAxis   42158.22893346175
      Eccentricity   0.8156539388250974
      Inclination   23.73542909356602
      AscendingNode   174.3851138309547
      ArgOfPericenter   13.93068437276141
      MeanAnomaly   55.59052362064862
   }
   FixedRotation   { }
   BodyFrame
   {
      TwoVector
      {
         Center   "Sol/Earth/ISO"
         Primary
         {
            Axis   "-z"
            RelativePosition
            {
               Observer   "Sol/Earth/ISO"
               Target   "Sol/Earth"
            }
         }
         Secondary
         {
            Axis   "y"
            RelativeVelocity
            {
               Observer   "Sol/Earth/ISO"
               Target   "Sol/Earth"
            }
         }
      }
   }
   Albedo   0.4
   InfoURL   "https://en.wikipedia.org/wiki/Infrared_Space_Observatory"
}

Notice that the second code is almost the same copy as the first one. ISO's class was changed from "spacecraft" to "component", and the Beginning date of the duplicate starts at exactly the same time ISO lost contact with Earth ("1998 05 16 12:00:00"). What would happen to ISO in Celestia is that when spacecraft's label disappear abruptly from view upon reaching that date, that would signal the time the satellite no longer functions/contacts Earth. The "Add" function is included right next to the object's name to prevent double entries in Celestia

ISO.png
ISO two minutes before losing contact with Earth

ISO.png
ISO two minutes after it lost contact with Earth. Notice that ISO's label in respect to other satellites in the background has disappeared

Endeavor35 wrote:In addition, would this also be accounting for historical hardware such as spent rocket stages, or special cases such as the Apollo 10 LEM "Snoopy?"
Yes, this could be applied to these as well!

Endeavor35 wrote:Or would it be something that would start or remain focused on spacecraft such as satellite similar to your recent spacecraft addons?
Yep! This is the main idea all along, which I applied on Thomas Guilpain's Geostationary Earth Satellites (2021 edition), ERBS, and the Surveyor Landers
"Open the pod-bay doors HAL"
"I'm sorry Dave, I'm afraid I can't do that"

Spacecrafts Addon Developer since 2018
Celestia Versions: 1.6.9 (Mobile), 1.6.3 and 1.7.0 (Windows)

Avatar
Topic author
DaveBowman2001
Posts: 741
Joined: 06.07.2018
Age: 23
With us: 5 years 10 months
Location: Manila, Philippines

Post #4by DaveBowman2001 » 11.01.2022, 01:03

Ok so the "component" class does not fully work properly on version 1.7.0 (Windows and Android), and on some cases, some spacecraft will not become instantly visible once their Ending dates are reached. Switching their classes into "diffuse" solves the problem, except that they are no longer clickable by default.

Example of this change can be seen on the SSC file inside the Mariner 10 (2022) addon
"Open the pod-bay doors HAL"
"I'm sorry Dave, I'm afraid I can't do that"

Spacecrafts Addon Developer since 2018
Celestia Versions: 1.6.9 (Mobile), 1.6.3 and 1.7.0 (Windows)


Return to “Ideas & News”