Ssc Part Addons Tutorial

## Introduction

Celestia uses catalogs to define its objects. It loads SSC catalogs only once, when it starts. First it loads the ones in its data directory in alphabetical order, then it loads the ones in the extras directories, also in alphabetical order.

### What is the SSC file?

"Solar System Catalog" files are primarily used to define the objects which can be found in a stellar system, such as planets, moons, asteroids, comets, and spacecraft. They also have four other uses: they can define alternative surface textures, locations on or near an object, and orbital reference points. An SSC file can also edit objects which have been defined in other SSC catalog files.

* Objects are defined by specifying a quoted name, the quoted path to the object, and a list of parameters. The type of object is specified by a Class statement among its parameters or will be assumed from the Radius specified for it.
* Alternative surfaces are defined by prefixing the object's name by the keyword **AltSurface**. Their definitions can include any of the parameters related to surface textures.
* Location labels are defined by prefixing the object's name by the keyword **Location**. Their definitions use special keywords.
* Orbital reference points are available only in Celestia v1.5.0 or later. They are defined by prefixing the object's name by the keyword **ReferencePoint**. Their definitions can include any of the parameters related to orbits or trajectories.
* Editing a previously defined object can be done by prefixing the object's name by one of the keywords **Modify** or **Replace**. The revised definition can include any of the parameters used to define objects.

SSC catalog files are either in the "data" directory of the Celestia root or in an Add-on's root subdirectory (itself in Celestia's `extras` directory).

Celestia's catalog files are plain text files, and can thus be modified with your favourite text editor.

Celestia uses the file Celestia/data/solarsys.ssc to define most of the bodies that are in our own Solar System.

### Structure of an object definition

**"object name" "object path" { ...*parameters*... }**

The first elements in an SSC object's definition are its name and its "path".

object name = Name of the object, in quotes (e.g. "Mercury"). Provisional designations (e.g. "S/2006 S 5") are okay but won't be able to have secondaries (see below: confusion is caused by the "/" character.). As of Celestia 1.6.0, multiple names separated by colons are allowed ("Eris:2003 UB313").

object path = The sequence of primaries that lead to the object; in other words, the bodies that it orbits around. Paths start with a star and work down from there.

The path separator is a forward slash ("/"). For example, "Mercury"'s path is just "Sol". The path of "Romulus" and "Remus", the moons of the minor planet "(87) Sylvia", are both "Sol/(87) Sylvia". The path of a Lunar Excursion Module (LEM) on the surface of the Moon would be "Sol/Earth/Moon". Paths are also used in Celestia's browser menus.
Because of the path separator used by Celestia, the names of objects known only by their provisional designations may need to be represented differently should they have secondaries. Alternatively, one could represent the slash ("/") by a "fraction slash" (HTML "&frasl;" or "&#8260;" : "⁄") or a vertical bar ("|").
The object's descriptive *parameters* follow within the accolades ("braces" or "squiggly brackets": {} )

### Representing colors

**Color [ *R G B* ]**

Colors are represented using the R G B (red green blue) convention. Each of the three numbers in the 0.0 to 1.0 range represents the saturation of that colour component. 0.0 0.0 0.0 is black, 1.0 1.0 1.0 is white, 1.0 0.0 0.0 is pure red, and so on.

### Comments

**#**

The pound sign ("crosshatch" or "sharp sign") begins a comment: whatever lies after this sign up to the next line terminator is ignored by Celestia.

## Object parameters

Below is an alphabetical list of the parameters used to define an SSC object. Some of these parameters themselves require another list of parameters within {}.

### Albedo f

The Bond albedo of the object: a number between 0.0 and 1.0 (black to white, perfect absorber to perfect reflector). This determines the brightness of the point used to represent the object when it is too small to draw. If set to 0, the object is never drawn.

### Atmosphere { ...*parameters*... }

Defines an object's atmosphere. This is not part of the surface texture of an SSC object. It's drawn surrounding the object. The possible parameters within the accolades ("{ }") are:

#### CloudMap "filename"

The cloud texture (a transparent png or dds).
For more information, see the page Celestia/Textures.
#### CloudSpeed f

The cloud speed in km/h (in the direct rotation direction?).
*The following parameters are deprecated in Celestia v1.5.0 and later. Mie and Rayleigh scattering parameters should be used instead.*

#### Height f

Thickness of the atmosphere in kilometres.
#### Lower [ R G B ]

Colour of the atmosphere near the surface.
#### Sky [ R G B ]

Colour of the sky when seen from *inside* the atmosphere.

### Beginning *f* or "*YYYY MM DD HH:MM:SS*"

Specifies a time before which the object doesn't exist.

The Beginning time may be provided as a floating point number, in which case it is interpreted an astronomical Julian date, or it may be provided as a quoted string, in which case it is interpreted as a Gregorian date.

If it is a quoted Gregorian date, YYYY MM DD = year, month, day (integers); HH:MM:SS = hour, minute, second (integers). Since version 1.3.1, Celestia converts these time-stamps into Julian Dates internally. A date to Julian Date and back converter can be found at the U.S. Naval Observatory.

### BumpHeight f

Defaulting to 2.0, the f parameter defines the vertical scale of the **Bumpmap**.

### BumpMap "filename"

A texture file (JPG, PNG, or DDS) used to generate relief.

For more information, see the page Celestia/Textures.

### BlendTexture bool

The "bool" argument is either true or false. BlendTexture is used with **"Color"** to colorize the surface texture image. The Texture's individual color channels are multiplied by the corresponding Color values.

### Class "class"

Class of object: one of **planet moon spacecraft comet asteroid invisible**. By default, Celestia assigns Class based on the object's **Radius**. It is used by Celestia's View Options menu and determines the color of the orbit path drawn for this body. You could assign an artificial satellite to the "moon" class so its orbit is displayed along with those of the true moons. An object with a class of invisible is not drawn. It can be used as an orbital barycenter, orbited by one or more visible objects.

1.6.0 Celestia 1.6.0 adds several new object classes. The complete list of object types is:

* planet
* moon
* dwarfplanet
* minormoon
* asteroid
* comet
* spacecraft
* surfacefeature
* component
* diffuse
* invisible

Celestia treats planet, moon, dwarfplanet, minormoon, and asteroid as identical except for when showing labels and orbit paths in the 3D window, and object categories in the solar system browser. Whether an object is a planet or dwarf planet can be decided based on the criteria set forth in the IAU's 2006 resolution on the definition of a planet. Ultimately, it doesn't make too much difference in Celestia: the orbit and label of the body can be colored differently, but that is all. Asteroid is not a category officially defined by the IAU, but in Celestia this class is used for any natural, solid object that orbits a star and is too small to be a dwarf planet (i.e. it doesn't have enough mass to assume an ellipsoidal shape) and is not a comet.

A moon is a natural object in orbit around a planet. The distinction between moon and minor moon is arbitrary: Mars's two small satellites are both classified as moons, while dozens of objects of similar size orbiting the outer planets are minor moons. The minor moon class was introduced to eliminate the distracting clutter of moon orbits around the outer planets of the Solar System; a user now has a choice of whether or not to display the orbits of the swarm of rocks orbiting Jupiter, Saturn, Uranus, and Neptune.

Comets are treated very much like asteroids, but are drawn with dust tails when sufficiently close to the Sun and labeled in a distinct color. Some objects in the Solar System have both comet and asteroid designations, such as Chiron. Such dual classification is not possible in Celestia.

Human-made objects traveling through space should be assigned the class spacecraft. In addition to affecting label and orbit color, slightly different information is displayed for spacecraft than for natural objects. The surface feature class should be used for buildings and other landmarks fixed to the surface of a planet, moon, or asteroid. Objects floating in space are rendered as points of light when they occupy less than a pixel on screen. This effect looks unrealisitic for objects on the surface of a planet, and so it is disabled by default for surface features. The component class is used for parts of either surface features or spacecraft that are defined as separate objects in an ssc file. As with surface features, they aren't shown as points of light at a distance.

The diffuse class should be used for gas clouds, dust plumes, and the like. By default, diffuse objects cannot be selected by clicking. They are also not labeled or visible at a distance as a point of light.

Warning: **LongLat** does not place objects correctly when used with **Class "surfacefeature"** in Celestia v1.5.0 and later. Use **FixedPosition [ x y z ]** or **FixedPosition { Planetographic [ Long Lat Alt ] }** instead.

### Color [ R G B ]

Colorizes the object when there is no texture. Also specifies the color of the albedo point when the object is too small to resolve.

R, G and B should have values between 0 and 1, inclusive.

### CustomOrbit "orbit name"

Invokes built-in high-precision orbit computations, such as "vsop87-mercury". CustomOrbit overrides EllipticalOrbit. If an invalid orbit name is provided, CustomOrbit is ignored.

For details, see Celestia/Trajectories, section CustomOrbit.

### EllipticalOrbit { ...*parameters*... }

Defines an elliptical orbit (the generic case).

**EllipticalOrbit** parameters correspond to traditional Keplerian orbital parameters. A description of those parameters is in the Astrodynamics WikiBook, in its chapter on Classical Orbit Elements.

For more information, see Celestia/Trajectories, section EllipticalOrbit.

#### Eccentricity f

Optionally determines the shape of the orbit. In fact, the name **EllipticalOrbit** is a bit misleading since the orbit may be circular, elliptical, parabolic, or hyperbolic depending upon the eccentricity:

* + eccentricity = 0 -- circle
	+ 0 < eccentricity < 1 -- ellipse
	+ eccentricity = 1 -- parabola
	+ eccentricity > 1 -- hyperbola

*Note: An eccentricity of exactly 1 does not work in Celestia.*
If **Eccentricity** is not provided, a circle is assumed.
#### Epoch f or "*YYYY MM DD HH:MM:SS*"

Optional, the Epoch of the orbital elements (f, the date when they are valid, can be specified either with a number, which represents an astronomical Julian Date, or by a quoted string, which represents a conventional Gregorian date. If **Epoch** is omitted, 1 January 2000 is assumed.

For example,
2452583.763194445 # 2002 Nov 5 06:19UT (Galileo encounter)
is the same epoch value as
"2002 11 5 6:19:00"

Starting with Celestia v1.5.0, **Epoch** must be specified in TDB. See Celestia/Time Scales for more information about TDB and UTC.

#### SemiMajorAxis f

One of SemiMajorAxis or PericenterDistance is required. The Semi-major axis of the orbit is in astronomical units (AUs) for objects which orbit around Stars or Barycenters, kilometres for everything else.

Note: the SemiMajorAxis of an hyperbolic orbit has a negative value.

#### PericenterDistance f

Alternate for SemiMajorAxis, is in astronomical units (AUs) for objects which orbit around Stars or Barycenters, kilometres for everything else.

#### ArgOfPericenter f

Optional, the orbit's argument of pericenter, in degrees (measured from the ascending node). Specify either LongOfPericenter or ArgOfPericenter, not both. If both are specified, ArgOfPericenter is used.

#### LongOfPericenter f

Optional, the orbit's longitude of pericenter, in degrees. This is the sum of the argument of pericenter and the longitude of the ascending node. Specify either LongOfPericenter or ArgOfPericenter, not both. If both are specified, ArgOfPericenter is used.

#### AscendingNode f

Optionally defines the longitude of the point in its orbit where the orbiting body crosses the reference plane going "upward" or "northward". It is measured in degrees from the fundametal direction. If **AscendingNode** is not specified, a value of 0 degrees is assumed.

#### Inclination f

Optional orbital inclination, in degrees. It is with respect to the Ecliptic for the Solar System's planets, with respect to the primary's equator for everything else. Starting with Celestia v1.5.0, any of a number of different reference planes can be specified. See Reference Frames for details. If **Inclination** is not specified, a value of 0 degrees is assumed.

#### MeanAnomaly f

Optional, the object's mean anomaly for Epoch, in degrees. This is the time that has elapsed since pericenter, divided by the orbital period, times 360 degrees. Specify either MeanLongitude or MeanAnomaly, not both. If both are specified, MeanAnomaly is used.

#### MeanLongitude f

Optional, the object's mean longitude, in degrees. This is the sum of the longitude of pericenter and the mean anomaly. Specify either MeanLongitude or MeanAnomaly, not both. If both are specified, MeanAnomaly is used.

#### Period f

Required, the orbital period is given in Earth years for objects which orbit around Stars or Barycenters, Earth solar days for everything else.

For a closed, elliptical orbit around our Sun,

or

When defining an hyperbolic orbit around the Sun, set period to be

where:

is the period measured in years,
is the pericenter distance measured in AU,
is the eccentricity, and
is the semimajor axis of the orbit, also measured in AU, and which has a negative value for hyperbolic orbits.
### Emissive boolean

Specifies whether the object should seem to glow (true) or should be illuminated by light sources (false). Its default value is false.

Emissive true objects are bright, but are not light sources. They do not provide any illumination for other objects or cause them to cast shadows.

### Ending *f* or "*YYYY MM DD HH:MM:SS*"

Sets a time after which the object doesn't exist.

The Ending time may be provided as a floating point number, in which case it is interpreted the astronomical Julian date, or it may be provided as a quoted string, in which case it is interpreted as the Gregorian date.

If it is a quoted Gregorian date, YYYY MM DD = year, month, day (integers); HH:MM:SS = hour, minute, second (integers). Since version 1.3.1, Celestia converts these time-stamps into Julian Dates internally. A date to Julian Date and back converter can be found at the U.S. Naval Observatory.

### EquatorAscendingNode f

Ascending node, in degrees, of the object's equatorial plane.

*This object rotational parameter is deprecated in Celestia v1.5.0 and later.*

### FixedPosition [ *f f f* ]

*Available only in v1.5.0 or later.*

An orbital specification which positions the object at a fixed position relative to its **OrbitFrame**. See the page on orbits and trajectories for more information.

### HazeColor [ R G B ]

Atmospheric haze colour. Only works for Nvidia graphics cards. In Celestia v1.5.0 one can use Atmosphere Mie and Rayleigh scattering parameters instead, which work for all graphics cards which support OpenGL v2.0.

### HazeDensity f

Atmospheric haze density, a number in the 0.0 to 1.0 range. Only works for Nvidia graphics cards. In Celestia v1.5.0 one can use Atmosphere Mie and Rayleigh scattering parameters instead, which work for all graphics cards which support OpenGL v2.0.

### InfoURL "URL"

The URL of a Web page which describes the object.

### LongLat [ Long Lat Alt ]

**Obsolete** *Deprecated in Celestia v1.5.0 and later*

Previously used to define a place's position, in the object's reference frame. Long is the East longitude (in degrees), Lat its latitude, and Alt the altitude (in kilometres). Longitude is measured toward the East. West longitude can be specified as a negative value.

**Warning:** LongLat does not place objects correctly when used with **OrbitFrame**, **SurfaceObject**, or **Object "Surfacefeature"** in Celestia v1.5.0 and later. Use **FixedPosition [ *x y z* ]** or **FixedPosition { Planetographic [ *Long Lat Alt* ] }** instead.

### Mesh "filename"

A 3D model file (cmod, cms, or 3ds) describing a non-spherical object. If no **Mesh** is specified, the object is assumed to be spherical. These files must be in a directory named "\models". A **Texture** may be draped onto the mesh. See the page on 3D Models for more information.

### MeshCenter [ x y z ]

Offset of the mesh with respect to its center.

### MeshScale scaleFactor

MeshScale is only used when an object has a mesh file and NormalizeMesh is set to false. It specifies the scale factor needed to convert the mesh's internal units into kilometers. For example, if the mesh file has coordinates given in units of meters, the MeshScale should be set to 0.001:

```
MeshScale 0.001

```

When NormalizeMesh is true (the default), MeshScale is ignored, and Celestia automatically scales the mesh to fit inside the sphere with a size equal to the value of the object's Radius property.

### NightTexture "filename"

The night-side texture of the object (JPG, PNG, or DDS; use PNG or DDS for transparency).

For more information, see the page Celestia/Textures.

### NormalMap "filename"

A map of surface normal vectors used to describe the irregularities in the surface.

For more information, see the page Celestia/Textures.

### NormalizeMesh boolean

Specifies whether Celestia should apply automatic scaling and centering to a mesh file. This property is true by default.

Overriding automatic scaling of meshes is useful when creating multicomponent spacecraft which have their parts in different mesh files. Celestia's automatic scaling and centering can make it very difficult to get the components to align with each other. When NormalizeMesh is false, the mesh is scaled by an amount specified by the MeshScale property. The Radius property doesn't affect the size of the mesh; it effectively just gives the radius of a bounding sphere for the object. The add-on creator must take care to ensure that the Radius is large enough to contain the scaled mesh, otherwise the Celestia may skip rendering the mesh even at times when it is actually in view.

### Oblateness f

The oblateness of a spherical object when no **Mesh** is specified. Oblateness is defined as 1 minus the ratio of the polar to equatorial diameters.

### Obliquity f

The object's rotational obliquity, in degrees. The name of this property is misleading: obliquity is angle between the rotation axis and the normal to the mean orbital plane, but in Celestia this quantity is the angle between the rotation axis and the normal to the body's *reference plane*, typically the ecliptic for planets. Along with "EquatorAscendingNode", defines the axis of rotation.

*This object rotational parameter is deprecated in Celestia v1.5.0 and later. The new rotation model syntax should be used instead.*

### OrbitFrame { *...parameters...* }

*Available only in v1.5.0 or later.*

An **OrbitFrame** defines the reference coordinate system for the other orbital parameters of the SSC object. See the page on orbits and trajectories for details.

Warning: **LongLat** does not place objects correctly when used with **OrbitFrame** in Celestia v1.5.0 and later. Use **FixedPosition [ x y z ]** or **FixedPosition { Planetographic [ Long Lat Alt ] }** instead.

### Orientation [ angle x y z ]

Mesh orientation specified in angle-axis format.

**Orientation** is applied to the model before the rotation model. It is typically used to transform a mesh into a different coordinate system. Unlike the rotation model, **Orientation** does not affect the body fixed frame of an object.

### OverlayTexture "filename"

A texture overlaid onto the main texture (PNG or DDS for transparency).

For more information, see the page Celestia/Textures.

Note: there is a bug in Celestia v1.4.1 which causes OverlayTextures not to be drawn when the OpenGL 2.0 render path is selected. They are drawn by the other render paths. This problem is fixed in Celestia v1.5.0.

### PrecessionRate f

The axis or rotation's precession rate, in radians per day.

*This object rotational parameter is deprecated in Celestia v1.5.0 and later. The new rotation model syntax should be used instead.*

### Radius f

The equatorial radius of a spherical object, in kilometres. Also scales 3D models to the specified size.

### SemiAxes [x y z]

Specifies the sizes of the three dimensions of an ellipsoid. These are the dimensions of the object if no Radius property is specified, and the relative sizes if one is specified (the SemiAxes values are multiplied by the Radius value). The radius shown in Celestia is the longest axis, not the average.

#### Inner f

The rings' inner edge, in kilometres from the object's centre.

#### Outer f

The rings' outer edge, in kilometres from the object's centre.

#### Texture "filename"

The ring texture (PNG or DDS for transparency).

For more information, see the page Celestia/Textures.

#### Color [ R G B]

The ring colour, when no texture is specified.

R, G and B should have values between 0 and 1, inclusive.

### RotationEpoch f

The epoch of the rotation description (?).

*This object rotational parameter is deprecated in Celestia v1.5.0 and later. The new rotation model syntax should be used instead.*

### RotationOffset f

Celestia lines the object up with its prime meridian; the offset (in degrees) is the object's phase, in order for the textures and mesh to line up correctly.

*This object rotational parameter is deprecated in Celestia v1.5.0 and later.*

### RotationPeriod f

The object's rotation period in hours.

*This object rotational parameter is deprecated in Celestia v1.5.0 and later.*

### SampledOrbit "*filename*"

File of Julian date and xyz coordinates.

Takes priority over **EllipticalOrbit**.

For details, see Celestia/Trajectories, section SampledOrbit.

### SampledTrajectory {...parameters...}

*Requires v1.5.0 or later.*

Specifies a trajectory based on a file of Julian date / xyz coordinate records. SampledTrajectory is very similar to SampledOrbit with some added control over precision and interpolation.

Takes priority over **SampledOrbit**.

For details, see Celestia/Trajectories, section SampledTrajectory.

### ScriptedOrbit { *parameters* }

*Requires v1.5.0 or later.*

See Celestia/Trajectories, section ScriptedOrbit.

### SpecularColor [ R G B ]

Colour of the specular reflection. **SpecularColor** must be specified if a **SpecularTexture** is used. Without it, no specularity is shown.

### SpecularPower f

The intensity of the reflection; f must be a positive number with a value of 1 or more. Smaller values produce a larger, more diffuse spot, while larger values produce a smaller, more intense spot. **SpecularPower** must be specified if a **SpecularTexture** is used. No **SpecularPower** or a value less than 1 will cause Celestia's rendering engine to do strange things.

### SpecularTexture "filename"

A .jpg, .png, .dds or .ctx image used to define areas with a specular reflection. White = reflective, black = dull. Requires both **SpecularPower** and **SpecularColor**.

For more information, see the page Celestia/Textures.

### SpiceOrbit { *parameters* }

*Requires v1.5.0 or later.*

See Celestia/Trajectories, section SpiceOrbit.

### Texture "filename"

For more information, see the page Celestia/Textures.

A texture image (any of the filetypes PNG, JPG, or DDS) draped over the object's mesh or spheroid. An asterisk wildcard (\*) may be used for the extension (e.g. Texture "mercury.\*"). Textures are rooted in the "\textures" directory, and sorted in three subdirectories: "\hires" for high resolution, "\medres" for medium resolution, and "\lores" for low resolution.

When looking for texture image files, by default Celestia looks first in "medres", then "lores", and finally in "hires". The keyboard shortcuts "R" and "r" change which directory is searched first.

### Timeline

You can help Wikibooks by expanding it.

*requires Celestia v1.6.0 or later (or build from SourceForge svn repository)*

See http://www.shatters.net/forum/viewtopic.php?t=12050 and Celestia/160Features#Object\_timelines

Provides a way to structure multiple, sequential objects as a single object. A space mission consisting of multiple parts can be organized with a single name.

### UniformRotation { ...*parameters*... }

*Available only in Celestia v1.5.0 or later.*

**UniformRotation** replaces the older stand-alone SSC object rotational parameters by a block containing appropriate parameters describing the object's orientation. In addition to **UniformRotation**, blocks for **FixedRotation**, **PrecessingRotation**, **SampledOrientation**, and **ScriptedRotation** also are available.

An object's rotation is defined to be relative to its **BodyFrame {}**.

See the pages on Rotation Models and Reference Frames for details.

### Visible boolean

*Available only in Celestia v1.6.0 or later.*

The setting of the visible property determines whether an object can be seen. This property affects the visibility of the object's geometry, label, and orbit path. The default value of Visible is true for all objects other than reference points. Usually, setting an object's visibility to false is only done if when it's expected that a user may run a script to reveal the object. Setting the visibility of a reference point to true is useful when you want its orbit and label to be shown (e.g. the Pluto−Charon barycenter in the standard Celestia 1.6.0 package.)

## AltSurface *"name" "object path"* { ...*parameters*... }

Used to define a set of alternate surface textures for an object, such as a "limit of knowledge" or "topography map".

### "*name*"

is what shows up in the object's contextual menu in Celestia. This text need not be unique: the same name can be used for AltSurfaces of several different objects. When a particular AltSurface name is selected in the popup contextual menu for one object, the AltSurfaces with that same name are shown on all objects. If an AltSurface with the selected name does not exist for an object, the "normal" (default) surface is shown instead.

### "*object path*"

is the full path of the object, including its own name, on which to draw this alternate surface. e.g. "Sol/Earth/Moon" would tell Celestia that this is an alternative surface for our own Moon.

### *parameters*

An AltSurface's *parameters* can be any of the parameters which describe the surface textures of an SSC object. For details of each, see their corresponding entries above.

* BlendTexture bool
* BumpHeight f
* BumpMap "filename"
* Color [ R G B ]
* NormalMap "filename"
* OverlayTexture "filename"
* SpecularColor [ R G B ]
* SpecularPower f
* SpecularTexture "filename"
* Texture "filename"

## ReferencePoint *"name" "object path"* { ...*parameters*... }

*Available only in Celestia v1.5.0 or later.*

A **ReferencePoint** can be used to define an orbital barycenter. It's an invisible position around which other bodies can orbit.

### "*object path*"

The path to the **ReferencePoint**, specifying the bodies around which it orbits.

### *parameters*

A **ReferencePoint** is defined using those SSC parameters which define an orbit: CustomOrbit, EllipticalOrbit and SampledOrbit. See their definitions above.

OrbitFrame, FixedPosition, SpiceOrbit and ScriptedOrbit also can be used. See the page on orbits and trajectories for more information about these new parameters.

Only orbit and position parameters are used. Rotation and orientation parameters are not relevant and are ignored.

## SurfaceObject *"name" "object path"* { ...*parameters*... }

*Available in Celestia v1.6.0 and later versions.*

Use of the **SurfaceObject** keyword invokes several useful defaults:

* The object's default **OrbitFrame** is the **BodyFixed** frame of the parent object
* The object's default **BodyFrame** is topocentric, with its Z axis pointing toward the zenith, its Y axis pointing toward the parent body's North Pole, and its X axis pointing to the East.
* The object's default **Class** is "surfacefeature"

Warning: **LongLat** does not place objects correctly when used with **SurfaceObject** in Celestia v1.5.0 and later. Use **FixedPosition [ x y z ]** or **FixedPosition { Planetographic [ Long Lat Alt ] }** instead.

## Location *"name" "object path"* { ...*parameters*... }

**Location** is an SSC directive used to designate a point of interest on an object in Celestia, such as Earth's major cities, where Pathfinder landed on Mars, or Apollo 11 on the Moon, etc. Celestia includes several .SSC catalogs of Locations, such as "<object>\_locs.ssc" in the "data" directory. The display of **Locations** is toggled by the "&" keystroke, and the "Render:Locations..." menu controls other aspects of their display.

### "object path"

The full path of the object on or near which the **Location** is to be placed, including the name of that object.

*specify object path parameters*

### *parameters*

#### LongLat [ Long Lat Alt ]

Used to define a place's position, in the object's reference frame. Long is the East longitude (in degrees), Lat its latitude, and Alt the altitude (in kilometres). Longitude is measured toward the East. West longitude can be specified as a negative value.

#### Size f

the radius of the **Location** in km. Smaller sizes are not drawn until the viewpoint gets closer to them.

#### Type "string"

Celestia recognizes many of the two-letter topographical types defined in the USGS Gazetteer:

* "AA" = Crater = a circular depression
* "AS" = Astrum = radial patterned feature
* "CA" = Catena = chain of craters
* "CH" = Chaos = distinctive region of broken terrain
* "CM" = Chasma = deep, long, steep-sided depression
* "CR" = Corona = ovoid feature
* "DO" = Dorsum = ridge
* "FO" = Fossa = long, narrow depression
* "FL" = Fluctus = flow terrain
* "FR" = Farrum = pancake-like stucture, or a row of them
* "LF" = LandingSite (Lunar Feature)
* "LI" = Linea = elongated marking
* "ME" = Mare = sea
* "MN" = Mensa = flat-topped prominence or mesa
* "MO" = Mons = mountain
* "PE" = Patera = irregular or complex crater
* "PL" = Planitia = low plain
* "PM" = Planum = plateau or high plain
* "RE" = Regio = distinctive region
* "RI" = Rima = fissure
* "RT" = Reticulum = netlike pattern
* "RU" = Rupes = scarp
* "TA" = Terra = extensive land mass
* "TE" = Tessera = polygonal, tile-like terrain
* "UN" = Undae = dunes
* "VA" = Vallis = valley
* "XX" = Other

plus a few longer categories:

* "City"
* "Crater" (but "AA" is preferred)
* "Landing Site"
* "Observatory"

## Editing Directives

*Available in Celestia v1.4.0 and later versions.*

An SSC file can be used to edit objects that were defined in previously loaded SSC files. You do not have to use a text editor to change their contents. This makes it possible for an Addon to update the SSC catalogs that are included in Celestia's distribution. You do not have to edit them manually every time Celestia is upgraded to a new version.

There is no **Delete** editing directive. However, one can use the **Replace** directive and define the undesired object to be
Class "invisible"

The editing directives are

### Add *"object name" "object path"* { ...*parameters*... }

**Add** creates a new object. This is the default action if no edit directive is specified.

### Modify *"object name" "object path"* { ...*parameters*... }

**Modify** changes only the parameters listed in its block. Other parameters defined for the specified *object* are not affected.

### Replace *"object name" "object path"* { ...*parameters*... }

**Replace** deletes all of the parameters associated with the specified object and replaces them by the new block of *parameters*.

## Distance limits

SSC objects orbit around Stars or Barycenters.

Objects defined in SSC files cannot be seen when the viewpoint is more than 1 light-year from their Star or Barycenter.

Prior to Celestia v1.6.0, Stars or Barycenters could not be drawn reliably if they were farther than 16,000 light-years from the Sun. This limit resulted both from the Hipparcos catalogue parallax precision limit, of about 1 milli-arc-second, and from technical limitations within Celestia.

Starting with Celestia v1.6.0, the maximum distance is 10,000,000 light-years. However, star placement has an angular precision of about 1/10 of an arcsecond as seen from Earth. This is adequate for observationally derived data, but if you want to create a dense globular cluster, stars might end up getting stacked on top of each other because of the limited precision.

## Related Topics

* Trajectories
* Rotation Models
* Using JPL Ephemerides with Celestia
* Reference Frames