Celestia/1.6.0 Features

Triaxial ellipsoids for solar system bodiesEdit

SourceForge feature tracker item 1662019

Code change, plus catalog updates. Code change is complete, but some discussion of specifics required before checkin.

How should triaxial ellipsoids be specified? For stars, we specify the shape with SemiAxes [ x y z ] and this is multiplied by the radius. But this is slightly inconvenient for planets, where we'd like to be able to simply write:

    SemiAxes [ 209.1 196.2 191.4 ]

However, it would be unfortunate to have star and planet sizes specified in different ways. We could have things both ways with a slightly more complex definition of how the Radius and SemiAxes interact:

  • SemiAxes specified, no Radius given: body semiaxes are (sa.x, sa.y, sa.z)
  • Radius specified, no SemiAxes given: body semiaxes are (r, r, r)
  • Both SemiAxes and Radius specified: body semiaxes are (r*sa.x, r*sa.y, r*sa.z)

The order of the semiaxes for stars mismatches the coordinate system used elsewhere in ssc files--the y and z axes are switched, matching Celestia's internal coordinate system. Rather than copying this for planets, it may be a better idea to just change how stars work.

Planet and satellite shapes from the IAU/IAG Working Group (WG) on Cartographic Coordinates and Rotational Elements

Presumably stars would then behave as if they always had a Radius definition, from the blackbody calculation? Ajtribick (talk)
Yes, that's what I was thinking: even if the radius is omitted in the stc file, a star always has an implicit radius based on the blackbody calculation. Does this seem sensible to you? --Claurel (talk) 01:07, 25 January 2008 (UTC)

Implemented in revision 4077 --Claurel (talk) 07:16, 4 February 2008 (UTC)

Coordinate displayEdit

I think that these should all be considered together, not as separate features:

  • Observer position coordinates
  • Apparent RA/Dec
  • New coordinate grids
  • Ecliptic
  • Geodetic coordinates (instead of geocentric latitude/longitude)
  • Galactic coordinates

One idea that came out of the RA/Dec discussion on the dev list is the need to show observer coordinates. I think that this is true whether or not they're needed to make sense of the position of the selection. At present, Celestia shows the observer's reference frame (followed object and target object, follow/sync orbit/chase/phase lock) and the speed within the reference frame. Showing velocity but not position seems like a serious omission! The observer position could be shown as either rectangular coordinates or spherical (longitude, latitude, altitude) relative to the center of the observer frame.

Change HUD textEdit

There's some data on shown in the 3D view that really doesnt belong there: temperature, day length, rotation rate. These are either derived from potentially unreliable data, not interesting enough to merit using up space in the 3D view, or both. While I think that it is still worth showing this information, I believe that it should be displayed on an information panel in the GUI, where the data can be accompanied by some explanatory text.

I believe that we when deciding what information goes in the 3D view, we should prefer values that are observer-dependent, such as distance and apparent size. There's an easy to grasp logic in showing observer-dependent value in the observer's view. There's a small practical consequence: observer dependent values tend to change every single frame, so it's convenient to show them in the view that gets refreshed every frame anyhow. There are some observer independent values fundamental enough that they belong in the HUD:

  • Object type (star, galaxy, planet, etc.)
  • Spectral type and absolute magnitude for stars
  • Hubble type for galaxies
  • Radius for planets/moons/asteroids; triaxial dimensions when appropriate

Observer dependent values for all objects:

  • Distance
  • Apparent size (when non-negligible, > 0.1 arcsec)
  • Apparent coordinates

For planets:

  • Phase angle

Values that should be removed from the HUD:

  • Solar system bodies: temperature, day length
  • Stars: luminosity, surface temperature, presence of planets, rotation rate

"Day length" as shown for planets is rather misleading. It actually shows the sidereal rotation rate, whereas 'day length' without any qualifiers is typically understood to mean the length of the solar day.

Phase angle is now displayed for solar system bodies. --Claurel (talk) 16:47, 16 July 2008 (UTC)

Add Vincent's compassEdit

A possible enhancement would be to add a mark that shows the direction of the currently selected object.

Deferred until after 1.6.0 --Claurel (talk) 01:00, 2 October 2008 (UTC)

Show/hide for objectsEdit

Implemented, revision 4081 --Claurel (talk) 07:14, 4 February 2008 (UTC)

Clickable/unclickable setting for objectsEdit

SourceForge feature tracker item 371302

(as requested by Martin and others)

Implemented in revision 4073 --Claurel (talk) 19:35, 27 February 2008 (UTC)

New solar system body classesEdit

  • minormoon
  • surfacefeature
  • component
  • diffuse

Classifying small moons as minor will let us get rid of the clutter of small moon orbits around the giant planets except in those rare cases when someone actually wants to look at them.

feature and component give more options for classifying objects. In addition, objects of this class will never be rendered as star-like discs at a distance.

Possibly want a dwarfplanet class too.

The diffuse class would be used for objects like dust plumes and gas clouds.

Default properties for the various classes are as shown in the table below.

               Planet  Moon  Spacecraft  Component  Invisible  Diffuse
Visible         yes     Yes    Yes         Yes        No         Yes
VisibleAsPoint  yes     Yes    Yes         No         No         No
Clickable       yes     Yes    Yes         Yes        No         No(?)
Planetshine     yes     Yes    No          No         No         No

Surfacefeature and component implemented in revision 4077 --Claurel (talk) 07:12, 4 February 2008 (UTC)

"Minormoon and diffuse implemented in revision 4273" --Claurel (talk) 19:07, 14 April 2008 (UTC)

Lighting from secondary sourcesEdit

For example, Earthshine, ring shine - what about spherical harmonics for approximating global illumination?

Implemented, but not yet committed to SVN. Still need to properly consider phase when calculating amount of reflected light. --Claurel (talk) 17:24, 20 March 2008 (UTC)

Planetshine implemented completely in revision 4237 -- (talk) 18:12, 3 April 2008 (UTC)

More high-resolution texturesEdit

  • Earth
  • Mars
  • Galilean satellites
  • More Saturnian satellites

Possible official packages for these downloaded separately from the main package to save bandwidth?

Data file updatesEdit

  • Add Andrew's CHARM2 catalog of measured stellar radii
  • Add Selden's pulsar catalog
I haven't updated it in a while and have misplaced the program used to generate it :( Martin (Cham) did a more recent translation from the ATNF Web site. ... Selden (talk) 12:41, 23 January 2008 (UTC)

CHARM2 catalog committed by Andrew, SVN revision 4462 --Claurel (talk) 01:02, 2 October 2008 (UTC)

Model updatesEdit

  • Add Itokawa model
  • Add improved Eros model
  • Add improved ISS model

Add depth sorting for markersEdit

Allow some markers to be marked as 'always in foreground'

Implemented in revision 4119 --Claurel (talk) 00:34, 14 February 2008 (UTC)

Make Modify work for star catalogsEdit

Feature tracker request from ajtribick

Implemented in SVN revision 4416; Add and Replace dispositions added for consistency with ssc files. --Claurel (talk) 01:04, 2 October 2008 (UTC)

Reference frame workEdit

(mostly internal stuff):

  • Clean up frame code; rewrite old frames ("Follow", "Sync Orbit", etc.) in terms of 1.5.0 frames.
  • Expose 1.5.0 frames in celx scripting.
  • Improve reference frame performance through caching
  • Implement reference frame hierarchy for solar system objects; use this frame hierarchy in the renderer and solar system browser.
  • Implement velocity methods for orbits

In progress. Main cleanup completed, velocity methods and caching improvements being tested. --Claurel (talk) 00:39, 14 February 2008 (UTC)

Implemented. More velocity methods still needed for orbits. Decided to continue using the namespace hierarchy in solar system browser, because the frame hierarchy changes over times. --Claurel (talk) 01:24, 24 February 2008 (UTC)

All items implemented, though velocity methods for some orbit times not yet finished. Decided that for the solar system browser, the namespace hierarchy is more appropriate than frame hierachy, since it doesn't change over time. --Claurel (talk) 01:27, 15 March 2008 (UTC)

Implemented velocity methods for EllipticalOrbit, SampledTrajectory, and SPICE Orbit (as of revision 4280) --Claurel (talk) 19:19, 16 April 2008 (UTC)

Switch to int64 based BigFixEdit

(for performance) New class already coded, but needs extensive testing for compatibility with older version of Celestia. The new class includes a high precision multiplication operator, which will make it easier to code some frames stuff.

Implemented; currently validating and characterizing performance of new class --Claurel (talk) 07:13, 4 February 2008 (UTC)

Completed --Claurel (talk)

Relative cel URLsEdit

Store reference frame coordinates in cel URLs instead of absolute coordinates; will result in more future-proof URLs.

Implemented; patch being tested to verify compatibility with existing cel URLs --Claurel (talk) 20:47, 23 April 2008 (UTC)

Code committed in revision 4318. Creating version 3 URLs currently just supported in Qt4 front-end --Claurel (talk) 20:07, 6 May 2008 (UTC)

Toti's animated texturesEdit

Deferred until after 1.6.0. --Claurel (talk) 01:10, 2 October 2008 (UTC)

Improved SPICE supportEdit

  • Handle orientation kernels
  • Automatically determine valid time windows
  • Better handling of relative paths

Added automatic time window determination and support for multiple kernels in a single SpiceOrbit (revision 4128). --Claurel (talk) 01:27, 24 February 2008 (UTC)

Implemented rotation model based on SPICE frames, allowing use of spacecraft orientation kernels. (revision 4247). --Claurel (talk) 03:31, 9 April 2008 (UTC)

Selectable markersEdit

It would be convenient if marked objects could be clicked on and selected regardless of their apparent magnitude. Feature tracker request from ajtribick

Deferred until after 1.6.0. --Claurel (talk) 01:11, 2 October 2008 (UTC)

Alternate star catalog support in celx scriptsEdit

Celx scripts should be able to query the HD and SAO catalog numbers for stars. Feature tracker request from ajtribick

SourceForge feature tracker item 1875572

Implemented in revision 4116 --Claurel (talk) 00:37, 14 February 2008 (UTC)

Add a globular cluster catalogEdit

Here's an interesting catalog of the Milky Way clusters, with locations (include distances), photometric parameters, metallicities, and more: http://physwww.physics.mcmaster.ca/%7Eharris/mwgc.dat

Globular clusters were discussed earlier and there was some disagreement about whether they should be galaxies, open clusters, or a new type of deep sky object. My opinion at this point is that we should add a new type of deep sky object. If we do this, we need to choose an appropriate set of parameters.

Implemented by Fridger, SVN revisions 4447-4449 --Claurel (talk) 00:58, 2 October 2008 (UTC)

Object timelinesEdit

Timeline is a new SSC property that addresses a frequent problem with complex add-ons. A motivating example is the Cassini-Huygens mission. The Huygens probe was initially attached to the Cassini spacecraft. On December 25, 2004, it detached from Cassini for three weeks of free flight before entering Titan's atmosphere and then landing on its surface. It's most convenient to describe the complete mission using three reference frames: the body-fixed frame of Cassini, a Saturn-centered inertial frame for the free flight section, and finally the body-fixed frame of Titan. In Celestia 1.5.0, an object only has a single reference frame, so an SSC file for Huygens must used three different objects for the probe. With a Timeline, it is possible to specify different reference frames, trajectories, and rotation models for the different phases of the mission.

Here's an example of how the Huygens mission might look in an SSC file:

"Huygens" "Sol"
    Class "spacecraft"
    Mesh "huygens.3ds"
    Radius 0.00135

        # Attached to Cassini
             Beginning "1997 10 15 09:27"
             OrbitFrame { BodyFixed { Center "Sol/Cassini" } }
             FixedPosition [ ... ]
             BodyFrame { BodyFixed { Center "Sol/Cassini" } }
             FixedRotation { ... }

         # Free flight
              Beginning "2004 12 25 02:01"
              OrbitFrame { EclipticJ2000 { Center "Sol/Saturn/Titan" } }
              SampledTrajectory { ... }
              BodyFrame { EclipticJ2000 { } }
              SampledOrientation { ... }

          # Landed on Titan
               Beginning "2005 1 14 09:00"
               OrbitFrame { BodyFixed { Center "Sol/Saturn/Titan" } }
               FixedPosition [ ... ]
               BodyFrame { BodyFixed { Center "Sol/Saturn/Titan" } }
               FixedRotation { ... }

Implemented and committed. Need to complete documentation. --Claurel (talk) 01:25, 24 February 2008 (UTC)


Rotation of some solar system bodies is not adequately described by constant rotation about a fixed axis. We need custom rotation models for such bodies, with C++ functions to calculate orientation. They should be available through a CustomRotation SSC property, analagous to the way CustomOrbit works.

We should have CustomRotations for:

  • Earth (precession and nutation)
  • the Moon
  • Major Saturnian satellites (especially Mimas)
  • Galilean satellites
  • Triton
  • IAU models for the planets

The secular terms for pole positions should be clamped to avoid having the planets 'roll over' at times in the distant past or future.

Implemented IAU models for planets, Moon, Martian, Jovian, and major Saturnian satellites. --Claurel (talk) 01:36, 24 February 2008 (UTC)

Implemented precession for Earth: P03 model, and long period extension of P03 --Claurel (talk) 01:24, 15 March 2008 (UTC)

Implemented IAU rotation models for major Uranian satellites. --Claurel (talk) 22:17, 2 May 2008 (UTC)

Remove stellar distance limitEdit

Celestia 1.5.0 didn't handle stars more than 16,000 light years from the Sun. This limitation was addressed in revision 4198, with the maximum distance increased to 10 million light years.

Implemented in revision 4198 --Claurel (talk) 01:35, 22 March 2008 (UTC)

Support InfoURLs for starsEdit

In 1.5.0, solar system bodies and deep sky objects could have InfoURLs, but stars always used the default SIMBAD URL. It would be useful to have InfoURLs available for stars as well. Like other extended star attributes, InfoURLs would only be available for stars defined in stc files.

Implemented in revision 4185 --Claurel (talk) 01:35, 22 March 2008 (UTC)

Orbit display for reference pointsEdit

An often-reported issue in 1.5.0 was that Pluto's orbit was no longer visible. This is because the orbit of Pluto was redefined relative to the Pluto−Charon barycenter, and the heliocentric orbit of the barycenter wasn't shown. 1.6.0 will be changed to render the orbit of a reference point if one of the objects orbiting that reference point is either a planet, moon, asteroid, or spacecraft.

Implemented in revision 4237 --Claurel (talk) 03:30, 9 April 2008 (UTC)

SampledTrajectory files with velocitiesEdit

Adding velocity vectors to SampledTrajectory records can make the trajectory much more accurate for a given memory footprint (i.e. less samples required for the same accuracy.) HORIZONS can generate ephemerides with velocities, so there is a ready source of xyz+velocity trajectory data. Files with position and velocity will have the extension xyzv; such files can replace the xyz file in a SampledOrbit or SampledTrajectory without any other modification to an ssc or stc file.

Implemented in revision 4236 -- (talk) 18:17, 3 April 2008 (UTC)

Update Cassini trajectoryEdit

The current trajectory for Cassini only covers the nominal mission, which ends in June 2008. Now that the trajectory for the extended mission is available we should include it in Celestia. Also, the new Timeline feature can be used to define Huygens as a single object instead of as separate objects for the attached-to-Cassini and free flight mission segments.

New Cassini mission added in SVN revision 4420. --Claurel (talk) 01:08, 2 October 2008 (UTC)

Improved coordinate gridsEdit

Add new grid types in addition to the existing equatorial grid: horizontal (alt-azimuth), ecliptic, and galactic. The grid lines drawn should change as the user zooms in, maintaining a roughly line density. Subdivision of grid arcs should be adaptive so that they always appear smooth. In order to make the labels useful, they must always be shown at points within the field of view, not in fixed locations as is the case in the current implementation.

Implemented in SVN revision 4352 --Claurel (talk) 02:29, 31 May 2008 (UTC)

Double starsEdit

  1. Celestia 1.5.0 still does not calculate temperature if planet orbits a double star (like Tatooine in Star Wars).
  2. If both stars have planets, only planets of one star are listed in Solar System Browser. And always the same one, not the nearest one!

The solar system browser problem is already fixed in the Qt version of Celestia. The temperature calculation will be addressed after 1.6.0. In my opinion, the temperature is not important enough that it should be displayed as part of the overlay text. It should instead be shown in a separate information window (possibly with some explanation of exactly what the equilibrium temperature is--people are understandably confused when they notice that Venus is cooler than Earth. --Claurel (talk) 16:52, 16 July 2008 (UTC)

Update stars.datEdit

Switch to a more rigorous and better documented method of building stars.dat from the HIPPARCOS data set. Use the new reduction as a starting point.

New stars.dat produced by Andrew from the latest version of the HIPPARCOS catalog. SVN revision 4462 --Claurel (talk) 01:10, 2 October 2008 (UTC)

Multiple names for solar system bodiesEdit

Make it possible to assign multiple names to solar system bodies using the same colon separated name lists as for stars and deep sky objects.

Ongoing projectsEdit

  • Qt4 interface
  • Atmosphere rendering
  • HDR
  • High-resolution tile rendering
  • Package system for add-ons