Table of Contents
Scenery Definition File (TSC)
The TSC file is a text file that can be edited with a regular text editor. The file can contain coordinates for an airport, a custom scenery object, runways, helipads and a lot more.
Theses TSC files are placed in subdirectories of “places” folder in the scenery directory. For the creation of new scenery we have to set up a new TSC file and save it in our intermediate scenery folder.
We recomment reading through the Scenery introduction tutorial first
which provices a bit more background.
Let's break down the content of the TSC file.
How to optain the coordinates
Please visit the Geographic Coordinates tutorial to see how you can find out the coordinates that you need for your scenery projects.
The first area defines the type of scenery object that you defining, e.g. an airport. After that individual scenery objects like the ground mesh or decals are defined. The file then defines runway of an airport, start positions, parking positions and view positions. Entire blocks of the file can be removed when they are not applicable. E.g. you don't need to add the code lines for runways and parking positions if you only want to create a basic scenery object (and not an airport).
|sname||= Short Name. This is airport name as shown on the map|
|lname||= Long Name. This a longer version of the airport name when more space is available, e.g. when the airport is selected in the menu.|
|icao||This is the unique airport ICAO code (leave empty if it's not an airport or if the airport doesn't have an ICAO identifier)|
|country||Country in which this scenery is located|
|coordinate_system||Coordinates in this file are defined in this coordinate system. Typically “lonlat”. Some also have “web_mercator”|
|position||These are the center coordinates (lon/lat in decimal degrees) for your project|
|height||Height above ground in meters (usually zero for on ground)|
|size||Radius in meters where the scenery should be visible. Less increases performance significantly.|
|tower_position||Lon/lat coordinates of the airport tower|
|tower_height||Height of the airport tower in meters|
|autoheight||When enabled the airport will be transformed onto the terrain as it's loaded. This allows us to model the airport completely flat and then transform it onto the terrain later. When you set this to false you will have to build your airport at the true height above mean sea level, provide a custom ground mesh and also account for earth curvature, etc.|
Individual geometries of the 3D model are used for specific functions such as (generic) objects, ground and decals. These functions are assigned as individual blocks within the tsc file.
You can defined multiple blocks of the same type if needed.
Please also read the documentation of the different object classes.
<[list_tmsimulator_scenery_object][objects] <[tmsimulator_scenery_object][element] <[string8][type][ground]> <[string8][geometry][keyw_key_west_intl_rwy]> <[vector3_float64][position][-81.760022 24.554775 0]> <[float64][orientation]> <[int32][autoheight_override][-1]> > >
|type||Type of geometry that is being defined (object, ground, decal, object_transparent_atc)|
|geometry||Name of the object in the 3D model (e.g. ewy_keywest_obj)|
|position||Coordinates (lon/lat) and altitude (in meters) where the object should be placed|
|orientation||Rotates the object above the up axis, angle in degrees|
|autoheight_override||Can force the object above ground|
Animated objects require an animation to be set before exporting. The exporter then creates a .tma file that contains the keyframe animation data. Both the geometry (.tmb file name) as well as the animation file (.tma file name) are then added to the respective lines in the objects_animated elements.
<[list_tmsimulator_scenery_object_animated][objects_animated] <[tmsimulator_scenery_object_animated][element] <[string8][geometry][animations_guy_talking]> <[string8][animation][animations_guy_talking]> <[vector3_float64][position][11.350648 47.257897 0]> <[float64][rot_in_degree]> <[float64][duration]> <[float64][time_scale]> <[bool][autoheight][true]> > >
|geometry||File name of the geometry|
|animation||File name of the animation|
|position||Lon/lat coordinates and altitude in meters of the geometry origin (without animations applied)|
|rot_in_degree||Rotation of the object around the up direction (without animations applied)|
|duration||Duration of the animation sequence, zero for auto|
|time_scale||Timelapse factor 1 = real time, 2 = twice the speed, 0.5 = half the speed|
|autoheight||places object onto the terrain when loaded. When false then the altitude has to be set to meters above mean sea level|
Each runway is defined in the tsc as a set of coordinates (lon/lat).
<[tmsimulator_runway][element] <[vector2_float64][endpoint1][-122.396054939917 37.6298574167513]> <[vector2_float64][endpoint2][-122.356142019883 37.6131189526278]> <[vector2_float64][threshold1][-122.393396225665 37.6287425367392]> <[vector2_float64][threshold2][-122.357143317297 37.6135389173978]> <[float64][width]> <[string8][name1][10L]> <[string8][name2][28R]> <[string8][appltsys1][malsr]> <[string8][appltsys2][alsf-2]> <[string8][papi1][left]> <[string8][papi2][left]> <[bool][papi1_has_custom_position][false]> <[bool][papi2_has_custom_position][false]> <[vector2_float64][papi1_custom_position][0 0]> <[vector2_float64][papi2_custom_position][0 0]> <[float64][papi1_glide_slope]> <[float64][papi2_glide_slope]> <[float64][papi1_spacing]> <[float64][papi2_spacing]> <[string8][reil1][none]> <[string8][reil2][none]> >
|endpoint1 / …2||Lon/lat coordinates of the end of the paved part of the runway in the first and second direction|
|threshold1 / …2||Lon/lat coordinates of the runway threshold for the first and second direction|
|width||This is the width of your runway in meters|
|name1 / …2||Runway identifier for the first and second direction|
|appltsys1 / …2||Approach light system installed for the first and second approach end|
|papi1 / …2||This side of the of the precision approach path indicators (PAPI)|
|papi1_glide_slope||Glide slope angle of the PAPI lights in degrees|
|papi1_custom_position||Manual offset of the PAPI lights in meters|
|papi1_spacing||Distance between individual PAPI lights in meters|
|reil1 / …2||Runway end identifier lights (REIL)|
Approach Lighting System (ALS)
appltsys1 - approach lighting system on approach end 1
appltsys2 - approach lighting system on approach end 2
|alsf-1||Approach Lighting System with Sequenced Flashing Lights configuration 1|
|alsf-2||Approach Lighting System with Sequenced Flashing Lights configuration 2|
|malsf||Medium-intensity Approach Lighting System with Sequenced Flashing lights|
|malsr||Medium-intensity Approach Lighting System with Runway Alignment Indicator Lights|
|sals||Short Approach Lighting System|
|odals||Omnidirectional Approach Lighting System|
|calvert||High Intensity Approach Lighting System ICAO-compliant configuration 1|
|calvert-2||High Intensity Approach Lighting System ICAO-compliant configuration 2|
|rail||Runway Alignment Indicator Lights|
|std||Standard runway lighting|
|none||no approach lighting system|
Precision Approach Path Indicator (PAPI)
papi1 - precision approach path indicator on approach end 1
papi2 - precision approach path indicator on approach end 2
|left||papi position left of runway when approaching|
|right||papi position right of runway when approaching|
Runway End Identifier Lights (REIL)
reil1 - runway end identifier lights as seen from approach end 1
reil2 - runway end identifier lights as seen from approach end 2
|reil_uni||reil in one direction|
|reil_omni||reil in all directions|
Helipads are defined in the tsc file as well:
<[list_tmsimulator_helipad][helipads] <[tmsimulator_helipad][element] <[string8][name][H1]> <[string8][type_name][building]> <[vector2_float64][position][-81.7599657782887 24.5549091932849]> <[float64][radius]> <[float64][heading][89.13]> <[float64][height]> > >
|name||Name of the helipad|
|type_name||Name of the helipad type (e.g. building)|
|position||Lon/lat coordinates of the helipad|
|radius||Maximum rotor radius in meters|
|heading||Direction of the parking position in degrees from true North|
|height||Height above ground in meters|
Towards the end of the file you can define individual parking positions.
<[list_tmsimulator_parking_position][parking_positions] <[tmsimulator_parking_position][element] <[vector2_float64][position][-122.387688269125 37.6102106074827]> <[float64][heading][29.28]> <[string8][name][Parking Position #1]> > <[tmsimulator_parking_position][element] <[vector2_float64][position][-122.378445704023 37.6277080224156]> <[float64][heading][297.68]> <[string8][name][Parking Position #2]> > >
|position||Lon/lat coordinates of the parking position|
|heading||Direction of the parking position in degrees from true North|
|name||Name of the parking position (e.g. West or East apron, etc.)|