# 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: