Grant's empty object for Celestia


Note: this method is obsolete as of Celestia v1.3.0. See Celestia's Invisible Barycenter for how to use the new invisible object.

Occasionally in Celestia it is useful to have a completely invisible object that other objects can orbit around. The obvious example is the barycentre of a pair of bodies in mutual orbit - Celestia needs an object positioned at the centre of gravity to "carry" the orbits of the two real bodies, but we don't want to be able to see anything in that position when we view the simulated orbits.

Because of the way Celestia handles visibility, our invisible object must have several properties that would be mutually exclusive in the real world:

  1. It must be transparent, so that it doesn't obscure background objects when viewed at close range.
  2. It must be black, so that it doesn't appear as a star-like point when viewed from a distance.
  3. It must be larger and brighter than any of the objects circling it. (If, from the current viewpoint, Celestia calculates that an object has become too dim to see, it will not render any of that body's satellites - so if the orbiting bodies are to remain visible, the central object must be the brightest of all.)
Fortunately, Celestia allows us to achieve all these objectives simultaneously.

I've built a mesh object called "empty.3ds" which is completely transparent, and so invisible at close range. If we colour it black, using Color [ 0 0 0 ], it will also be invisible at long range. And if we set its Radius and Albedo greater than any object orbiting it, we'll force Celestia to keep rendering the orbiting bodies until they become too dim to see (while empty.3ds stays invisible, because even a very "bright" black object is still black!)

Many thanks to Paul "Calculus" for making the suggestions that helped to finally solve the "invisible object" problem.

The following definition for a mismatched pair of binary asteroids should make the usefulness of empty.3ds clear.

Grant



"Binary Asteroids" "Sol"
{
 Mesh "empty.3ds"     # Transparent
 Color [ 0 0 0 ]      # Black
 
 EllipticalOrbit { 
  Period          1   #
  SemiMajorAxis   1   # An Earth Trojan, for fun
  MeanLongitude   160 #
 }

 Obliquity 30  # A random tilt to the binary orbits

 Radius   30   # Make it bigger ...
 Albedo   1.0  # ... and brighter than the orbiting bodies
}

"A" "Sol/Binary Asteroids"
{
 Mesh "roughsphere.cms"
 Texture "asteroid.jpg"

 EllipticalOrbit {
  Period          20.5
  SemiMajorAxis   45
  Eccentricity    0.5
  ArgOfPericenter 180
  MeanLongitude   90
 }

 Radius  20
 Albedo 0.07
}

"B" "Sol/Binary Asteroids"
{
 Mesh "roughsphere.cms"
 Texture "asteroid.jpg"

 EllipticalOrbit {
  Period          20.5 # Periods must be the same
  SemiMajorAxis   360
  Eccentricity    0.5  # Eccentricities must be the same
  ArgOfPericenter 0    # Pericenters opposite each other
  MeanLongitude   270  # Longitudes opposite each other
 }

 Radius  10
 Albedo 0.07
}

See also:

The content of this Web page was provided by Grant Hutchison.

This Web page is maintained by Selden Ball at Wilson Lab.
Please send any comments or corrections to seb@lepp.cornell.edu