article_type: Legacy Info

Creating Animated Objects with AC3D 6.1

by Cristiano Maggi
Revision History
2/12/07	Initial Draft

The purpose of this small tutorial is to show how to use the cool new animating features of Ben Supnik’s new release of the AC3D plug-in for X-Plane.

You will need AC3D 6.1 in order to use this new plug-in.

Drop the two components files of the plug-in into the AC3D plug-ins folder, you will not need to move any other plug-in file out of that folder–now the X-Plane plug-in is perfectly compatible with all the others importers/exporters!

Then download the latest DataRefs.txt from the XSquawkBox site and drop it into the AC3D plug-in folder too in order to let the plug-in permit you to select the datarefs you may need:

DataRefs.txt

We are now ready to use AC3D with X-Plane files, let’s examine the 3 cases in which we may step:

  1. Animated files already in .OBJ format (v8);
  2. Animated files in .ac format;
  3. Animating a new file.

Animated files already in .OBJ format.

There’s absolutely no need to make any action to update animated objects which are in .OBJ format. The plug-in is able to read the animations stored in those files and to show them properly, preserving perfect compatibility.

Once the .OBJ file is open, its animations can be directly viewed in AC3D by selecting Animation Time… from the “X-plane” top menu:

One way you can tell that the animations have been imported is: AC3D represents the axis for rotation or path for translation as yellow lines. In the picture above, we can see the yellow line going through the radar dish on the mast of the Nimitz. This shows that the radar rotates around the vertical axis.

The X-Plane Animation Window shows up and animations can be examined by moving the cursors in it, one cursor for each used dataref.

Animated files in .ac format.

The most “complex” case is the handling of previously released animations stored into AC3D .ac files, our master files, for instance.

After opening a file of this kind the very first thing to do is updating it, since it was saved through the previous version of the X-Plane plug-in. To do this simply select “Update from old plugin”.

All the animations are magically updated and can then be checked in the same way we already learned in the previous section. We are now able to re-save our file to keep an up-to-date version of our master work for reference, modify it, and export it as an X-Plane .OBJ file as usual.

(You will also know that your update has succeeded because you will see yellow animation lines for all of the rotations and translations in the model.)

Animating a new file.

Let’s now consider the most intriguing section of this tutorial: how to make animations from scratch, and examining the new related capabilities of the AC3D X-Plane plugin.

We need a model, of course, let’s take this dump truck as example. (You can download the .ac file from here:)

TRUCK.zip

In this model we need to set some animations: the dump bin must raise, it’s door must open together with this movement to release the dump, the piston under the container must extent following those movements pretending it’s the “engine” of the raising movement.

It’s fundamental that our model is well organized in its internal structure before starting the animation procedure; we need the help of the hierarchy (Tools/Hierarchy View) to group various objects so that everything could properly work.

In my model I’ve separated the objects that will remain still from the objects that need to be animated in order to avoid confusion, remember you can always make visible or invisible any single object by clicking on its eye-shaped icon in the hierarchy.

First of all I need to make the bin raise (together with the dump) rotating by a hinge placed near the back of the truck and this rotation should make the door open in order to pretend that the dump could drop. This first animation is then the result of a nesting of 2 separated movements, 2 separated rotations. The bin raising must involve the door opening, so let’s select 3 objects: “Container” + “Door”, the items that will animate, and “Gravel”, which is the contained dump that needs to move together with the bin.

Now go in the X-Plane menu and select “Make Animation Group” to create a special group, needed for animations purposes.

Let’s now set the first rotation by selecting “Make Rotation” , from the X-plane menu again. A yellow vertical line appears, that’s the axis of our rotation, but it’s set vertical and it’s placed in the origin so we need to move and position it correctly. No need for calculations, we can just simply control it as any AC3D line and place it in the position where the hinge is needed.

It’s really matter of seconds to place the axis where we need it, notice that for AC3D the axis is a normal object, in the hierarchy, we can select it, hide it, but better leave its name as the default given “rotation” in order to immediately understand what it is inside the structure of our model.

To bring the animation to life we need now to choose “X-Plane Object Properties”, the very first item of the X-Plane menu. In the pop up window that will appear we can enter all the values of our rotation and select the dataref that will cause the movement. I have chosen the dataref which animates the oil rigs’ cranes in order to have a cyclic up and down of the bin, this dataref needs to put “-1” and “1” in the leftmost fields and then the angle, in degrees, between minimum and maximum excursion, in the other two fields. I have entered from “0” to “40”.

We can now even check our first movement better by invoking the “Animation Time” item from the X-Plane menu, as already explained in the first section of the tutorial. The bin will show itself in the middle of the excursion due to the characteristics of this peculiar dataref, a cyclic dataref, intended to make the movement endless.

We must then make the door open when the bin raises; this second movement should be synchronized with the first one. To do that we must nest the second movement into the first by creating another “Animation Group” in the same way we created the first, but selecting the “Door” object only. We will then set the proper rotation axis exactly in the same way we just did for the bin and the proper rotation values in the “X-Plane Properties” window. The hierarchy always helps us checking that our nesting is correct in order to end with a perfect union of the two animations. As usual, the “Animation Time” window will permit us to check if everything is well done.

Adding another animation to the piston which must simulate to raise the container is then the last task; we will need to add a rotation to the piston base together with multiple translations for the segments of the telescopic part of it, all the translations will need to be nested into the first rotating part, of course.

Let’s start from the translations, one for each segment of the piston. We will then add the rotation for the whole group at the end.

It’s simple as setting rotations, after making the “Animation Groups” we only need to pick “Make Translation” from the X-Plane menu. Translations are represented by yellow lines identical to the rotation ones, so it’s very simple to drag them around, rotate them and position them where they are needed. The only difference is that the length of the line represents the distance of the translation, very simple. Pay attention, though, when you scale the line, do not shorten them by both sides, shorten them only by the far most side from the origin!

The translation lines can be placed wherever you like, near the object that should translate is the better visual position to evaluate on-the-fly their length, though. In the following picture you can see that I put them side by side, near the segments that have to translate in order to better understand what they do.

The object called “piston 1” will not translate, since it’s the main socket fastened to the truck, all the other segments have their own “Animation Group” containing their proper translation, the longest way the segment need to travel, the longest translation line.

To finish our model we must then make all these segments rotate together while they translate; to do this we will first make an “Animation Group” with the “piston 1” object only selected, assign a rotation to it in the way we already saw before for the truck bin:

Then, using the new cool feature of AC3D 6.1, drag the other “Animation Groups” of the 3 piston sections into this main group using the hierarchy. Move then both the “piston 1” object and its rotation line to the top position of the group to let them “lead” the whole rotation.

6 Comments

Airport data (apt.dat) 715 version

This information is historic and only relevant to X-Plane 8 and earlier

Scope

This document describes the file format and codes used in X-Plane’s apt.dat file, 715 version.

  • This data file format is usable with X-Plane version 7.15 – 8.06.  It was superseded by airport file format 810 in March 2005.

  • This is the “official” definition of the X-Plane file formats.  The apt.dat file defines all airport data in X-Plane, including runways, taxiways, and other airport features.

  • Navigation aids at an airport (such as ILS components) are not defined in this file, but are contained in the nav.dat file.

File structure

The file structure is similar to all other X-Plane data files, with the exception that the sequencing of the data within the apt.dat file is important.  Runway, taxiway, location and ATC data for an airport must immediately follow the header data for the parent airport.

  • The first line of each file indicates if the file was generated on a PC (“I” for Intel or IBM) or Macintosh (“A” for Apple). X-Plane uses this code to help deal with the different ways in which PCs and Macs manipulate carriage returns in text files, and big-endian/little-endian issues. The second line contains a version number used by X-Plane.  This usually implies the first version of X-Plane that can utilise the file format (eg. “715 version” implies that this file format was first available for use in X-Plane version 7.15).   The version number is followed by my own long copyright message that also includes the sequential build number of the data and my own internal code for the metadata that drives the formatting). This copyright message is very long, and includes a reference to the GNU General Public Licence under which this data is published as modifiable freeware, and also an acknowledgement and a disclaimer for the US Department of Defense NIMA for the DAFIF data. The terms of this license require that this copyright message must be left intact if this file is modified and/or redistributed.
  • The very last line of each file is marked by a “99”.

Here is an example of the two header lines, one airport, one runway and the file termination line:

I
715 Version – DAFIF data cycle 200502, build 1871, metadata AptXP715, Copyright © 2004, Robin A. Peel (robin@xsquawkbox.net). This data is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program (“AptNavGNULicence.txt”); if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. This product was developed using DAFIF (the Defense Aeronautical Flight Information File), a product of the US National Imagery and Mapping Agency (NIMA). NIMA requires the following warranty statements: (A) Under 10 U.S.C. 456, no civil action may be brought against the United States on the basis of the content of a navigational aid prepared or disseminated by either the former Defense Mapping Agency (DMA) or the National Imagery and Mapping Agency (NIMA). (B) The DAFIF product is provided “as is,” and no warranty, express or implied, including, but not limited to the implied warranties of merchantability and fitness for particular purpose or arising by statute or otherwise in law or from a course of dealing or usage in trade, is made by NIMA as to the accuracy and functioning of the product. (C): Neither NIMA nor its personnel will be liable for any claims, losses, or damages arising from or connected with the use of this product. The user agrees to hold harmless the United States National Imagery and Mapping Agency. The user’s sole and exclusive remedy is to stop using the DAFIF product.

1 1242 0 0 89TX Aero-Bee Ranch Airstrip
10 30.879343 -098.416976 17x 170.00 2800 0.0000 0.0000 50 111111 04 0 0 0.25 0

99

Each airport has a header line and one or more runway/taxiway lines,  followed by lines for an airport tower viewpoint location, a startup location on the airport , airport light beacon location and windsocks, and airport ATC (Air Traffic Control) frequencies.

Line
codes used in apt.dat (715 version)
Code (apt.dat) Used for
1 Airport header data.
16 Seaplane base header data. No
airport buildings or boundary fences will be rendered in X-Plane.
17 Heliport header data.  No
airport buildings or boundary fences will be rendered in X-Plane.
10 Runway or taxiway at an airport.
14 Tower view location.
15 Ramp startup position(s)
18 Airport light beacons (usually
“rotating beacons” in the USA).  Different colours may be
defined.
19 Airport windsocks.
50 to 56 Airport ATC (Air Traffic Control)
frequencies.

Note the following sequence of the airport data:

  • The runway data for each airport must follow the airport header line.
  • Taxiways should follow the runways.
  • Tower viewpoints and startup locations.
  • Airport light beacons and windsocks.
  • ATC frequencies should be the final entries for an airport.
  • A blank line can be used to separate different airports – this helps improve readability, but it is not mandatory.

Changes from previous file versions

  • The previous file version for apt.dat was 703 version.
  • A flag now controls if a control tower object will be drawn in X-Plane at the location of the control tower (line code 14).

Other issues

The limitations on the number of airports within a region (an X-Plane “region” is a dynamic area of 2 degrees latitude by 3 degrees longitude) changed for X-Plane 7.40.  So more recent files generated in this file format (715) are only usable in X-Plane versions 7.40 – 8.06.

Example data

Here is a simplified fragment for part of an airport in apt.dat:

1 5355 1 0 KABQ Albuquerque Intl Sunport
10 35.044209 -106.598557 08x  90.44 13749 1000.0000 0.1000 150 252231 02 0 3 0.25 1
10 35.031995 -106.618838 03x  44.66 9993     0.0000 0.0000 150 352321 02 0 3 0.35 1
10 35.044021 -106.611984 17x 183.36 10014  890.0000 0.0000 150 231231 01 0 2 0.25 1
10 35.038364 -106.612950 12x 128.98 5992     0.0000 0.0000 150 121331 02 0 2 0.25 1
10 35.042778 -106.598572 xxx  90.44 13737    0.0000 0.0000 100 161161 02 0 0 0.25 0
10 35.045609 -106.595635 xxx  90.44 11220    0.0000 0.0000 110 161161 02 0 0 0.45
0
14 35.047215 -106.608162 100.00 1 Tower viewpoint
15 35.047005 -106.618576   0.000 Gate B1 (American Airlines)
15 35.047005 -106.615000   0.000 Gate A1 (United Airlines)
18 35.045031 -106.598549 1 Light beacon
19 35.045176 -106.621581 1 Windsock
19 35.043241 -106.575534 1 Windsock
53 12190 GND
54 11830 TWR

This shows one airport header line, four runways, two taxiways, a tower viewpoint, two gate starting locations, an airport beacon, two windsocks and two ATC frequencies.  The meaning of the data in the above example data is:

Meaning
of example airport data (apt.dat)
Airport
header
Example
Usage
1 Identifies this as an airport header line.  Note
that a code 16 will identify this as a seaplane/floatplane
base, and a code
17
will identify it as a heliport.
5355 Airport elevation (in feet above
MSL).
1 Airport has a control tower (1=yes, 0=no).
Used by X-Plane’s ATC system.  Not used to draw the
default ATC tower building (despite what is stated in WorldMaker!).
0 Display X-Plane’s default airport buildings (1=yes, 0=no).
This is usually ‘no’ if any custom taxiways have been defined.
KABQ Identifying  code for the airport (the ICAO code, if one exists).
It is helpful if these are unique, but this may not be possible in all cases.
Albuquerque Intl Sunport Airport name.
Usually, the city name is first followed by the airport name (eg.
“London Heathrow”).
Runways and taxiways Example Usage
10 Identifies this as a data line for a runway or taxiway segment.
35.044209 Latitude (in decimal degrees) of runway or taxiway segment center.
-106.598557 Longitude (in
decimal degrees) of runway or taxiway segment center.
08x Runway number (eg “25x” or “24R”).  If there is no runway suffix (eg. “L”, “R”, “C”
or “S”), then an
“x” is used.  “xxx” identifies the entry as a taxiway.
Helipads at the same airport are numbered sequentially as
“H1x”, H2x”.
90.439 True (not magnetic) heading of the runway in degrees.
Must be between 0.00 and 360.00.
13749 Runway or taxiway segment length in feet.
1000.0000 Length of displaced threshold (1,000 feet) for runway 08 and for the reciprocal runway 26 (0 feet).  The length of the reciprocal runway’s displaced threshold is expressed as the fractional part of this number.  Take the runway 26 displaced threshold length  (in feet) and divide it by 10,000, then add it to the displaced threshold length for runway 08.  For example, for displaced threshold lengths of 543 feet and 1234 feet, the code would be 543.1234.Note that the displaced threshold length is included in the overall runway length but that the stopway length is excluded from the overall runway length.  This code should be 0.0000 for taxiway segments.  FYI, the displaced threshold is usually marked (in the real world) with long white arrows pointing toward the threshold.  The displaced threshold is not available for use by aeroplanes landing, but may be used for take-off (in practice, if you use these last few feet of the runway for take-off, you are probably in serious trouble!).
0.1000 Length of stopway/blastpad/over-run at the approach end of runway 08 (0 feet) and for runway 26 (1,000 feet), using the same coding structure defined
above.  FYI, in the real world the stopway/blastpad/over-run is usually marked with large yellow chevrons, and aeroplane movements are not permitted.
150 Runway or taxiway segment width in feet.
252231 Runway or taxiway segment lighting codes.
The first three digits (“252”) define the lighting for the runway as seen when approached from the direction implied by the runway number (08 in our example).

The final three (“231”) define the lighting for the runway as seen when approached from the opposite end (26 in our example).

In order, these codes represent:

Runway end “A” (08): Visual approach path (VASI / PAPI etc.) lighting.  Here, code 2 corresponds to a VASI.

Runway end “A” (08): Runway lighting. Here, code 5 corresponds to TDZ lighting, which also implies centre-line lighting, REIL and edge lighting.

Runway end “A” (08): Approach lighting.  Here, code 2 corresponds to SSALS.

Other runway end (26): Visual approach path (VASI / PAPI etc.) lighting. Here, code 2 corresponds to a VASI.

Other runway end (26): Runway lighting. Here, code 3 corresponds to REIL, which also implies edge lighting.

Other runway end (26): Approach lighting. Here, code 1 implies no approach lighting.

02 Runway or taxiway surface
code
for the runway or taxiway segment.  The leading zero is
optional – but I always use it to keep all the columns neatly lined up.
0 Runway shoulder
code
.  These are only available in file version
701 and later.  Here, code 0 implies that there is no runway
shoulder.
3 Runway markings
(the white painted markings on the surface of the runway.  Here,
code 3 implies precision runway markings (ie. there is an associated
precision approach for the runway, either an ILS or MLS).
0.25 Runway
smoothness.  Used to cause bumps when taxying or rolling along the
runway in X-Plane.  It is on a scale of 0.0 to 1.0, with 0.0 being
very smooth, and 1.0 being very, very rough.  X-Plane determines a
baseline smoothness based upon the runway surface type, and then uses
this factor to determine the ‘quality’ of the runway surface.  The
default value is 0.25.
1 Runway has ‘distance
remaining’ signs (0=no signs, 1=show signs).  These are the white
letters on a black background on little illuminated signs along a
runway, indicating the number of thousands of feet of usable runway that
remain.  They are inappropriate at small airports or on most dirt,
gravel or grass runways.
Startup locations Example
Usage
15 Identifies this as a
data line for an airport startup
location (code 15).  Multiple startup locations
are allowed as separate data lines.
35.047215 Latitude
(in decimal degrees) of the viewpoint or startup location.
-106.618576 Longitude (in
decimal degrees) of the viewpoint or startup location.
0.00 Elevation of the viewpoint, or the heading of the aeroplane when placed at the
startup location.
Gate B1 (American
Airlines)
Name of
a startup location (used in X-Plane 7.10 and later).
Tower
viewpoints
Example
Usage
14 Identifies this as a data line for a tower viewpoint (code 14).Only a single tower viewpoint is permitted.
35.047005 Latitude
(in decimal degrees) of the viewpoint.
-106.608162 Longitude (in
decimal degrees) of the viewpoint.
100 Height (in feet)
above ground level of viewpoint.
1 Flag to indicate if
a control tower object should be drawn at this location in
X-Plane.  0=no tower, 1=draw tower.
Tower viewpoint Name of this
viewpoint
Airport light beacons Example Usage
18 Identifies this as a
data line for an airport light beacon (code 18).  Note that if custom data is not defined, then appropriate data will be
generated automatically and included in apt.dat.  The light beacon
types available (see list below) are in accordance with the US AM
(Aeronautical Information Manual) – other types may be added to cater
for other light beacons used in other countries.
35.045031 Latitude (in decimal degrees) of the light beacon.
-106.598549 Longitude (in
decimal degrees) of the light beacon.
1 Identifies the
colours of the light beacon.  Here code 1 implies a standard
white-green flashing light.  Options are:
Code 1: white-green flashing light (land airport).

Code 2: white-yellow flashing light (seaplane base).

Code 3: green-yellow-white flashing light (heliports).

Code 4: white-white-green flashing light (military field).

Code 5: white strobe light.

Code 0: no beacon (can be used at ‘closed’ airports).  I
suggest you use a dummy lat/lon based upon one of the airport’s
runways.

Light beacon Name for this light beacon
(not used by X-Plane).
Airport
windsocks
Example
Usage
19 Identifies this row
as an airport windsock (code 19). Note that:
If custom data is not defined, then appropriate data will be generated
automatically by may data export algorithms and included in apt.dat
alongside the threshold of each runway.

If at least one windsock is explicitly defined at an airport, then
no ‘automatic’ windsocks will be generated at that airport.

Multiple windsocks are
allowed.

If you do not want any windsocks at an airport, then let
me know in an e-mail and I will suppress the generation of all
automatic windsocks at that airport.

35.045176 Latitude
(in decimal degrees) of the airport windsock.
-106.621581 Longitude (in
decimal degrees) of the airport windsock.
1 Windsock lighting
(1=illuminated, 0=not illuminated).
Windsock Name for this
windsock (not used by X-Plane).
ATC
frequencies
Example
Usage
53 Identifies this as an
airport ATC
frequency line.  Codes in the 50 – 59 range are
used to identity different ATC types
.
12190 Airport ATC frequency, in Megahertz
multiplied by 100 (ie. 121.90 MHz in this example).
GND Name of the ATC frequency.
This is often an abbreviation (such as GND for
“Ground”).

Codes used to define data

The codes used to define the data are:

Codes used in
apt.dat (715 version)
ATC
frequency codes
Meaning of
code
50 AWOS (Automatic Weather
Observation System), ASOS (Automatic Surface Observation System) or ATIS
(Automated Terminal Information System).
51 Unicom or CTAF (USA), radio (UK)
– open channel for pilot position reporting at uncontrolled airports.
52 Clearance delivery.
53 Ground.
54 Tower.
55 Approach.
56 Departure.
Runway
surface codes
Meaning of
code
01 Asphalt.
02 Concrete.
03 Turf/grass.
04 Dirt.
05 Gravel.
06 Asphalt helipad (big “H” in
the middle).
07 Concrete helipad (big “H” in
the middle).
08 Turf helipad (big “H” in the
middle).
09 Dirt helipad (big “H” in the
middle).
10 Asphalt taxiway with yellow hold
line across long axis (not available from WorldMaker).
11 Concrete taxiway with yellow
hold line across long axis (not available from WorldMaker).
12 Dry lakebed runway (eg. at KEDW
Edwards AFB).
13 Water runways (marked with
bobbing buoys) for seaplane/floatplane bases (available in X-Plane 7.0
and later).
Visual
approach path indicator codes
Meaning of
code
1 No visual approach path lighting.
2 VASI (Visual Approach Slope Indicator).
3 PAPI (Precision Approach Path Indicator).
4 Space Shuttle Landing PAPI (steep 20 degree glide path) – its use is very rare!
Runway lighting
codes

Meaning of code

Note
that for values 1-5, the codes are cumulative – ie. code 3 also assumes code 1
and code 2
when X-Plane interprets
the data

1 No runway lighting.
2 Runway edge lights
(white).
3 Also has REIL (Runway End Identification Lights – the flashing strobes at
the approach end of the runway.
4 Also has CLL (Center Line Lighting).
5 Also has TDZ (Touch Down Zone) lighting.
6 Only has blue taxiway edge lights (use on
taxiways!).
Approach
lighting codes
Meaning of
code
1 No approach lights.
2 SSALS (Simplified short approach light system).
3 SALSF (Short approach light system with sequenced flashing
lights).
4 ALSF-I (Approach light system with sequenced flashing lights).
5 ALSF-II (Approach light system with sequenced flashing lights and red side bar
lights the last 1000’).
6 ODALS (Omni-directional approach light system).
7 Calvert (a British design) category 1.
8 Calvert (a British design) categories 2 and 3.
Runway
shoulder codes
Meaning of
code
0 No runway shoulder.
1 Asphalt runway shoulder.
2 Concrete runway shoulder.
Runway
marking codes
Meaning of
code
0 No runway markings. Also used for helipads (X-Plane will automatically draw the
big “H” based on the runway surface code), taxiways and water
runways. The runway markings available (see list below) are in accordance with
the US AIM (Aeronautical Information Manual) – other types may be added to cater
for different types of runway markings that may be used in other countries.
1 Visual markings.
2 Non-precision approach markings
3 Precision approach markings.

© Robin Peel,
2005.  Last updated March 29, 2005

Comments Off on Airport data (apt.dat) 715 version

X-Plane nav-aid data file definition (740 version)

This information is historic and only relevant to X-Plane 8 and earlier

Scope

This document describes the file format and codes used in X-Plane’s nav.dat file, 740 version.

  • This data file format is usable with X-Plane version 7.40 – 8.09.  It was superseded by the nav.dat 810 version.

  • This is the “official” definition of the X-Plane file formats. The nav.dat file defines all navigation aid data in X-Plane, including global NDBs, VORs, VORTACs, VOR-DMEs, DMEs, and ILS components (localisers, glideslopes, marker beacons and any associated DMEs).

File structure

The file structure is similar to all other X-Plane data files.

  • The first line of each file indicates if the file was generated on a PC (“I” for Intel or IBM) or Macintosh (“A” for Apple). X-Plane uses this code to help deal with the different ways in which PCs and Macs manipulate carriage returns in text files, and
    big-endian/little-endian issues.
  • The second line contains a version number used by X-Plane.  This usually implies the first version of X-Plane that can utilise the file format (eg. “740 version” implies that this file format was first available for use in X-Plane version 7.40).   The version number is followed by my own long copyright message that also includes the sequential build number of the data and my own internal code for the metadata that drives the formatting). This copyright message is very long, and includes a reference to the GNU General Public Licence under which this data is published as modifiable freeware, and also an acknowledgement and a disclaimer for the US Department of Defense NIMA for the DAFIF data. The terms of this license require that this copyright message must be left intact if this file is modified and/or redistributed.
  • The very last line of each file is marked by a “99”.

Here is an example of the two header lines, six nav-ads and a file termination line:

I
740 Version – DAFIF data cycle 200502, build 1921, metadata NavXP740, Copyright ©
2005, Robin A. Peel (robin@xsquawkbox.net). This data is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program (“AptNavGNULicence.txt”); if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. This product was developed using DAFIF (the Defense Aeronautical Flight Information File), a product of the US National Imagery and Mapping Agency (NIMA). NIMA requires the following warranty statements: (A) Under 10 U.S.C. 456, no civil action may be brought against the United States on the basis of the content of a navigational aid prepared or disseminated by either the former Defense Mapping Agency (DMA) or the National Imagery and Mapping Agency (NIMA). (B) The DAFIF product is provided “as is,” and no warranty, express or implied, including, but not limited to the implied warranties of merchantability and fitness for particular purpose or arising by statute or otherwise in law or from a course of dealing or usage in trade, is made by NIMA as to the accuracy and functioning of the product. (C): Neither NIMA nor its personnel will be liable for any claims, losses, or damages arising from or connected with the use of this product. The user agrees to hold harmless the United States National Imagery and Mapping Agency. The user’s sole and exclusive remedy is to stop using the DAFIF product.

2 34.987022 -106.620384 5304   247  50      0.000 ILT  Isleta NDB
3 35.043796 -106.816312 5740 11320 130     13.000 ABQ  Albuquerque VORTAC
4 35.044026 -106.570548    0 11190  18     90.428 ISPT KABQ 08 ILS
6 35.043212 -106.614641 5352 11190  10 300090.428 ISPT KABQ 08  GS
7 35.046352 -106.742583    0     0
0     90.428 —- KABQ 08  OM
8 35.044686 -106.628247    0     0
0     90.428 —- KABQ 08  MM
99

The codes used to identify data are:

Line
codes used in nav.dat (740 version)
Code (nav.dat) Used for
2 NDB.
3 VOR, VORTAC or VOR-DME.
4 Localiser (LLZ) that is part of a
full ILS.
5 Stand-alone localiser (LLZ),
also including LDA (Landing Directional Aid) and SDF (Simplified Directional
Facility).
6 Glideslope (GS).
7 Outer marker (OM).
8 Middle marker (MM).
9 Inner marker (IM).
12 DME (including the DME element of
an ILS, VORTAC or VOR-DME).

Sequencing of data is conceptually unimportant.  But it controls the display of data on X-Plane’s menu options.  By default, data is sorted by the “line code”, then alphabetically by nav-aid name.

Changes from previous file versions

  • The previous file version for nav.dat was 600 version (no documentation available here).
  • A new field has been added to define the range of a nav-aid.  This is based upon DAFIF data, or upon defaults calculated from the nav-aid type and class..

Example data

Here is a simplified file fragment some nav-aids in nav.dat:

2  34.987022 -106.620384 5304   247  50      0.000 ILT  Isleta NDB
3  35.043796 -106.816312 5740 11320 130     13.000 ABQ  Albuquerque VORTAC
4  35.044026 -106.570548    0 11190  18     90.428 ISPT KABQ 08 ILS-cat-I
6  35.043212 -106.614641 5352 11190  10 300090.428 ISPT KABQ 08 GS
7  35.046352 -106.742583    0     0
0     90.428 —- KABQ 08 OM
8  35.044686 -106.628247    0     0
0     90.428 —- KABQ 08 MM
12 49.201986 -123.164006   28 11190 130      0.000  IRD Vancouver DME

This shows an NDB, VORTAC and an ILS (including localiser, glideslope, outer marker and inner marker) and a DME.  The meaning of the data (for the first record) is:

Meaning
of example nav-aid data (nav.dat 740 version)
Nav-aid
example
Example
Usage
2 Type of
nav-aid
34.987022 Latitude of nav-aid in decimal
degrees
-106.620384 Longitude of nav-aid in decimal degrees.
5304 Elevation of nav-aid in feet above MSL.
247 Frequency of nav-aid.  (Always an integer – so VOR and localiser frequencies multiplied by 100).
50 Range of the nav-aid in nautical miles.
0.000 Used
for several purposes, depending upon the type of nav-aid:

Indicates the slaved variation of a VOR/VORTAC in degrees (ie. how the VOR is aligned
compared to true north).  This value often differs slightly from the local magnetic variation.  Eastern variations are positive, western ones are negative.
In the above data, Albuquerque VORTAC has a slaved variation of 13.000 degrees East.

Indicates the heading of a localiser in true (not magnetic) degrees.  Also required for glideslopes (when it is combined with the glideslope angle – see below for details) and marker beacons.

Indicates the DME bias in nautical miles – often used for DMEs associated with an ILS
that are not located near the runway threshold.  This bias must be subtracted from the calculated distance to
the DME to give the desired cockpit reading.  This is typically used for a DME located in the centre of an airport that
serves multiple l ILS approaches, so that the DME will read zero at the
threshold of a runway.  This is a common set up in Europe.

ILT Identification of nav-aid (broadcast in Morse code in X-Plane).
Note that these are not unique.
Isleta NDB Name of nav-aid.
Note that for ILS components these are carefully structured (see below)
to identify the airport and runway..

Localisers (code 4 and 5) are very similar, except that:

  • They include the heading of the localiser (as described above).
  • The nav-aid name is replaced by the airport code, runway number and ILS component type (eg. “KABQ 08  ILS-cat-I”).   This data is not used by X-Plane, but is used by my import programmes that allocate the ILS elements to a valid runway in the master
    database.  I cannot import ILS data without these codes.
  • For a localiser-only (code 5), the name will be similar to “KABQ 08 LOC”.

Glideslopes (code 6) have very similar data to localisers, except that the glideslope angle (typically 3 degrees) is combined with the heading in a slightly complex fashion.  A glideslope of 3.00 degrees on a heading of 90.428 (true) will be listed as “300090.428”.  This is calculated by:

  • Rounding the glideslope angle (3 degrees in our example data) to two decimal places
    (3.00).
  • Multiplying the result by 100,000 (giving 300,000).
  • Adding the result to the heading (300,000 + 90.428 = 300090.428).

ILS marker beacons (codes, 7, 8 and 9) are formatted just like localisers, but note that:

  • They have no associated frequency (use  “0”).
  • They have no range (use “0”)
  • The heading is important, to ensure that they are oriented and displayed correctly on X-Plane’s approach charts.
  • Marker beacons do not have a Morse code identification, so “—-“ is used as a default. X-Plane will automatically generate the correct series of beeps for each type of beacon, if the aeroplane’s instrument panel is equipped with a marker beacon receiver.
  • For a Locator Outer Marker (LOM), which is an NDB co-located with an OM, the NDB
    must be added to nav.dat as a separate, stand-alone NDB (at the same location!).  The name of the OM must remain in the “KABQ 08  ILS” format – but the NDB may have the appropriate name (eg. “Wobin LOM”).

DMEs (code 12) are shown for:

  • Stand-alone DMEs (common in Europe, and often associated with an NDB).
  • The DME component of a VORTAC or VOR-DME (often identical position data to the co-located VOR)
  • DMEs associated with an ILS – often co-located with (or very close to) the localiser aerial.
  • The DME bias is displayed in the heading column, as described above.

© Robin Peel,
2005.  Last updated September 09, 2006

Comments Off on X-Plane nav-aid data file definition (740 version)

Navigation Data (nav.dat & earth_nav.dat) File Format Specification

This information is historic and only relevant to X-Plane 10 and earlier

REVISION HISTORY

12 Nov 2015 Update to move spec to developer site
7 May 2009 Spec converted to this new format to support new web site (//data.x-plane.com).
8 Sept 2009 Error in usage of row type 13 fixed in “applicability” section below.
31 May 2010 Corrected error in specification of VOR and localizer radio frequencies. Added elevations to NDB spec. Corrected references to apt.dat.
29 July 2011 Fixed minor error in definition of nav-aid frequencies
27 Oct 2011 Fixed minor error in definition of glideslope approach angle
8 July 2012 Corrected error in definition of nav-aid ranges

This specification (XP NAV810) is supported in X-Plane 8.10 to X-Plane 10.52. It is identified in the data files as “810 Version” on the second row of the file. The prior specification for airport data was XP NAV740, which is recommended for X-Plane 7.40 – 8.09.

Changes in the spec for XP NAV810 were:

A new row code for DMEs (13) for which the frequency display will be shown on X-Planes charts. DMEs with a row type 12 will have their frequency display suppressed on X-Plane’s chart to prevent clutter (such DMEs are usually co-located with a VOR or an ILS).

OVERVIEW & SCOPE

This specification defines all radio navigation data for X-Plane, including NDBs, VORs (inc. VORTACs and VOR-DMEs), and ILS components (localisers, glideslopes, marker beacons). The effect of this data is to:

  • Allow these radio navigation facilities to be used when flying in X-Plane.
  • Display the navigation facilities on X-Plane’s chart.
  • Render objects in the X-Plane scenery system to represent each facility

BASIC CONCEPTS

  • Latitudes and longitudes are described in a decimal notation (eg. 20.12345678).
    • A latitude of 50 degrees 30 minutes south would be defined as -50.50000000
  • North latitudes and east longitudes are positive. South latitudes and west longitudes are negative.
  • All headings are referenced to true north (not magnetic north). X-Plane has an internal model of magnetic variation

FILE CHARACTERISTICS

The earth_nav.dat (and nav.dat) files are plain text files:

  • Fields in the data can be separated by one or more white space characters.
  • By default, the files are generated so that rows of data are consistently aligned, but this is not required.

FILE STRUCTURE

The navigation data can be edited in X-Plane in the “Location | Local Map” view, and by clicking on the “edit” button at the top of the screen. If data is changed here, then X-Plane will ask for confirmation that the new data should be saved when quitting X-Plane. This will ensure that all structural requirements listed here for airport data are met.

[Note that the current version of X-Plane displays headings for an ILS in magnetic degrees on this screen, but that this data is converted to a true heading when the data is saved to earth_nav.dat.]

In common with most other X-Plane data file specification, header rows of data define the origin (PC or Mac) of a particular copy of a file, and define the file specification version. The file specification may be followed by a reference to a sequential release data cycle and build number for the data, and a copyright message:

I
810 Version - data cycle 2009.01, build 20081054, metadata NavXP810. Copyright © 2009, Robin A. Peel (robin@xsquawkbox.net)...

The complete copyright message should be left intact if you redistribute this data. The GNU GPL (general public License) under which this data is released is
designed to encourage modifications, enhancements and redistribution, even in commercial derivative products.

Subsequent rows of data define each nav-aid. Sequence is not important, but by default this file is sorted by row code, then by nav-aid name.

The file is terminated by a ‘99’.

ROW CODES

Each row of data begins with an integer code that defines the type of data:

Row Code Meaning Comment
2 NDB (Non-Directional Beacon) Includes NDB component of Locator Outer Markers (LOM)
3 VOR (including VOR-DME and VORTACs) Includes VORs, VOR-DMEs and VORTACs
4 Localiser component of an ILS (Instrument Landing System)
5 Localiser component of a localiser-only approach Includes for LDAs and SDFs
6 Glideslope component of an ILS Frequency shown is paired frequency, not the DME channel
7 Outer markers (OM) for an ILS Includes outer maker component of LOMs
8 Middle markers (MM) for an ILS
9 Inner markers (IM) for an ILS
12 DME, including the DME component of an ILS, VORTAC or VOR-DME Frequency display suppressed on X-Plane’s charts
13 Stand-alone DME, or the DME component of an NDB-DME Frequency will displayed on X-Plane’s charts

EXAMPLE DATA

Here is some example data for the Seattle, Washington, USA area (note the separate data row for the DME component of the Seattle VORTAC):

2 47.63252778 -122.38952778 0 362 50 0.0 BF NOLLA NDB
3 47.43538889 -122.30961111 354 11680 130 19.0 SEA SEATTLE VORTAC
4 47.42939200 -122.30805600 338 11030 18 180.343 ISNQ KSEA 16L ILS-cat-I
6 47.46081700 -122.30939400 425 11030 10 300180.343 ISNQ KSEA 16L GS
8 47.47223300 -122.31102500 433 0 0 180.343 ---- KSEA 16L MM
12 47.43433300 -122.30630000 369 11030 18 0.000 ISNQ KSEA 16L DME-ILS
12 47.43538889 -122.30961111 354 11680 130 0.0 SEA SEATTLE VORTAC DME

DEFINITION OF DATA FIELDS

For a complete table of example definitions, download the NAV810 Spec pdf file.

Comments Off on Navigation Data (nav.dat & earth_nav.dat) File Format Specification

Fix Intersection (fix.dat) File Format Specification

This information is historic and only relevant to X-Plane 10 and earlier

This specification defines all fixes (also known as intersections) X-Plane 10. The effect of this data is to:

  • Allow these fixes to be selected in X-Plane’s GPS and FMC systems.
  • Display the fixes on X-Plane’s charts.

BASIC CONCEPTS

  • Latitudes and longitudes are described in a decimal notation (eg. 20.12345678).
    • A latitude of 50 degrees 30 minutes south would be defined as -50.50000000
  • North latitudes and east longitudes are positive. South latitudes and west longitudes are negative.
  • Unlike other data files, no ‘row codes’ are used for fix data, since the file contains just one type of data.

FILE CHARACTERISTICS

The earth_fix.dat files are plain text files:

  • Fields in the data can be separated by one or more white space (space, tab) characters.
  • By default, the files are generated so that columns of data are consistently aligned, but this is not required.

FILE STRUCTURE

  • In common with most other X-Plane data file specification, header rows of data define the origin (“I” = PC or “A” = Mac) of a particular copy of a file, and define the file specification version. The file specification may be followed by a reference to a sequential release data cycle and build number for the data, and a copyright message.
  • Subsequent rows of data define each nav-aid. Sequence is not important, but by default this file is sorted by row code, then by nav-aid name.
  • The file is terminated by a ‘99’.

EXAMPLES

Here is example data for a fix:

37.428522 -097.419194 ACESI

DEFINITION OF DATA FIELDS

Meaning of example fix data (fix.dat)
Fix example Example Usage
37.428522 Latitude of NDB in decimal degrees. Eight decimal places supported.
-097.419194 Longitude of NDB in decimal degrees Eight decimal places supported.
ACESI Name of fix. Usually five characters. Unique within an ICAO region.

 

Comments Off on Fix Intersection (fix.dat) File Format Specification

Airway Data (awy.dat) File Format Specification

This information is historic and only relevant to X-Plane 10 and earlier

The awy.dat file defines all airway segments in X-Plane 10. This data is used in X-Plane 10 to draw high and low level airways on X-Plane’s charts.

File structure

The file structure is similar to all other X-Plane data files.

  • The first line of each file indicates if the file was generated on a PC (“I” for Intel or IBM) or Macintosh (“A” for Apple). X-Plane uses this code to help deal with the different ways in which PCs and Macs manipulate carriage returns in text files, and big-endian/little-endian issues.
  • The second line contains a version number used by X-Plane. This usually implies the first version of X-Plane that can utilise the file format (eg. “640 version” implies that this file format was first available for use in X-Plane version 6.40). The version number is followed by Robin Peel’s long copyright message that also includes the sequential build number of the data and internal code for the metadata that drives the formatting. This copyright message is very long, and includes a reference to the GNU General Public Licence under which this data is published as modifiable freeware, and also an acknowledgement and a disclaimer for the US Department of Defense NIMA for the DAFIF data. The terms of this license require that this copyright message must be left intact if this file is modified and/or redistributed.
  • The very last line of each file is marked by a “99”.

Here is an example of the two header lines, three airway segments and the file termination line:

I
600 Version - DAFIF data cycle 200502, build 1922, metadata AwyXP640, Copyright © 2005, Robin A. Peel (robin@xsquawkbox.net). This data is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program ("AptNavGNULicence.txt"); if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. This product was developed using DAFIF (the Defense Aeronautical Flight Information File), a product of the US National Imagery and Mapping Agency (NIMA). NIMA requires the following warranty statements: (A) Under 10 U.S.C. 456, no civil action may be brought against the United States on the basis of the content of a navigational aid prepared or disseminated by either the former Defense Mapping Agency (DMA) or the National Imagery and Mapping Agency (NIMA). (B) The DAFIF product is provided "as is," and no warranty, express or implied, including, but not limited to the implied warranties of merchantability and fitness for particular purpose or arising by statute or otherwise in law or from a course of dealing or usage in trade, is made by NIMA as to the accuracy and functioning of the product. (C): Neither NIMA nor its personnel will be liable for any claims, losses, or damages arising from or connected with the use of this product. The user agrees to hold harmless the United States National Imagery and Mapping Agency. The user's sole and exclusive remedy is to stop using the DAFIF product.

ABCDE 32.283733 -106.898669 ABC 33.282503 -107.280542 2 180 450 J13
ABC 33.282503 -107.280542 DEF 35.043797 -106.816314 2 180 450 J13
DEF 35.043797 -106.816314 KLMNO 35.438056 -106.649536 2 180 450 J13-J14-J15
99

Sequencing of data is conceptually unimportant. By default the segments are sorted by the initial “from” fix and then by the “to” fix.

Example data

Here is a simplified data fragment for three airway segments in awy.dat:

ABCDE 32.283733 -106.898669 ABC 33.282503 -107.280542 2 180 450 J13
ABC 33.282503 -107.280542 DEF 35.043797 -106.816314 2 180 450 J13
DEF 35.043797 -106.816314 KLMNO 35.438056 -106.649536 2 180 450 J13-J14-J15

The meaning of this data is (subject to change):

Meaning of example airway data 
Airway  example Example Usage
ABCDE Name of intersection or nav-aid at the beginning of this segment (the fix ABCDE in this example).
32.283733 Latitude of the beginning of this segment.
-106.898669 Longitude of the beginning of this segment.
ABC Name of intersection or nav-aid at the end of this segment (the nav-aid ABC in this example).
33.282503 Latitude of the end of this segment.
-107.280542 Longitude of the end of this segment.
2 This is a “High” airway (1 = “low”, 2 = “high”).  If an airway segment is both High and Low, then it should be listed twice (once in each category).  This determines if the airway is shown on X-Plane’s “High Enroute” or “Low Enroute” charts.
180 Base of airway in hundreds of feet (18,000 feet in this example).
450 Top of airways in hundreds of feet (45,000 feet in this example).
J13 Airway segment name.  If multiple airways share this segment, then all names will be included separated by a hyphen (eg. “J13-J14-J15”)
Comments Off on Airway Data (awy.dat) File Format Specification