<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.flightgear.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ajmacleod</id>
	<title>FlightGear wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.flightgear.org/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Ajmacleod"/>
	<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/Special:Contributions/Ajmacleod"/>
	<updated>2026-04-07T19:50:52Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.6</generator>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Tactical_Air_Navigation&amp;diff=17216</id>
		<title>Tactical Air Navigation</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Tactical_Air_Navigation&amp;diff=17216"/>
		<updated>2009-10-31T16:47:37Z</updated>

		<summary type="html">&lt;p&gt;Ajmacleod: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''TACtical Air Navigation''', or '''TACAN''', is a navigation system used by [[:Category:Military aircraft|military aircraft]]. It provides the user with a distance and bearing from a ground station. It is a more accurate version of the [[VHF]] omnidirectional range / Distance Measuring Equipment (VOR/DME) system that provides range and bearing information for civil aviation. At VORTAC facilities, the DME portion of the TACAN system is available for civil use.&lt;br /&gt;
&lt;br /&gt;
==Operation==&lt;br /&gt;
TACAN in general can be described as the military version of the VOR/DME system. It operates in the frequency band 960-1215 MHz. The bearing unit of TACAN is more accurate than a standard VOR since it makes use of a two frequency principle, with 15 Hz and 135 Hz components.&lt;br /&gt;
&lt;br /&gt;
The distance measurement component of TACAN operates with the same specifications as do civil DMEs. Therefore to reduce the number of required stations, TACAN stations are frequently co-located with VOR facilities. These co-located stations are known as VORTACs. This is a station composed of a VOR for civil bearing information and a TACAN for military bearing information and military/civil distance measuring information. The TACAN transponder performs the function of a DME without the need for a separate, collocated DME. Because the rotation of the antenna creates a large portion of the azimuth signal, if the antenna fails, the azimuth component is no longer available and the TACAN downgrades to a DME only mode.&lt;br /&gt;
&lt;br /&gt;
===FlightGear===&lt;br /&gt;
A few planes in FlightGear are equipped with TACAN. Here's a list of known aircraft with TACAN:&lt;br /&gt;
&lt;br /&gt;
* [[Grumman A-6E|A-6E]]&lt;br /&gt;
* [[Fairchild A-10|A-10]]&lt;br /&gt;
* [[Douglas A4 Skyhawk|A4F]]&lt;br /&gt;
* [[Blackburn Buccaneer]]&lt;br /&gt;
* [[Grumman F-14 Tomcat]]&lt;br /&gt;
* [[English Electric Lightning|Lightning]]&lt;br /&gt;
* [[Northrop T-38|T38]]&lt;br /&gt;
&lt;br /&gt;
To set TACAN, go to the &amp;lt;tt&amp;gt;Equipment &amp;gt; Radio Settings&amp;lt;/tt&amp;gt; dialog. When using in-air refuel, first read [[Howto: Air-Air Refueling]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Aviation]]&lt;/div&gt;</summary>
		<author><name>Ajmacleod</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Sopwith_Camel&amp;diff=9682</id>
		<title>Sopwith Camel</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Sopwith_Camel&amp;diff=9682"/>
		<updated>2008-11-11T19:05:23Z</updated>

		<summary type="html">&lt;p&gt;Ajmacleod: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{infobox Aircraft&lt;br /&gt;
|image =SopwithCamel.jpg&lt;br /&gt;
|name =Sopwith Camel&lt;br /&gt;
|type =Historical aircraft&lt;br /&gt;
|fdm = UIUC, YASim&lt;br /&gt;
|status =production&lt;br /&gt;
|authors =AJ MacLeod, Vivian Meazza, Michael Selig(UIUC FDM)&lt;br /&gt;
|fgname = &amp;lt;tt&amp;gt;sopwithCamel&amp;lt;/tt&amp;gt; (alias for &amp;lt;tt&amp;gt;sopwithCamel-v1-nl-uiuc&amp;lt;/tt&amp;gt;), &amp;lt;tt&amp;gt;sopwithCamel-YASim&amp;lt;/tt&amp;gt;, &amp;lt;tt&amp;gt;sopwithCamel-v1-nl-uiuc&amp;lt;/tt&amp;gt;&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|__TOC__&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Development status/Issues/Todo ==&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
== Related content ==&lt;br /&gt;
=== Related lists ===&lt;br /&gt;
* [[Aircraft]]&lt;br /&gt;
* [[Aircraft Todo]]&lt;br /&gt;
* [[FlightGear 1.0 default aircraft]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Aircraft]]&lt;br /&gt;
[[Category:Historical aircraft]]&lt;br /&gt;
[[Category:Aircraft TODO]]&lt;/div&gt;</summary>
		<author><name>Ajmacleod</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Howto:Creating_3D_instruments&amp;diff=9215</id>
		<title>Howto:Creating 3D instruments</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Howto:Creating_3D_instruments&amp;diff=9215"/>
		<updated>2008-10-28T19:15:24Z</updated>

		<summary type="html">&lt;p&gt;Ajmacleod: fix spelling that was originally correct...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This tutorial describes the basic process of '''creating''' a 3D '''instrument''' for use in [[FlightGear]].  For now, we're assuming that you have created the actual 3d model to use and wish to include it in a cockpit and animate it.  As an example, we will be animating the ITT gauge for the [[Fokker 50]].&lt;br /&gt;
&lt;br /&gt;
===What you need===&lt;br /&gt;
You will need:&lt;br /&gt;
* a text editor (even notepad will do, but one that does syntax highlighting might help you spot typos more easily; if you're on Windows, [http://notepad-plus.sourceforge.net/uk/site.htm Notepad++] looks suitable.)&lt;br /&gt;
* your 3d modelling package&lt;br /&gt;
* and of course a copy of FlightGear&lt;br /&gt;
&lt;br /&gt;
===Creating the XML file===&lt;br /&gt;
The first step is to create an XML file which will load the 3D model and animate it.  There are no hard and fast rules about where these files should live or what they must be called, but we'll follow the fairly standard procedure of calling it itt.xml and placing it in the Models directory.&lt;br /&gt;
&lt;br /&gt;
So, using your favourite text editor, create a file called itt.xml in the Aircraft/fokker50/Models directory (folder).&lt;br /&gt;
&lt;br /&gt;
It should start like this (and please remember that case is ALWAYS important);&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;PropertyList&amp;gt;&lt;br /&gt;
 &amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Everything you will add to this file '''must''' go between the &amp;lt;PropertyList&amp;gt; tags.&lt;br /&gt;
&lt;br /&gt;
Now, our file does nothing useful at this point.  First of all, we want to tell FG to load the 3d model of our instrument.  Add a section under &amp;lt;PropertyList&amp;gt; like this;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;path&amp;gt;itt.ac&amp;lt;/path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is obviously the name of the 3d model file we wish to load.  The model in question looks like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Fokker51_ITT_screenshot1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Adding an animation===&lt;br /&gt;
&lt;br /&gt;
As you can see, the main item to animate is the temperature needle, and its name is &amp;quot;needle&amp;quot; (you can animate either [[AC3D]] &amp;quot;objects&amp;quot; or complete &amp;quot;groups&amp;quot;).  We will want to use a &amp;quot;rotate&amp;quot; animation (for more details on available animation types, see &amp;quot;model-howto.html&amp;quot; which is provided with FG in the Docs directory.)&lt;br /&gt;
&lt;br /&gt;
So, we add an &amp;lt;animation&amp;gt; section to our XML file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;animation&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;rotate&amp;lt;/type&amp;gt;&lt;br /&gt;
        &amp;lt;object-name&amp;gt;needle&amp;lt;/object-name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, we need to specify a property which will determine the amount of rotation required; in other words, the property that provides the ITT value at any one time.  To find the name of this property, we need to start FlightGear in the usual manner with the correct aircraft (fokker50 in this case).  Once FG has started, open the property browser (file/browse internal properties).  You will see the top level of the property tree.  Click on &amp;quot;engines&amp;quot; and you will see a list of engines; click on the first one (engine) and you will see a long list of properties and their current values.&lt;br /&gt;
&lt;br /&gt;
[[Image:Fokker50_prop_browser_screenshot1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now, we have a slight problem at this stage; the fokker50 was created before JSBSim could model turboprops, and so the ITT property is not available right now.  For the purposes of this tutorial though, we'll just use the exhaust temperature instead; the process is what's important.&lt;br /&gt;
&lt;br /&gt;
So, the next line in our XML file will specify the property to use;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;property&amp;gt;engines/engine/egt_degf&amp;lt;/property&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next we need to specify exactly how much that property moves the needle.  There are several ways to do this, but we'll use a simple interpolation table since these are especially useful in more complicated situations.  The ITT gauge is marked from 0 degC to 1200 degC; since we're having to use a value that's reported in degF for now, we'll just convert those two values.  0 degC is about 32 degF and 1200 degC is about 2192 degF.  Two handy tips here; for Linux/unix users, the &amp;quot;units&amp;quot; program is truly invaluable; for everyone, google has a useful units converter; for example search for &amp;quot;&lt;br /&gt;
1200 degrees celsius in fahrenheit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
On to our table then.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;interpolation&amp;gt;&lt;br /&gt;
            &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;32&amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;0&amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
            &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;2192&amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;230&amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
        &amp;lt;/interpolation&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;ind&amp;gt; entries are the ''ind''ependent variables, or values read from the property tree; the &amp;lt;dep&amp;gt; entries are the ''dep''endent variables, or corresponding degrees the object will be rotated by.  In this case I found that number by rotating the needle in AC3D from one end of the scale to the other and reading off the rotation value reported (see screenshot)&lt;br /&gt;
&lt;br /&gt;
[[Image:Fokker50_rotation_value.jpg]]&lt;br /&gt;
&lt;br /&gt;
Having configured the type of animation, the controlling property, and specified the effect of that property, we need to describe an axis and centre for the animation.&lt;br /&gt;
&lt;br /&gt;
In this case, the centre is easy, because the needle centre is at the origin of the 3d model.  If you wanted the rotation centre to be somewhere else, you could use your modelling app to obtain these values.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;center&amp;gt;&lt;br /&gt;
            &amp;lt;x-m&amp;gt;0&amp;lt;/x-m&amp;gt;&lt;br /&gt;
            &amp;lt;y-m&amp;gt;0&amp;lt;/y-m&amp;gt;&lt;br /&gt;
            &amp;lt;z-m&amp;gt;0&amp;lt;/z-m&amp;gt;&lt;br /&gt;
        &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The axis is also very simple in this case;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;axis&amp;gt;&lt;br /&gt;
            &amp;lt;x&amp;gt;-1&amp;lt;/x&amp;gt;&lt;br /&gt;
            &amp;lt;y&amp;gt;0&amp;lt;/y&amp;gt;&lt;br /&gt;
            &amp;lt;z&amp;gt;0&amp;lt;/z&amp;gt;&lt;br /&gt;
        &amp;lt;/axis&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The negative sign on the x axis means that the rotation will be clockwise when viewed from the -x direction (i.e. looking &amp;quot;forwards&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
That concludes the rotation animation and so (as always) we need to add a suitable closing tag;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Digital display===&lt;br /&gt;
Our itt.xml file, as it stands, should now &amp;quot;work&amp;quot; in flightgear; that is, it will animate the needle object to display exhaust temperature on the first engine, in degC (despite the input property being in degF!)&lt;br /&gt;
&lt;br /&gt;
However, the bottom half of the gauge contains a digital readout of the same information, and we haven't mentioned that yet.  In order to only introduce one new aspect at a time, for the moment I am going to ignore the fact that our input property is in degF and simply display it using the digits; there are several ways we could display degC (or indeed any kind of value) instead, but those are probably best left to another tutorial.&lt;br /&gt;
&lt;br /&gt;
Now, in order to give the illusion of a digital display, we are going to use a slightly less obvious technique than the simple rotation used for the needle.  Our digits are going to come from this texture, freshly borrowed from another model in FlightGear (remember, this is open source software - don't reinvent the wheel unless it's absolutely necessary!).&lt;br /&gt;
&lt;br /&gt;
[[Image:digits.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now, each &amp;quot;digit&amp;quot; in the 3d model is a separate rectangle, and each is mapped to the number zero on that texture.  What we are going to do is use a &amp;quot;textranslate&amp;quot; animation to slide the texture along to the relevant number in each case.  Here's the code for the first digit;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Digital Display --&amp;gt;&lt;br /&gt;
    &amp;lt;animation&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;textranslate&amp;lt;/type&amp;gt;&lt;br /&gt;
        &amp;lt;object-name&amp;gt;digit1&amp;lt;/object-name&amp;gt;&lt;br /&gt;
        &amp;lt;property&amp;gt;engines/engine/egt_degf&amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;factor&amp;gt;0.0001&amp;lt;/factor&amp;gt;&lt;br /&gt;
        &amp;lt;step&amp;gt;1000&amp;lt;/step&amp;gt;&lt;br /&gt;
        &amp;lt;axis&amp;gt;&lt;br /&gt;
            &amp;lt;x&amp;gt;1&amp;lt;/x&amp;gt;&lt;br /&gt;
            &amp;lt;y&amp;gt;0&amp;lt;/y&amp;gt;&lt;br /&gt;
            &amp;lt;z&amp;gt;0&amp;lt;/z&amp;gt;&lt;br /&gt;
        &amp;lt;/axis&amp;gt;&lt;br /&gt;
    &amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As always, if you need more detailed explanations of any of these animations, remember to RTFM which in this case is the model-howto.html referred to previously.&lt;br /&gt;
&lt;br /&gt;
Each subsequent digit is handled in the same way, though with the object-name, factor and step values modified accordingly.&lt;br /&gt;
&lt;br /&gt;
For example, the next digit along, the &amp;quot;hundreds&amp;quot; digit;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;animation&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;textranslate&amp;lt;/type&amp;gt;&lt;br /&gt;
        &amp;lt;object-name&amp;gt;digit2&amp;lt;/object-name&amp;gt;&lt;br /&gt;
        &amp;lt;property&amp;gt;engines/engine/egt_degf&amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;factor&amp;gt;0.001&amp;lt;/factor&amp;gt;&lt;br /&gt;
        &amp;lt;step&amp;gt;100&amp;lt;/step&amp;gt;&lt;br /&gt;
        &amp;lt;axis&amp;gt;&lt;br /&gt;
            &amp;lt;x&amp;gt;1&amp;lt;/x&amp;gt;&lt;br /&gt;
            &amp;lt;y&amp;gt;0&amp;lt;/y&amp;gt;&lt;br /&gt;
            &amp;lt;z&amp;gt;0&amp;lt;/z&amp;gt;&lt;br /&gt;
        &amp;lt;/axis&amp;gt;&lt;br /&gt;
    &amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And so on, for the remaining two.  Now, your itt instrument should display the EGT in degC using the needle, and give a &amp;quot;digital&amp;quot; readout of the same in degF.&lt;br /&gt;
&lt;br /&gt;
===Level Of Detail===&lt;br /&gt;
To prevent objects like this instrument being drawn when the aircraft is actually too far away for them to be seen anyway we use a Level Of Detail section (a &amp;quot;range&amp;quot; &amp;quot;animation&amp;quot;.)  Notice the &amp;lt;pre&amp;gt;&amp;lt;!-- --&amp;gt;&amp;lt;/pre&amp;gt; section; this is a comment, feel free to add them where you need a reminder of what's going on.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;!-- LoD --&amp;gt;&lt;br /&gt;
 &amp;lt;animation&amp;gt;&lt;br /&gt;
   &amp;lt;type&amp;gt;range&amp;lt;/type&amp;gt;&lt;br /&gt;
   &amp;lt;min-m&amp;gt;0&amp;lt;/min-m&amp;gt;&lt;br /&gt;
   &amp;lt;max-m&amp;gt;30&amp;lt;/max-m&amp;gt;&lt;br /&gt;
 &amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, if you've managed to stay with us the whole way through, the file should look something like this one, which you can download and compare with. [[Media:itt.xml]]  Notice that under each new opening xml tag (such as &amp;lt;animation&amp;gt;) the text is indented one more level.  Sensible people(!) use one tab to indent each level, others try to use various numbers of spaces to indent; whatever you use, the single most important thing is to be consistent.  Consistent indentation makes the file much easier to read.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Including the instrument in an aircraft===&lt;br /&gt;
&lt;br /&gt;
Now to the exciting bit, actually seeing the fruits of our labour in FlightGear!  &lt;br /&gt;
Including our itt.xml file in the fokker50 is actually an easy step.  The &amp;quot;model&amp;quot; XML file controls the 3d model; this is often called aircraftname-model.xml and nearly always lives in the aircraftname/Models directory.  However, FG is very flexible and in this case, the model XML file is  fokker50/Models/fokker50.xml .  To avoid confusion, it would be preferable for this to be called fokker50-model.xml, and if you're creating one from scratch, please use that convention.&lt;br /&gt;
&lt;br /&gt;
If we open that file in a text editor, it should look quite familiar; you will recognise the way it specifies an ac3d file, and animates the various parts of it.  However, we wish to include an instrument, and that is done very simply.  Below the &amp;lt;offsets&amp;gt; section, add a section like this;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;!-- ITT Gauge --&amp;gt;&lt;br /&gt;
  &amp;lt;model&amp;gt;&lt;br /&gt;
    &amp;lt;path&amp;gt;Aircraft/fokker50/Models/itt.xml&amp;lt;/path&amp;gt;&lt;br /&gt;
    &amp;lt;offsets&amp;gt;&lt;br /&gt;
      &amp;lt;x-m&amp;gt;-8.9088&amp;lt;/x-m&amp;gt;&lt;br /&gt;
      &amp;lt;y-m&amp;gt;-0.0811&amp;lt;/y-m&amp;gt;&lt;br /&gt;
      &amp;lt;z-m&amp;gt;-1.0722&amp;lt;/z-m&amp;gt;&lt;br /&gt;
      &amp;lt;pitch-deg&amp;gt;-10&amp;lt;/pitch-deg&amp;gt;&lt;br /&gt;
    &amp;lt;/offsets&amp;gt;&lt;br /&gt;
  &amp;lt;/model&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Those numbers can be easily obtained from your 3d modelling app; just open the aircraft model and place an object in the correct position, then use the distances here.  The usual FG model coordinate system is used; x=back, y=right, z=up, from the pilot's perspective; the origin is the one in the 3d model (.ac file).  The &amp;quot;pitch&amp;quot; entry is fairly obvious; pitch of zero is a completely vertical instrument, pitch of -90 is one tilted &amp;quot;top edge forwards&amp;quot; to lie flat.&lt;br /&gt;
&lt;br /&gt;
Now, when you start FlightGear, you should see your fully-working instrument in all its glory, situated where it ought to be!  If you need to move it later, it's trivial to tweak the numbers above to suit.&lt;br /&gt;
&lt;br /&gt;
[[Category:Aircraft enhancement]]&lt;br /&gt;
[[Category:Modeling]]&lt;/div&gt;</summary>
		<author><name>Ajmacleod</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Blackburn_Buccaneer&amp;diff=8157</id>
		<title>Blackburn Buccaneer</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Blackburn_Buccaneer&amp;diff=8157"/>
		<updated>2008-10-07T17:03:03Z</updated>

		<summary type="html">&lt;p&gt;Ajmacleod: /* External links */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
{{infobox Aircraft&lt;br /&gt;
|image =&lt;br /&gt;
|name =Blackburn Buccaneer&lt;br /&gt;
|type = Low level tactical strike aircraft&lt;br /&gt;
|authors =Vivian Meazza, AJ MacLeod&lt;br /&gt;
|fdm = YASim&lt;br /&gt;
|status =alpha v.01 &lt;br /&gt;
|download =&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Blackburn Buccaneer, a low level tactical tactical strike aircraft&lt;br /&gt;
&lt;br /&gt;
 buccaneer-obs: Blackburn Buccaneer S2(Observer)&lt;br /&gt;
 buccaneer: Blackburn Buccaneer S2(YASim)&lt;br /&gt;
 buccaneer-wingman: Blackburn Buccaneer S2(Wingman)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== See also ===&lt;br /&gt;
*[[Table of models]]&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
*http://www.flightgear.org/Downloads/aircraft/&lt;br /&gt;
*http://en.wikipedia.org/wiki/Blackburn_Buccaneer&lt;br /&gt;
&lt;br /&gt;
[[Category:Aircraft]]&lt;br /&gt;
[[Category:Aircraft TODO]]&lt;/div&gt;</summary>
		<author><name>Ajmacleod</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Blackburn_Buccaneer&amp;diff=8156</id>
		<title>Blackburn Buccaneer</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Blackburn_Buccaneer&amp;diff=8156"/>
		<updated>2008-10-07T17:01:12Z</updated>

		<summary type="html">&lt;p&gt;Ajmacleod: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{stub}}&lt;br /&gt;
&lt;br /&gt;
{{infobox Aircraft&lt;br /&gt;
|image =&lt;br /&gt;
|name =Blackburn Buccaneer&lt;br /&gt;
|type = Low level tactical strike aircraft&lt;br /&gt;
|authors =Vivian Meazza, AJ MacLeod&lt;br /&gt;
|fdm = YASim&lt;br /&gt;
|status =alpha v.01 &lt;br /&gt;
|download =&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Blackburn Buccaneer, a low level tactical tactical strike aircraft&lt;br /&gt;
&lt;br /&gt;
 buccaneer-obs: Blackburn Buccaneer S2(Observer)&lt;br /&gt;
 buccaneer: Blackburn Buccaneer S2(YASim)&lt;br /&gt;
 buccaneer-wingman: Blackburn Buccaneer S2(Wingman)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== See also ===&lt;br /&gt;
*[[Table of models]]&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
*http://www.flightgear.org/Downloads/aircraft/&lt;br /&gt;
*http://en.wikipedia.org/wiki/Blackburn_Buccaneer&lt;br /&gt;
&lt;br /&gt;
[[Category:Aircraft]]&lt;br /&gt;
[[Category:Aircraft TODO]]s&lt;/div&gt;</summary>
		<author><name>Ajmacleod</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Howto:Reload_sound_configuration_without_restarting&amp;diff=6375</id>
		<title>Howto:Reload sound configuration without restarting</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Howto:Reload_sound_configuration_without_restarting&amp;diff=6375"/>
		<updated>2008-08-27T21:40:57Z</updated>

		<summary type="html">&lt;p&gt;Ajmacleod: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As a massive timesaver for those working on sound configuration files, the following piece of nasal code can be entered in the nasal console (found on the Debug menu.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;fgcommand(&amp;quot;reinit&amp;quot;, props.Node.new({ subsystem: &amp;quot;fx&amp;quot; }))&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Every time that line is executed, the sound subsystem (&amp;quot;fx&amp;quot;) is restarted and the config file reloaded, enabling you to test your changes instantly.  Just remember to actually save your sound config file each time you want to test so that FG sees the most recent changes.&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto|Reload_sound_config_without_restarting_FG]]&lt;/div&gt;</summary>
		<author><name>Ajmacleod</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Howto:Reload_sound_configuration_without_restarting&amp;diff=6373</id>
		<title>Howto:Reload sound configuration without restarting</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Howto:Reload_sound_configuration_without_restarting&amp;diff=6373"/>
		<updated>2008-08-27T21:40:36Z</updated>

		<summary type="html">&lt;p&gt;Ajmacleod: Howto: reload sound config without restarting FG moved to Howto: Reload sound config without restarting FG: capitalisation&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As a massive timesaver for those working on sound configuration files, the following piece of nasal code can be entered in the nasal console (found on the Debug menu.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;fgcommand(&amp;quot;reinit&amp;quot;, props.Node.new({ subsystem: &amp;quot;fx&amp;quot; }))&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Every time that line is executed, the sound subsystem (&amp;quot;fx&amp;quot;) is restarted and the config file reloaded, enabling you to test your changes instantly.  Just remember to actually save your sound config file each time you want to test so that FG sees the most recent changes.&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto|reload_sound_config_without_restarting_FG]]&lt;/div&gt;</summary>
		<author><name>Ajmacleod</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Howto:Reload_sound_configuration_without_restarting&amp;diff=6372</id>
		<title>Howto:Reload sound configuration without restarting</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Howto:Reload_sound_configuration_without_restarting&amp;diff=6372"/>
		<updated>2008-08-27T21:39:57Z</updated>

		<summary type="html">&lt;p&gt;Ajmacleod: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As a massive timesaver for those working on sound configuration files, the following piece of nasal code can be entered in the nasal console (found on the Debug menu.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;fgcommand(&amp;quot;reinit&amp;quot;, props.Node.new({ subsystem: &amp;quot;fx&amp;quot; }))&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Every time that line is executed, the sound subsystem (&amp;quot;fx&amp;quot;) is restarted and the config file reloaded, enabling you to test your changes instantly.  Just remember to actually save your sound config file each time you want to test so that FG sees the most recent changes.&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto|reload_sound_config_without_restarting_FG]]&lt;/div&gt;</summary>
		<author><name>Ajmacleod</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Howto:Reload_sound_configuration_without_restarting&amp;diff=6371</id>
		<title>Howto:Reload sound configuration without restarting</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Howto:Reload_sound_configuration_without_restarting&amp;diff=6371"/>
		<updated>2008-08-27T21:27:42Z</updated>

		<summary type="html">&lt;p&gt;Ajmacleod: New page: As a massive timesaver for those working on sound configuration files, the following piece of nasal code can be entered in the nasal console (found on the Debug menu.)  &amp;lt;code&amp;gt;fgcommand(&amp;quot;re...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As a massive timesaver for those working on sound configuration files, the following piece of nasal code can be entered in the nasal console (found on the Debug menu.)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;fgcommand(&amp;quot;reinit&amp;quot;, props.Node.new({ subsystem: &amp;quot;fx&amp;quot; }))&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Every time that line is executed, the sound subsystem (&amp;quot;fx&amp;quot;) is restarted and the config file reloaded, enabling you to test your changes instantly.  Just remember to actually save your sound config file each time you want to test so that FG sees the most recent changes.&lt;/div&gt;</summary>
		<author><name>Ajmacleod</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Howto:Aerial_refueling&amp;diff=6327</id>
		<title>Howto:Aerial refueling</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Howto:Aerial_refueling&amp;diff=6327"/>
		<updated>2008-08-18T14:28:16Z</updated>

		<summary type="html">&lt;p&gt;Ajmacleod: /* What's possible */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== What's possible ==&lt;br /&gt;
At present, there are two tanker [[aircraft]] ([[Boeing KC-135E|KC135-E]] and KA6-D) and several receiving aircraft ([[Douglas A4 Skyhawk|A4F]], [[Grumman A-6E|A-6E]], [[Fairchild A-10|A-10]], [[Grumman F-14 Tomcat|F-14 Tomcat]], [[English Electric Lightning|Lightning]] and [[Northrop T-38|T38]]) capable of in-air refuelling.  When flying one of these aircraft in the default scenery area, one can locate the tanker aircraft using air-air [http://en.wikipedia.org/wiki/TACAN TACAN (Wikipedia link)] and/or radar and then receive a full or partial load of fuel by flying in close formation behind the tanker.  Refuelling is also possible between aircraft in a [[Howto: Multiplayer|Multiplayer]] session. The KC135 is a boom refueller, while the KA6 has a hose. The A4F and Lightning are both fitted with a probe for hose refuelling while the T38 is fitted with a boom receiver. At the moment, either type can refuel from any tanker, but in the future it is likely that the correct type will have to be used (this has been implemented in CVS).&lt;br /&gt;
&lt;br /&gt;
== Necessary preparations ==&lt;br /&gt;
Like the aircraft carriers, AAR is implemented as an &amp;quot;AI scenario&amp;quot;.  Selecting these normally requires editing the &amp;quot;preferences.xml&amp;quot; file in the flightgear data directory.&lt;br /&gt;
&lt;br /&gt;
There is a shortcut in this case though; simply selecting the Lightning, A4F or T38 should automatically load a scenario containing a tanker, assuming you haven't changed anything in your preferences.xml file.&lt;br /&gt;
&lt;br /&gt;
Assuming this is the case, choose one of the aforementioned aircraft, make sure that &amp;quot;AI models&amp;quot; are enabled and start at [[KSFO]] (the default airport.)&lt;br /&gt;
&lt;br /&gt;
Depending on the scenario, you might see the tanker crossing overhead when the sim starts; if not, don't worry.&lt;br /&gt;
&lt;br /&gt;
== In the cockpit ==&lt;br /&gt;
Perhaps the first thing to do after starting the engines if necessary is to select the appropriate TACAN channel if your aircraft is so equipped (the A4F and Lightning both are).  For the KC135 (by default used by the Lightning and T38) this is currently &amp;quot;040X&amp;quot;, and for the KA6D (used by the A4F) it is &amp;quot;050X&amp;quot;.  Enter this channel using the relevant dropdown boxes in the &amp;quot;radios&amp;quot; dialogue (from the menus, &amp;quot;equipment/radios&amp;quot; or press control-r).&lt;br /&gt;
&lt;br /&gt;
You should now see the current bearing to the tanker indicated in the nav display of the A4 or the TACAN indicator (green needle) in the Lightning.  If the tanker is within range, it will also appear on the radar display of the T38 or Lightning.  Take off...&lt;br /&gt;
&lt;br /&gt;
== In the Air ==&lt;br /&gt;
Turn to an appropriate heading, guided by the TACAN bearing (you should try a &amp;quot;leading&amp;quot; approach to close in on the tanker) and look for the tanker on the radar or nav. screen.  Around 5nm away, you should reduce your speed to around 20kts faster than the tanker (these fly at 280 kts TAS) - a &amp;quot;slow overtake&amp;quot;.  The KC135 will be visible from about 10nm, the KA6-D, being smaller, just over 1 nm.  You should use airbrakes as necessary to keep control of your speed should you find yourself overshooting.&lt;br /&gt;
&lt;br /&gt;
[[Image:KC-135E.jpg|thumb|270px|The KC-135E aircraft with the boom.]]&lt;br /&gt;
Close to within 50ft of the tanker (don't get too close, or visual artifacts might hide the boom from view).  You should see indication in the cockpit that you are receiving fuel - there is a green light in the A4 fuel gauge, and you should see the indicated tank load increase.&lt;br /&gt;
&lt;br /&gt;
Getting to this stage is not necessarily easy - it can take a lot of practice.  As with carrier landings, this is not an easy manoeuver in real life either and there are additional complications in the sim; the tanker, being an AI model, is unaffected by the wind and flies TAS (True Air Speed), while you are flying IAS (Indicated Air Speed) and are affected by the environment.  As in real life, your aircraft will also steadily increase in weight as the tanks fill which will affect the trim of the aircraft. (You might find it helpful to use the autothrottle to help control your speed - ctrl-s then Page Up/Down to increase and decrease the set speed.)&lt;br /&gt;
&lt;br /&gt;
Once your tanks are full, or you have taken as much fuel as you wish, close the throttle a little, back away from the tanker and continue your intended flight.&lt;br /&gt;
&lt;br /&gt;
== More advanced topics ==&lt;br /&gt;
&lt;br /&gt;
=== Multiplayer Refuelling ===&lt;br /&gt;
&lt;br /&gt;
Refuelling is possible within a MultiPlayer session given certain conditions.  A basic flyable KC135 model is available - the pilot of this aircraft should use the callsign &amp;quot;MOBIL1&amp;quot;, &amp;quot;MOBIL2&amp;quot; or &amp;quot;MOBIL3&amp;quot;.  Other numbers are acceptable, but only these three have A-A TACAN channels assigned.  These are 060X, 061X and 062X respectively.&lt;br /&gt;
&lt;br /&gt;
If the receiving aircraft uses a YASim FDM, there are no further complications.  Should the receiving aircraft be JSBSim based, the user must make sure that there are no AI tankers in their configuration.  This means disabling (commenting out) all refuelling &amp;quot;scenarios&amp;quot; in the relevant aircraft-set.xml and in preferences.xml.&lt;br /&gt;
&lt;br /&gt;
MP refuelling works in exactly the same way as AI refuelling and is a fun challenge.  It is best to ensure that your network connection is as free from interruptions as possible; the MP code does a degree of prediction if there is a &amp;quot;blip&amp;quot; in the stream of packets and this can make close formation flight very difficult or even impossible.&lt;br /&gt;
&lt;br /&gt;
=== Selecting Different Scenarios ===&lt;br /&gt;
&lt;br /&gt;
There are several AAR scenarios available in the AI directory.  refueling_demo.xml has a KC135 circling near KSFO at 3000ft; refueling_demo_1.xml the KC135 on a North/South towline at 8000ft and refueling_demo_2.xml the KA6D on a similar N/S path but at 8500ft.&lt;br /&gt;
&lt;br /&gt;
These can be selected by several methods; using the --ai-scenario command line option, or by editing preferences.xml.&lt;br /&gt;
&lt;br /&gt;
==== Command line method ====&lt;br /&gt;
&lt;br /&gt;
Add the --ai-scenario option to your usual flightgear command line; e.g. &amp;lt;code&amp;gt;fgfs --aircraft=lightning --ai-scenario=refueling_demo_2&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Preferences.xml method ====&lt;br /&gt;
Use your operating system's search facility to locate this if you don't know where it is).  Open preferences.xml in a text editor (e.g. notepad if on windows) and search for the &amp;lt;ai&amp;gt; &amp;lt;/ai&amp;gt; tags.  Place a line like &amp;lt;code&amp;gt;&amp;lt;scenario&amp;gt;refueling_demo&amp;lt;/scenario&amp;gt;&amp;lt;/code&amp;gt; somewhere within the &amp;lt;ai&amp;gt; tags; you should see other scenarios already there too, perhaps commented out : i.e. with &amp;lt;! --  --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Howto|Air-Air Refueling]]&lt;/div&gt;</summary>
		<author><name>Ajmacleod</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Soaring&amp;diff=6205</id>
		<title>Soaring</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Soaring&amp;diff=6205"/>
		<updated>2008-07-21T22:14:02Z</updated>

		<summary type="html">&lt;p&gt;Ajmacleod: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FlightGear now has several glider models and winch, AI aerotow or MP aerotow launching methods (in addition to the normal &amp;quot;in-air start&amp;quot; method.)&lt;br /&gt;
&lt;br /&gt;
== Winch Launches ==&lt;br /&gt;
&lt;br /&gt;
Winch launches are currently available with the Bocian and ASK21.  With the Bocian, it's possible to click in the scenery on a point where you would like to place a winch; with both, you can use control-w to place a winch directly in front of the glider.  Press w to start the launch (in the ASK you need to hold it down) and, once at the top of the tow, release the cable with W.&lt;br /&gt;
&lt;br /&gt;
== Aerotows ==&lt;br /&gt;
&lt;br /&gt;
For aerotows, two types are possible - AI or human pilot (via multiplayer).  To get an AI aerotow, select either the ASK or Bocian, choose KRHV as your airport and select the KRHV_towing_demo in the &amp;quot;Scenario&amp;quot; list box in FGRUN (the &amp;quot;Flightgear Wizard&amp;quot;.)  You should see a J3 Cub wobble its way towards you from a nearby taxiway, and pause close to your aircraft.  Press control-o to hook on to it, and hold tight... the O key releases the cable.&lt;br /&gt;
&lt;br /&gt;
For a multiplayer aerotow, you obviously need to arrange a tow with a human pilot - full instructions are available here: [[Doing_aerotow_over_the_net]]&lt;br /&gt;
&lt;br /&gt;
Other gliders available for FG which use the JSBSim (notably the sgs233) or UIUC FDMs are not yet capable of winch or aerotow launches.  Code to facilitate this has been added to JSBSim since the 1.0 release and it is hoped that JSBSim gliders should be compatible with ground launches in the next release.  In the meantime, for such gliders it is necessary to start in the air - the sgs233 does so automatically.&lt;br /&gt;
&lt;br /&gt;
== Thermals and Sinks ==&lt;br /&gt;
&lt;br /&gt;
Thermals and sinks are modeled, but they must be defined individually in a thermal scenario file.  To see how this is done it would be best to examine the file called data/AI/thermal_demo.xml, which sets up 11 thermals and 6 sinks around San Francisco Bay.  To learn more about AI scenarios in general, see the related article called [[AI Systems]].  Note that the thermals and sinks exist independently of FlightGear's weather system, so it's possible to have cloud layers that don't match your thermal heights.  To prevent this you may want to manually set the cloud layers to match your thermals.  Thermal cap clouds are available since about one month ''after'' 0.9.10 was released.  If you are using 0.9.10 or earlier you can make cap clouds work by a) fetching the cap cloud model from CVS, and b) adding a &amp;lt;z-m&amp;gt; offset to the cap cloud wrapper file to put the cloud at the right altitude.&lt;br /&gt;
&lt;br /&gt;
== Extra Soaring Locations ==&lt;br /&gt;
&lt;br /&gt;
A very nice piece of add-on scenery for gliding in the Menden (EDLA) area is available [http://home.arcor.de/vollnhals-bremen/Arnsberg/Arnsberg.html], including the required AI scenario file containing thermals for that area.&lt;br /&gt;
&lt;br /&gt;
If you want to discover the Austrian alpine region, you might want to read [[Pinzgauer Spaziergang]].&lt;br /&gt;
&lt;br /&gt;
== Logging your flights ==&lt;br /&gt;
&lt;br /&gt;
If you log on to a multiplayer server while soaring, then your flight will be recorded at the FGTracker site, like this: [http://fgfs.i-net.hu/modules/fgtracker/?FUNCT=FLIGHT&amp;amp;FLIGHTID=1305&amp;amp;PHPSESSID=b3f9752f0f47468b0df49303e806c288], which makes flight review a snap.&lt;br /&gt;
&lt;br /&gt;
== Learn the theory ==&lt;br /&gt;
&lt;br /&gt;
For those wishing to gain a more in-depth knowledge of correct glider operation, the [http://www.faa.gov/library/manuals/aircraft/glider_handbook/ FAA glider handbook] makes good reading.&lt;/div&gt;</summary>
		<author><name>Ajmacleod</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Howto:Do_aerotow_over_the_net&amp;diff=4885</id>
		<title>Howto:Do aerotow over the net</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Howto:Do_aerotow_over_the_net&amp;diff=4885"/>
		<updated>2008-01-07T21:37:43Z</updated>

		<summary type="html">&lt;p&gt;Ajmacleod: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;With FlightGear 1.0 and later, you can practice aerotowing over the net using the multiplayer system.  At this time, only two towplanes and two gliders are capable of participating in MP aerotows.  These are the J3 (j3cub), the Beaver (dhc2W) towplanes and the ASK21 and Bocian gliders. The following example uses the J3 and the Bocian, though if you are new to aerotowing use the Beaver; it's much easier due to tow with.&lt;br /&gt;
&lt;br /&gt;
[[Image:aerotow2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Taxi the J3 within 60m to the Bocian. The Bocian pilot has to press Ctrl-o. Both pilots should see a radio message that they are connected to each other, then the J3 pilot can taxi. Until we have the instrumentation designed that is capable of displaying the distance between the two aircraft, the J3 pilot should watch /sim/hitches/aerotow/tow/dist and /sim/hitches/aerotow/tow/dist-time-lag-corrected in the property browser. Be very slow if the dist gets near 60m, the length of the tow. Increase the speed slowly. Both pilots should try to lift off gently - the glider pilot should be particularly careful not to lift the tail of the towplane. Either pilot can release the tow by pressing &amp;quot;O&amp;quot; (Shift-o).&lt;br /&gt;
&lt;br /&gt;
[[Image:aerotow.jpg]]&lt;br /&gt;
&lt;br /&gt;
If you are not using a local network connection, both pilots should log in on the same server to minimize the time lag. The time lag will still rather large. Therefore /sim/hitches/aerotow/tow/dist and /sim/hitches/aerotow/tow/dist-time-lag-corrected differ significantly (the second value is the estimated dist, the other pilot is seeing right now).&lt;/div&gt;</summary>
		<author><name>Ajmacleod</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Howto:Do_aerotow_over_the_net&amp;diff=4884</id>
		<title>Howto:Do aerotow over the net</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Howto:Do_aerotow_over_the_net&amp;diff=4884"/>
		<updated>2008-01-07T21:37:07Z</updated>

		<summary type="html">&lt;p&gt;Ajmacleod: Update version details, other minor edits&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;With FlightGear 1.0 and later, you can now practice aerotowing over the net (using the multiplayer system).  At this time, only two motor-aircraft and two gliders are capable of participating in MP aerotows.  These are the J3 (j3cub), the Beaver (dhc2W) towplanes and the ASK21 and Bocian gliders. The following example uses the J3 and the Bocian, though if you are new to aerotowing use the Beaver; it's much easier due to tow with.&lt;br /&gt;
&lt;br /&gt;
[[Image:aerotow2.jpg]]&lt;br /&gt;
&lt;br /&gt;
Taxi the J3 within 60m to the Bocian. The Bocian pilot has to press Ctrl-o. Both pilots should see a radio message that they are connected to each other, then the J3 pilot can taxi. Until we have the instrumentation designed that is capable of displaying the distance between the two aircraft, the J3 pilot should watch /sim/hitches/aerotow/tow/dist and /sim/hitches/aerotow/tow/dist-time-lag-corrected in the property browser. Be very slow if the dist gets near 60m, the length of the tow. Increase the speed slowly. Both pilots should try to lift off gently - the glider pilot should be particularly careful not to lift the tail of the towplane. Either pilot can release the tow by pressing &amp;quot;O&amp;quot; (Shift-o).&lt;br /&gt;
&lt;br /&gt;
[[Image:aerotow.jpg]]&lt;br /&gt;
&lt;br /&gt;
If you are not using a local network connection, both pilots should log in on the same server to minimize the time lag. The time lag will still rather large. Therefore /sim/hitches/aerotow/tow/dist and /sim/hitches/aerotow/tow/dist-time-lag-corrected differ significantly (the second value is the estimated dist, the other pilot is seeing right now).&lt;/div&gt;</summary>
		<author><name>Ajmacleod</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Soaring&amp;diff=4883</id>
		<title>Soaring</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Soaring&amp;diff=4883"/>
		<updated>2008-01-07T21:30:44Z</updated>

		<summary type="html">&lt;p&gt;Ajmacleod: Add basic instructions for winch and AI aerotow launches&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;FlightGear now has several glider models and winch, AI aerotow or MP aerotow launching methods (in addition to the normal &amp;quot;in-air start&amp;quot; method.)&lt;br /&gt;
&lt;br /&gt;
== Winch Launches ==&lt;br /&gt;
&lt;br /&gt;
Winch launches are currently available with the Bocian and ASK21.  With the Bocian, it's possible to click in the scenery on a point where you would like to place a winch; with both, you can use control-w to place a winch directly in front of the glider.  Press w to start the launch (in the ASK you need to hold it down) and, once at the top of the tow, release the cable with W.&lt;br /&gt;
&lt;br /&gt;
== Aerotows ==&lt;br /&gt;
&lt;br /&gt;
For aerotows, two types are possible - AI or human pilot (via multiplayer).  To get an AI aerotow, select either the ASK or Bocian, choose KRHV as your airport and select the KRHV_towing_demo in the &amp;quot;Scenario&amp;quot; list box in FGRUN (the &amp;quot;Flightgear Wizard&amp;quot;.)  You should see a J3 Cub wobble its way towards you from a nearby taxiway, and pause close to your aircraft.  Press control-o to hook on to it, and hold tight... the O key releases the cable.&lt;br /&gt;
&lt;br /&gt;
For a multiplayer aerotow, you obviously need to arrange a tow with a human pilot - full instructions are available here: [[Doing_aerotow_over_the_net]]&lt;br /&gt;
&lt;br /&gt;
Other gliders available for FG which use the JSBSim (notably the sgs233) or UIUC FDMs are not yet capable of winch or aerotow launches.  Code to facilitate this has been added to JSBSim since the 1.0 release and it is hoped that JSBSim gliders should be compatible with ground launches in the next release.  In the meantime, for such gliders it is necessary to start in the air - the sgs233 does so automatically.&lt;br /&gt;
&lt;br /&gt;
== Thermals and Sinks ==&lt;br /&gt;
&lt;br /&gt;
Thermals and sinks are modeled, but they must be defined individually in a thermal scenario file.  To see how this is done it would be best to examine the file called data/AI/thermal_demo.xml, which sets up 11 thermals and 6 sinks around San Francisco Bay.  To learn more about AI scenarios in general, see the related article called [[AI Systems]].  Note that the thermals and sinks exist independently of FlightGear's weather system, so it's possible to have cloud layers that don't match your thermal heights.  To prevent this you may want to manually set the cloud layers to match your thermals.  Thermal cap clouds are available since about one month ''after'' 0.9.10 was released.  If you are using 0.9.10 or earlier you can make cap clouds work by a) fetching the cap cloud model from CVS, and b) adding a &amp;lt;z-m&amp;gt; offset to the cap cloud wrapper file to put the cloud at the right altitude.&lt;br /&gt;
&lt;br /&gt;
== Extra Soaring Locations ==&lt;br /&gt;
&lt;br /&gt;
A very nice piece of add-on scenery for gliding in the Menden (EDLA) area is available [http://home.arcor.de/vollnhals-bremen/Arnsberg/Arnsberg.html], including the required AI scenario file containing thermals for that area.&lt;br /&gt;
&lt;br /&gt;
If you want to discover the Austrian alpine region, you might want to read [[Pinzgauer Spaziergang]].&lt;br /&gt;
&lt;br /&gt;
== Logging your flights ==&lt;br /&gt;
&lt;br /&gt;
If you log on to a multiplayer server while soaring, then your flight will be recorded at the FGTracker site, like this: [http://fgfs.i-net.hu/modules/fgtracker/?FUNCT=FLIGHT&amp;amp;FLIGHTID=1305&amp;amp;PHPSESSID=b3f9752f0f47468b0df49303e806c288], which makes flight review a snap.&lt;/div&gt;</summary>
		<author><name>Ajmacleod</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Keyboard_function_priority_list&amp;diff=4469</id>
		<title>Keyboard function priority list</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Keyboard_function_priority_list&amp;diff=4469"/>
		<updated>2007-11-17T16:30:14Z</updated>

		<summary type="html">&lt;p&gt;Ajmacleod: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;As a first step in the keyboard refactoring, we need to come up with a prioritized list of functions that (a) are general enough to apply to most (or at least many) aircraft, and (b) are important enough to justify a keyboard shortcut rather than just a menu/dialog or a model hotspot.&lt;br /&gt;
&lt;br /&gt;
Feel free to add to the list, but please don't delete anything &amp;amp;mdash; just move it to the bottom if you don't think it's important.&lt;br /&gt;
&lt;br /&gt;
* Program&lt;br /&gt;
** Pause&lt;br /&gt;
** Exit&lt;br /&gt;
* Primary flight controls&lt;br /&gt;
** ailerons&lt;br /&gt;
** elevator&lt;br /&gt;
** rudder&lt;br /&gt;
** centre controls&lt;br /&gt;
* Primary powerplant&lt;br /&gt;
** throttle &amp;amp;mdash; ''for helicopters, should the same key control the collective?''&lt;br /&gt;
** Winch / Aerotow (begin winching, open hitch etc)&lt;br /&gt;
* View controls&lt;br /&gt;
** view reset&lt;br /&gt;
** look left/right&lt;br /&gt;
** look up/down&lt;br /&gt;
** look forward/backwad&lt;br /&gt;
** zoom in/out&lt;br /&gt;
** change viewing styles (dynamic view and g-force based view where supported)&lt;br /&gt;
** change view type &amp;amp;mdash; ''e.g. cockpit, chase plane, tower, etc.''&lt;br /&gt;
* Secondary flight controls&lt;br /&gt;
** flaps extend/retract&lt;br /&gt;
** landing gear raise/retract&lt;br /&gt;
** elevator trim up/down&lt;br /&gt;
** speed brakes extend/retract&lt;br /&gt;
** spoilers extend/retract&lt;br /&gt;
** slats extend/retract&lt;br /&gt;
** toggle tailwheel lock&lt;br /&gt;
** differential toe brakes left/right&lt;br /&gt;
** parking brake&lt;br /&gt;
** drag chute deploy/jettison&lt;br /&gt;
** aileron trim left/right&lt;br /&gt;
** rudder trim left/right&lt;br /&gt;
* Secondary powerplant&lt;br /&gt;
** mixture &amp;amp;mdash; ''piston aircraft only''&lt;br /&gt;
** propeller &amp;amp;mdash; ''some piston aircraft only''&lt;br /&gt;
** carburettor heat &amp;amp;mdash; ''some piston aircraft only''&lt;br /&gt;
** magneto/ignition selection&lt;br /&gt;
* Autopilot&lt;br /&gt;
** engage/disengage&lt;br /&gt;
** toggle heading mode&lt;br /&gt;
** toggle altitude mode&lt;br /&gt;
** toggle wing leveller&lt;br /&gt;
** toggle speed mode (auto-throttle)&lt;br /&gt;
** autotrim engage/disengage&lt;br /&gt;
* Comms&lt;br /&gt;
** open/close text based chat console&lt;br /&gt;
** PTT switch&lt;br /&gt;
** active/standby com/nav channel swap&lt;br /&gt;
* Weapons&lt;br /&gt;
** fire primary weapon&lt;br /&gt;
** fire secondary weapon&lt;br /&gt;
** select secondary weapon&lt;br /&gt;
** jettison store&lt;br /&gt;
* Miscellaneous&lt;br /&gt;
** hoist deploy  (helicopters)&lt;br /&gt;
** hoist up/down&lt;br /&gt;
** hoist jettison&lt;br /&gt;
** water/cargo release &lt;br /&gt;
** carrier launch bar engage&lt;br /&gt;
** carrier catapult release&lt;br /&gt;
** hook up/down (compatible A/C ''all modern jet fighters have a hook'')&lt;br /&gt;
** canopy toggle&lt;br /&gt;
** seat up/down/default&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* throw turkey out of window (Les Nessman only)&lt;/div&gt;</summary>
		<author><name>Ajmacleod</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Main_Page&amp;diff=3717</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Main_Page&amp;diff=3717"/>
		<updated>2007-08-27T21:48:34Z</updated>

		<summary type="html">&lt;p&gt;Ajmacleod: Fix instrument tutorial link again&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
__NOEDITSECTION__&lt;br /&gt;
'''FlightGear''' Flight Simulator project is an open-source, multi-platform, cooperative flight simulator development project. Source code for the entire project is available ([http://cvs.flightgear.org/cgi-bin/viewcvs/viewcvs.cgi/?cvsroot=FlightGear-0.9#dirlist CVS repository]) and licensed under the [http://www.gnu.org/copyleft/gpl.html GNU General Public License]. &lt;br /&gt;
&lt;br /&gt;
The goal of the '''FlightGear''' project is to create a sophisticated flight simulator framework for use in research or academic environments, for the development and pursuit of other interesting flight simulation ideas, and as an end-user application. We are developing a sophisticated, open simulation framework that can be expanded and improved upon by anyone interested in [[Volunteer|contributing]]. &lt;br /&gt;
&lt;br /&gt;
There are many exciting possibilities for an open, free flight sim. We hope that this project will be interesting and useful to many people in many areas.&lt;br /&gt;
&lt;br /&gt;
'''FlightGear''' comes with a set of illustrated documentation, notably&lt;br /&gt;
&amp;quot;The Manual&amp;quot;, which is available as&lt;br /&gt;
[ftp://ftp.de.flightgear.org/pub/fgfs/Docs/getstart.pdf PDF] and&lt;br /&gt;
[http://www.flightgear.org/Docs/getstart/getstart.html HTML]. If you&lt;br /&gt;
prefer to follow the 'bleeding edge' set of FlightGear instructions,&lt;br /&gt;
then the following articles are likely to make you happy. You will&lt;br /&gt;
notice that parts of this Wiki duplicate information that's already&lt;br /&gt;
present in &amp;quot;The Manual&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
{|cellspacing=&amp;quot;10&amp;quot;&lt;br /&gt;
| width=&amp;quot;50%&amp;quot;|&lt;br /&gt;
== User Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Getting Started ===&lt;br /&gt;
* [[ New to FlightGear ]]&lt;br /&gt;
* [[ Why FlightGear ]]&lt;br /&gt;
* [[ Features ]]&lt;br /&gt;
* [[ FAQ ]]&lt;br /&gt;
* [[ Hardware Recommendations ]]&lt;br /&gt;
* [[ Recommended Software ]]&lt;br /&gt;
* [[ Troubleshooting Problems ]]&lt;br /&gt;
* [[ Volunteer ]]&lt;br /&gt;
* [[ Real Life Experience ]]&lt;br /&gt;
&lt;br /&gt;
=== Configuring Flightgear ===&lt;br /&gt;
* [[ Command Line Parameters ]]&lt;br /&gt;
* [[ Installing Scenery ]]&lt;br /&gt;
* [[ Improving Framerates ]]&lt;br /&gt;
* [[ Multiplayer Howto ]]&lt;br /&gt;
* [[ Linux software audio mixing with FlightGear ]]&lt;br /&gt;
&lt;br /&gt;
=== Using Flightgear ===&lt;br /&gt;
* [[Aircraft]]&lt;br /&gt;
* [[ Suggested Flights ]]&lt;br /&gt;
* [[ Starting in the Air ]]&lt;br /&gt;
* [[ Instant Replay ]]&lt;br /&gt;
* [[ Preset Properties ]]&lt;br /&gt;
* [[ Realism ]]&lt;br /&gt;
* [[ Flying the Helicopter ]]&lt;br /&gt;
* [[ Doing aerotow over the net ]]&lt;br /&gt;
&lt;br /&gt;
=== Interactive Scenarios ===&lt;br /&gt;
* [[ Carrier Howto ]]&lt;br /&gt;
* [[ Air-Air Refueling Howto ]]&lt;br /&gt;
* [[ AI Systems ]]&lt;br /&gt;
* [[ Interactive Traffic ]]&lt;br /&gt;
* [[ Soaring ]]&lt;br /&gt;
&lt;br /&gt;
=== Flying Resources ===&lt;br /&gt;
* [[ Definitions Acronyms ]]&lt;br /&gt;
* [[ Getting IFR Charts ]]&lt;br /&gt;
* [[ Understanding Altitude ]]&lt;br /&gt;
* [[ Understanding Navigation ]]&lt;br /&gt;
* [[ Understanding Propeller Torque and P-Factor ]]&lt;br /&gt;
* [[ Understanding Aerodynamics ]]&lt;br /&gt;
* [[ Communications ]]&lt;br /&gt;
* [[ Weather ]]&lt;br /&gt;
* [[ Avionics and Instruments ]] &lt;br /&gt;
* [http://www.wingfiles.com/ Everything you need ]&lt;br /&gt;
* [http://www.faa.gov/library/manuals/ FAA Handbooks &amp;amp; Manuals]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
== Developer Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Compiling  ===&lt;br /&gt;
* [[ Building Flightgear ]]&lt;br /&gt;
* [[ Building Terragear ]]&lt;br /&gt;
* [[ OpenSceneGraph ]]&lt;br /&gt;
* [[ Building FlightGear Launch Control ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Contributing ===&lt;br /&gt;
* [[ Submitting Patches ]] &lt;br /&gt;
* [[ Code Cleanup ]] &lt;br /&gt;
* [[ Development Resources ]]&lt;br /&gt;
* [[ Extension Support ]]&lt;br /&gt;
* [[ Technical Reports ]]&lt;br /&gt;
* [[ Changes since 0.9.10 ]]&lt;br /&gt;
&lt;br /&gt;
=== Code Internals ===&lt;br /&gt;
* [[ Property Tree ]]&lt;br /&gt;
* [[ Subsystems ]] &lt;br /&gt;
* [[ UML Diagrams ]]&lt;br /&gt;
* [[ Commands ]] &lt;br /&gt;
* [[ FDM API ]]&lt;br /&gt;
* [[ Nasal scripting language ]]&lt;br /&gt;
* [[ File Formats ]]&lt;br /&gt;
&lt;br /&gt;
=== Modeling ===&lt;br /&gt;
* [[ Modeling - Getting Started ]]&lt;br /&gt;
* [[ Model Import and Export ]]&lt;br /&gt;
* [[ Modeling Resources ]]&lt;br /&gt;
* [[ Autopilot Tuning Resources ]]&lt;br /&gt;
* [[ Aircraft Information Resources ]]&lt;br /&gt;
* [[ Blender Ground Signs Tutorial]]&lt;br /&gt;
* [[ Normals and Transparency Tutorial ]]&lt;br /&gt;
* [[ Creating_instruments_for_FG ]]&lt;br /&gt;
* [[ Writing_simple_scripts_in_%22nasal%22 ]]&lt;br /&gt;
&lt;br /&gt;
=== Todo ===&lt;br /&gt;
* [[ Long Term Goals ]]&lt;br /&gt;
* [[ Bugs ]]&lt;br /&gt;
* [[ FGFS Todo ]]&lt;br /&gt;
* [[:Category:Aircraft TODO]]&lt;br /&gt;
* [[ Feature Requests / Proposals / Ideas ]]&lt;br /&gt;
* [[ FlightGear Expo Checklist ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
* [[ Glass Cockpit Projects ]]&lt;br /&gt;
* [[ Tutorial Resources ]]&lt;br /&gt;
* [[ Copyright Inquiry ]]&lt;br /&gt;
* [http://www.cafepress.com/fgfs_gear FlightGear - Gear] &lt;br /&gt;
* [[Resources]]&lt;br /&gt;
* [[ Sign Specification Proposal ]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ajmacleod</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Main_Page&amp;diff=3716</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Main_Page&amp;diff=3716"/>
		<updated>2007-08-27T21:18:01Z</updated>

		<summary type="html">&lt;p&gt;Ajmacleod: fix simple nasal tutorial link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
__NOEDITSECTION__&lt;br /&gt;
'''FlightGear''' Flight Simulator project is an open-source, multi-platform, cooperative flight simulator development project. Source code for the entire project is available ([http://cvs.flightgear.org/cgi-bin/viewcvs/viewcvs.cgi/?cvsroot=FlightGear-0.9#dirlist CVS repository]) and licensed under the [http://www.gnu.org/copyleft/gpl.html GNU General Public License]. &lt;br /&gt;
&lt;br /&gt;
The goal of the '''FlightGear''' project is to create a sophisticated flight simulator framework for use in research or academic environments, for the development and pursuit of other interesting flight simulation ideas, and as an end-user application. We are developing a sophisticated, open simulation framework that can be expanded and improved upon by anyone interested in [[Volunteer|contributing]]. &lt;br /&gt;
&lt;br /&gt;
There are many exciting possibilities for an open, free flight sim. We hope that this project will be interesting and useful to many people in many areas.&lt;br /&gt;
&lt;br /&gt;
'''FlightGear''' comes with a set of illustrated documentation, notably&lt;br /&gt;
&amp;quot;The Manual&amp;quot;, which is available as&lt;br /&gt;
[ftp://ftp.de.flightgear.org/pub/fgfs/Docs/getstart.pdf PDF] and&lt;br /&gt;
[http://www.flightgear.org/Docs/getstart/getstart.html HTML]. If you&lt;br /&gt;
prefer to follow the 'bleeding edge' set of FlightGear instructions,&lt;br /&gt;
then the following articles are likely to make you happy. You will&lt;br /&gt;
notice that parts of this Wiki duplicate information that's already&lt;br /&gt;
present in &amp;quot;The Manual&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
{|cellspacing=&amp;quot;10&amp;quot;&lt;br /&gt;
| width=&amp;quot;50%&amp;quot;|&lt;br /&gt;
== User Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Getting Started ===&lt;br /&gt;
* [[ New to FlightGear ]]&lt;br /&gt;
* [[ Why FlightGear ]]&lt;br /&gt;
* [[ Features ]]&lt;br /&gt;
* [[ FAQ ]]&lt;br /&gt;
* [[ Hardware Recommendations ]]&lt;br /&gt;
* [[ Recommended Software ]]&lt;br /&gt;
* [[ Troubleshooting Problems ]]&lt;br /&gt;
* [[ Volunteer ]]&lt;br /&gt;
* [[ Real Life Experience ]]&lt;br /&gt;
&lt;br /&gt;
=== Configuring Flightgear ===&lt;br /&gt;
* [[ Command Line Parameters ]]&lt;br /&gt;
* [[ Installing Scenery ]]&lt;br /&gt;
* [[ Improving Framerates ]]&lt;br /&gt;
* [[ Multiplayer Howto ]]&lt;br /&gt;
* [[ Linux software audio mixing with FlightGear ]]&lt;br /&gt;
&lt;br /&gt;
=== Using Flightgear ===&lt;br /&gt;
* [[Aircraft]]&lt;br /&gt;
* [[ Suggested Flights ]]&lt;br /&gt;
* [[ Starting in the Air ]]&lt;br /&gt;
* [[ Instant Replay ]]&lt;br /&gt;
* [[ Preset Properties ]]&lt;br /&gt;
* [[ Realism ]]&lt;br /&gt;
* [[ Flying the Helicopter ]]&lt;br /&gt;
* [[ Doing aerotow over the net ]]&lt;br /&gt;
&lt;br /&gt;
=== Interactive Scenarios ===&lt;br /&gt;
* [[ Carrier Howto ]]&lt;br /&gt;
* [[ Air-Air Refueling Howto ]]&lt;br /&gt;
* [[ AI Systems ]]&lt;br /&gt;
* [[ Interactive Traffic ]]&lt;br /&gt;
* [[ Soaring ]]&lt;br /&gt;
&lt;br /&gt;
=== Flying Resources ===&lt;br /&gt;
* [[ Definitions Acronyms ]]&lt;br /&gt;
* [[ Getting IFR Charts ]]&lt;br /&gt;
* [[ Understanding Altitude ]]&lt;br /&gt;
* [[ Understanding Navigation ]]&lt;br /&gt;
* [[ Understanding Propeller Torque and P-Factor ]]&lt;br /&gt;
* [[ Understanding Aerodynamics ]]&lt;br /&gt;
* [[ Communications ]]&lt;br /&gt;
* [[ Weather ]]&lt;br /&gt;
* [[ Avionics and Instruments ]] &lt;br /&gt;
* [http://www.wingfiles.com/ Everything you need ]&lt;br /&gt;
* [http://www.faa.gov/library/manuals/ FAA Handbooks &amp;amp; Manuals]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
== Developer Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Compiling  ===&lt;br /&gt;
* [[ Building Flightgear ]]&lt;br /&gt;
* [[ Building Terragear ]]&lt;br /&gt;
* [[ OpenSceneGraph ]]&lt;br /&gt;
* [[ Building FlightGear Launch Control ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Contributing ===&lt;br /&gt;
* [[ Submitting Patches ]] &lt;br /&gt;
* [[ Code Cleanup ]] &lt;br /&gt;
* [[ Development Resources ]]&lt;br /&gt;
* [[ Extension Support ]]&lt;br /&gt;
* [[ Technical Reports ]]&lt;br /&gt;
* [[ Changes since 0.9.10 ]]&lt;br /&gt;
&lt;br /&gt;
=== Code Internals ===&lt;br /&gt;
* [[ Property Tree ]]&lt;br /&gt;
* [[ Subsystems ]] &lt;br /&gt;
* [[ UML Diagrams ]]&lt;br /&gt;
* [[ Commands ]] &lt;br /&gt;
* [[ FDM API ]]&lt;br /&gt;
* [[ Nasal scripting language ]]&lt;br /&gt;
* [[ File Formats ]]&lt;br /&gt;
&lt;br /&gt;
=== Modeling ===&lt;br /&gt;
* [[ Modeling - Getting Started ]]&lt;br /&gt;
* [[ Model Import and Export ]]&lt;br /&gt;
* [[ Modeling Resources ]]&lt;br /&gt;
* [[ Autopilot Tuning Resources ]]&lt;br /&gt;
* [[ Aircraft Information Resources ]]&lt;br /&gt;
* [[ Blender Ground Signs Tutorial]]&lt;br /&gt;
* [[ Normals and Transparency Tutorial ]]&lt;br /&gt;
* [[ Creating / animating instruments for FG ]]&lt;br /&gt;
* [[ Writing_simple_scripts_in_%22nasal%22 ]]&lt;br /&gt;
&lt;br /&gt;
=== Todo ===&lt;br /&gt;
* [[ Long Term Goals ]]&lt;br /&gt;
* [[ Bugs ]]&lt;br /&gt;
* [[ FGFS Todo ]]&lt;br /&gt;
* [[:Category:Aircraft TODO]]&lt;br /&gt;
* [[ Feature Requests / Proposals / Ideas ]]&lt;br /&gt;
* [[ FlightGear Expo Checklist ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
* [[ Glass Cockpit Projects ]]&lt;br /&gt;
* [[ Tutorial Resources ]]&lt;br /&gt;
* [[ Copyright Inquiry ]]&lt;br /&gt;
* [http://www.cafepress.com/fgfs_gear FlightGear - Gear] &lt;br /&gt;
* [[Resources]]&lt;br /&gt;
* [[ Sign Specification Proposal ]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ajmacleod</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Howto:Write_simple_scripts_in_Nasal&amp;diff=3707</id>
		<title>Howto:Write simple scripts in Nasal</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Howto:Write_simple_scripts_in_Nasal&amp;diff=3707"/>
		<updated>2007-08-22T16:28:44Z</updated>

		<summary type="html">&lt;p&gt;Ajmacleod: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Introduction:'''&lt;br /&gt;
Nasal is a scripting language available in FlightGear which opens up a world of possibilities for aircraft modellers - much more detailed information can be found elsewhere [[Nasal_scripting_language]].  Here, though, as a simple example to get you started, we will create a very basic script to convert engine temperatures from degF to degC, as required by the Fokker50 instruments.&lt;br /&gt;
&lt;br /&gt;
Such a script should ideally be very generic so that it can be reused easily; but the script here is deliberately kept as simple as possible.&lt;br /&gt;
&lt;br /&gt;
'''Creating the nasal file:'''&lt;br /&gt;
As with many other things in FG, nasal functions can live in many different places.  Here, however, we're going to create a &amp;quot;Systems&amp;quot; directory under the Main fokker50 directory.  Later, other files might be added to this directory; an electrical system, functions to control other cockpit indicators, etc.&lt;br /&gt;
&lt;br /&gt;
Within that new fokker50/Systems directory then, create an empty plain text file, we'll call it &amp;quot;degftodegc.nas&amp;quot;.  Note that many different functions can live in the same .nas file; this could be renamed to something more generic later if other similar functions are added to it in time.&lt;br /&gt;
&lt;br /&gt;
It's always nice to start with a helpful comment at the top of the file;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Converts degF to degC&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, open our function;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;convertTemp = func{&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What we need to do first is to read in the engine temperature (in degF) from the relevant place in the property tree.  We'll create a local variable for that;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  var degF = getprop(&amp;quot;engines/engine[0]/egt_degf&amp;quot;);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, we need to do the actual conversion process.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  var degC = (degF - 32) * 5/9;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That seems pretty self-explanatory (but note the trailing semicolon at the end of each line of the function - easy to forget!)&lt;br /&gt;
&lt;br /&gt;
Now that we have a variable in our script containing the temperature in degreesC, we will want to write it into a suitable place in the property tree to allow our instruments to make use of it;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  setprop(&amp;quot;engines/engine[0]/egt-degc&amp;quot;, degC);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This property didn't exist before, but will be created and the value held in our &amp;quot;degC&amp;quot; variable will be written there.  Now that our script seems quite complete we can close the function with a closing curly brace&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Including the nasal file in the -set file:'''&lt;br /&gt;
To make sure our aircraft &amp;quot;knows&amp;quot; about this nasal file, we will need to add a section to the main aircraft -set.xml (in this case, fokker50-set.xml of course).&lt;br /&gt;
&lt;br /&gt;
Here's the relevant XML, which I put at the bottom immediately above the closing &amp;lt;/propertylist&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;nasal&amp;gt;&lt;br /&gt;
  &amp;lt;fokker50&amp;gt;&lt;br /&gt;
   &amp;lt;file&amp;gt;Aircraft/fokker50/Systems/degftodegc.nas&amp;lt;/file&amp;gt;&lt;br /&gt;
  &amp;lt;/fokker50&amp;gt;&lt;br /&gt;
 &amp;lt;/nasal&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Crunch Time, or, testing our function:'''&lt;br /&gt;
Now, we can start FlightGear to test our new function. Start FG in the usual manner with the appropriate aircraft.&lt;br /&gt;
&lt;br /&gt;
Now, call up the &amp;quot;nasal console&amp;quot; from the debug menu (only available in recent versions of FG.)  In a blank tab, type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;fokker50.convertTemp();&amp;lt;/pre&amp;gt; and press execute.  (The &amp;quot;fokker50&amp;quot; part comes from the entry we made in the -set xml file)&lt;br /&gt;
&lt;br /&gt;
[[Image:nasal_console.jpg]]&lt;br /&gt;
&lt;br /&gt;
You can see in the property browser (file/browse internal properties) that we now have a new egt property for the first engine (/engines/engine), with the value in degC - success!&lt;br /&gt;
&lt;br /&gt;
However, you will also see that it doesn't change, unless you execute the function again.  We need to add some more to our script in order to have it run continuously; add this to the end of your function (before the closing curly brace though!)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  settimer(convertTemp, 0.1);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Settimer will call the convertTemp function, and the second argument determines the frequency with which it does so.  If your function requires as rapid a response as possible, use 0.&lt;br /&gt;
&lt;br /&gt;
Now, our function, once called, will constantly update the degC property - but we still have to call it manually.  In order to start the function, we'll use a &amp;quot;listener&amp;quot;; this &amp;quot;watches&amp;quot; a given property and calls the desired function whenever that property is written to.  This is an ideal, efficient method to use for things like switches which don't change state very often.&lt;br /&gt;
&lt;br /&gt;
Place this AFTER the close of the convertTemp function:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;setlistener(&amp;quot;sim/signals/fdm-initialized&amp;quot;, convertTemp);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This listens for the fdm-initialized property to be set (this will happen when the sim has started up), and starts our convertTemp function when that happens.&lt;br /&gt;
&lt;br /&gt;
'''Finishing up'''&lt;br /&gt;
&lt;br /&gt;
As an &amp;quot;exercise for the reader&amp;quot; (I always hate those!) you should make the script also convert the temperature values for the second engine.&lt;br /&gt;
&lt;br /&gt;
Now you should be able to take advantage of the more detailed information available about nasal here on the wiki, at [http://www.plausible.org/nasal www.plausible.org/nasal] , and also other pre-existing nasal scripts which can be useful to borrow from.&lt;/div&gt;</summary>
		<author><name>Ajmacleod</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Howto:Write_simple_scripts_in_Nasal&amp;diff=3706</id>
		<title>Howto:Write simple scripts in Nasal</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Howto:Write_simple_scripts_in_Nasal&amp;diff=3706"/>
		<updated>2007-08-22T16:24:59Z</updated>

		<summary type="html">&lt;p&gt;Ajmacleod: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Introduction:'''&lt;br /&gt;
Nasal is a scripting language available in FlightGear which opens up a world of possibilities for aircraft modellers - much more detailed information can be found elsewhere [[Nasal_scripting_language]].  Here, though, as a simple example to get you started, we will create a very basic script to convert engine temperatures from degF to degC, as required by the Fokker50 instruments.&lt;br /&gt;
&lt;br /&gt;
Such a script should ideally be very generic so that it can be reused easily; but the script here is deliberately kept as simple as possible.&lt;br /&gt;
&lt;br /&gt;
'''Creating the nasal file:'''&lt;br /&gt;
As with many other things in FG, nasal functions can live in many different places.  Here, however, we're going to create a &amp;quot;Systems&amp;quot; directory under the Main fokker50 directory.  Later, other files might be added to this directory; an electrical system, functions to control other cockpit indicators, etc.&lt;br /&gt;
&lt;br /&gt;
Within that new fokker50/Systems directory then, create an empty plain text file, we'll call it &amp;quot;degftodegc.nas&amp;quot;.  Note that many different functions can live in the same .nas file; this could be renamed to something more generic later if other similar functions are added to it in time.&lt;br /&gt;
&lt;br /&gt;
It's always nice to start with a helpful comment at the top of the file;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Converts degF to degC&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, open our function;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;convertTemp = func{&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What we need to do first is to read in the engine temperature (in degF) from the relevant place in the property tree.  We'll create a local variable for that;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  var degF = getprop(&amp;quot;engines/engine[0]/egt_degf&amp;quot;);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, we need to do the actual conversion process.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  var degC = (degF - 32) * 5/9;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That seems pretty self-explanatory (but note the trailing semicolon at the end of each line of the function - easy to forget!)&lt;br /&gt;
&lt;br /&gt;
Now that we have a variable in our script containing the temperature in degreesC, we will want to write it into a suitable place in the property tree to allow our instruments to make use of it;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  setprop(&amp;quot;engines/engine[0]/egt-degc&amp;quot;, degC);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This property didn't exist before, but will be created and the value held in our &amp;quot;degC&amp;quot; variable will be written there.  Now that our script seems quite complete we can close the function with a closing curly brace&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Including the nasal file in the -set file:'''&lt;br /&gt;
To make sure our aircraft &amp;quot;knows&amp;quot; about this nasal file, we will need to add a section to the main aircraft -set.xml (in this case, fokker50-set.xml of course).&lt;br /&gt;
&lt;br /&gt;
Here's the relevant XML, which I put at the bottom immediately above the closing &amp;lt;/propertylist&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;nasal&amp;gt;&lt;br /&gt;
  &amp;lt;fokker50&amp;gt;&lt;br /&gt;
   &amp;lt;file&amp;gt;Aircraft/fokker50/Systems/degftodegc.nas&amp;lt;/file&amp;gt;&lt;br /&gt;
  &amp;lt;/fokker50&amp;gt;&lt;br /&gt;
 &amp;lt;/nasal&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Crunch Time, or, testing our function:'''&lt;br /&gt;
Now, we can start FlightGear to test our new function. Start FG in the usual manner with the appropriate aircraft.&lt;br /&gt;
&lt;br /&gt;
Now, call up the &amp;quot;nasal console&amp;quot; from the debug menu (only available in recent versions of FG.)  In a blank tab, type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;fokker50.convertTemp();&amp;lt;/pre&amp;gt; and press execute.  (The &amp;quot;fokker50&amp;quot; part comes from the entry we made in the -set xml file)&lt;br /&gt;
&lt;br /&gt;
[[Image:nasal_console.jpg]]&lt;br /&gt;
&lt;br /&gt;
You can see in the property browser (file/browse internal properties) that we now have a new egt property for the first engine (/engines/engine), with the value in degC - success!&lt;br /&gt;
&lt;br /&gt;
However, you will also see that it doesn't change, unless you execute the function again.  We need to add some more to our script in order to have it run continuously; add this to the end of your function (before the closing curly brace though!)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  settimer(convertTemp, 0.1);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Settimer will call the convertTemp function, and the second argument determines the frequency with which it does so.  If your function requires as rapid a response as possible, use 0.&lt;br /&gt;
&lt;br /&gt;
Now, our function, once called, will constantly update the degC property - but we still have to call it manually.  In order to start the function, we'll use a &amp;quot;listener&amp;quot;; this &amp;quot;watches&amp;quot; a given property and calls the desired function whenever that property is written to.  This is an ideal, efficient method to use for things like switches which don't change state very often.&lt;br /&gt;
&lt;br /&gt;
Place this AFTER the close of the convertTemp function:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;setlistener(&amp;quot;sim/signals/fdm-initialized&amp;quot;, convertTemp);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This listens for the fdm-initialized property to be set (this will happen when the sim has started up), and starts our convertTemp function when that happens.&lt;br /&gt;
&lt;br /&gt;
As an &amp;quot;exercise for the reader&amp;quot; (I always hate those!) you should make the script also convert the temperature values for the second engine.&lt;br /&gt;
&lt;br /&gt;
Now you should be able to take advantage of the more detailed information available about nasal here on the wiki, at www.plausible.org/nasal , and also other pre-existing nasal scripts which can be useful to borrow from!&lt;/div&gt;</summary>
		<author><name>Ajmacleod</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Main_Page&amp;diff=3705</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Main_Page&amp;diff=3705"/>
		<updated>2007-08-22T15:49:11Z</updated>

		<summary type="html">&lt;p&gt;Ajmacleod: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
__NOEDITSECTION__&lt;br /&gt;
'''FlightGear''' Flight Simulator project is an open-source, multi-platform, cooperative flight simulator development project. Source code for the entire project is available ([http://cvs.flightgear.org/cgi-bin/viewcvs/viewcvs.cgi/?cvsroot=FlightGear-0.9#dirlist CVS repository]) and licensed under the [http://www.gnu.org/copyleft/gpl.html GNU General Public License]. &lt;br /&gt;
&lt;br /&gt;
The goal of the '''FlightGear''' project is to create a sophisticated flight simulator framework for use in research or academic environments, for the development and pursuit of other interesting flight simulation ideas, and as an end-user application. We are developing a sophisticated, open simulation framework that can be expanded and improved upon by anyone interested in [[Volunteer|contributing]]. &lt;br /&gt;
&lt;br /&gt;
There are many exciting possibilities for an open, free flight sim. We hope that this project will be interesting and useful to many people in many areas.&lt;br /&gt;
&lt;br /&gt;
'''FlightGear''' comes with a set of illustrated documentation, notably&lt;br /&gt;
&amp;quot;The Manual&amp;quot;, which is available as&lt;br /&gt;
[ftp://ftp.de.flightgear.org/pub/fgfs/Docs/getstart.pdf PDF] and&lt;br /&gt;
[http://www.flightgear.org/Docs/getstart/getstart.html HTML]. If you&lt;br /&gt;
prefer to follow the 'bleeding edge' set of FlightGear instructions,&lt;br /&gt;
then the following articles are likely to make you happy. You will&lt;br /&gt;
notice that parts of this Wiki duplicate information that's already&lt;br /&gt;
present in &amp;quot;The Manual&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
{|cellspacing=&amp;quot;10&amp;quot;&lt;br /&gt;
| width=&amp;quot;50%&amp;quot;|&lt;br /&gt;
== User Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Getting Started ===&lt;br /&gt;
* [[ New to FlightGear ]]&lt;br /&gt;
* [[ Why FlightGear ]]&lt;br /&gt;
* [[ Features ]]&lt;br /&gt;
* [[ FAQ ]]&lt;br /&gt;
* [[ Hardware Recommendations ]]&lt;br /&gt;
* [[ Recommended Software ]]&lt;br /&gt;
* [[ Troubleshooting Problems ]]&lt;br /&gt;
* [[ Volunteer ]]&lt;br /&gt;
* [[ Real Life Experience ]]&lt;br /&gt;
&lt;br /&gt;
=== Configuring Flightgear ===&lt;br /&gt;
* [[ Command Line Parameters ]]&lt;br /&gt;
* [[ Installing Scenery ]]&lt;br /&gt;
* [[ Improving Framerates ]]&lt;br /&gt;
* [[ Multiplayer Howto ]]&lt;br /&gt;
* [[ Linux software audio mixing with FlightGear ]]&lt;br /&gt;
&lt;br /&gt;
=== Using Flightgear ===&lt;br /&gt;
* [[Aircraft]]&lt;br /&gt;
* [[ Suggested Flights ]]&lt;br /&gt;
* [[ Starting in the Air ]]&lt;br /&gt;
* [[ Instant Replay ]]&lt;br /&gt;
* [[ Preset Properties ]]&lt;br /&gt;
* [[ Realism ]]&lt;br /&gt;
* [[ Flying the Helicopter ]]&lt;br /&gt;
* [[ Doing aerotow over the net ]]&lt;br /&gt;
&lt;br /&gt;
=== Interactive Scenarios ===&lt;br /&gt;
* [[ Carrier Howto ]]&lt;br /&gt;
* [[ Air-Air Refueling Howto ]]&lt;br /&gt;
* [[ AI Systems ]]&lt;br /&gt;
* [[ Interactive Traffic ]]&lt;br /&gt;
* [[ Soaring ]]&lt;br /&gt;
&lt;br /&gt;
=== Flying Resources ===&lt;br /&gt;
* [[ Definitions Acronyms ]]&lt;br /&gt;
* [[ Getting IFR Charts ]]&lt;br /&gt;
* [[ Understanding Altitude ]]&lt;br /&gt;
* [[ Understanding Navigation ]]&lt;br /&gt;
* [[ Understanding Propeller Torque and P-Factor ]]&lt;br /&gt;
* [[ Understanding Aerodynamics ]]&lt;br /&gt;
* [[ Communications ]]&lt;br /&gt;
* [[ Weather ]]&lt;br /&gt;
* [[ Avionics and Instruments ]] &lt;br /&gt;
* [http://www.wingfiles.com/ Everything you need ]&lt;br /&gt;
* [http://www.faa.gov/library/manuals/ FAA Handbooks &amp;amp; Manuals]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
== Developer Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Compiling  ===&lt;br /&gt;
* [[ Building Flightgear ]]&lt;br /&gt;
* [[ Building Terragear ]]&lt;br /&gt;
* [[ OpenSceneGraph ]]&lt;br /&gt;
* [[ Building FlightGear Launch Control ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Contributing ===&lt;br /&gt;
* [[ Submitting Patches ]] &lt;br /&gt;
* [[ Code Cleanup ]] &lt;br /&gt;
* [[ Development Resources ]]&lt;br /&gt;
* [[ Extension Support ]]&lt;br /&gt;
* [[ Technical Reports ]]&lt;br /&gt;
* [[ Changes since 0.9.10 ]]&lt;br /&gt;
&lt;br /&gt;
=== Code Internals ===&lt;br /&gt;
* [[ Property Tree ]]&lt;br /&gt;
* [[ Subsystems ]] &lt;br /&gt;
* [[ Commands ]] &lt;br /&gt;
* [[ FDM API ]]&lt;br /&gt;
* [[ Nasal scripting language ]]&lt;br /&gt;
* [[ File Formats ]]&lt;br /&gt;
&lt;br /&gt;
=== Modeling ===&lt;br /&gt;
* [[ Modeling - Getting Started ]]&lt;br /&gt;
* [[ Model Import and Export ]]&lt;br /&gt;
* [[ Modeling Resources ]]&lt;br /&gt;
* [[ Autopilot Tuning Resources ]]&lt;br /&gt;
* [[ Aircraft Information Resources ]]&lt;br /&gt;
* [[ Blender Ground Signs Tutorial]]&lt;br /&gt;
* [[ Normals and Transparency Tutorial ]]&lt;br /&gt;
* [[ Creating / animating instruments for FG ]]&lt;br /&gt;
* [[ Creating a simple nasal script ]]&lt;br /&gt;
&lt;br /&gt;
=== Todo ===&lt;br /&gt;
* [[ Long Term Goals ]]&lt;br /&gt;
* [[ Bugs ]]&lt;br /&gt;
* [[ FGFS Todo ]]&lt;br /&gt;
* [[:Category:Aircraft TODO]]&lt;br /&gt;
* [[ Feature Requests / Proposals / Ideas ]]&lt;br /&gt;
* [[ FlightGear Expo Checklist ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
* [[ Glass Cockpit Projects ]]&lt;br /&gt;
* [[ Tutorial Resources ]]&lt;br /&gt;
* [[ Copyright Inquiry ]]&lt;br /&gt;
* [http://www.cafepress.com/fgfs_gear FlightGear - Gear] &lt;br /&gt;
* [[Resources]]&lt;br /&gt;
* [[ Sign Specification Proposal ]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ajmacleod</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Howto:Write_simple_scripts_in_Nasal&amp;diff=3704</id>
		<title>Howto:Write simple scripts in Nasal</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Howto:Write_simple_scripts_in_Nasal&amp;diff=3704"/>
		<updated>2007-08-22T15:31:25Z</updated>

		<summary type="html">&lt;p&gt;Ajmacleod: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Introduction:'''&lt;br /&gt;
Nasal is a scripting language available in FlightGear which opens up a world of possibilities for aircraft modellers.  Here, as an example, we will create a script to convert engine temperatures from degF to degC, as required by the Fokker50 instruments.&lt;br /&gt;
&lt;br /&gt;
'''Creating the nasal file:'''&lt;br /&gt;
As with many other things in FG, nasal functions can live in many different places.  Here, however, we're going to create a &amp;quot;Systems&amp;quot; directory under the Main fokker50 directory.  Later, other files might be added to this directory; an electrical system, functions to control other cockpit indicators, etc.&lt;br /&gt;
&lt;br /&gt;
Within that new fokker50/Systems directory then, create an empty plain text file, we'll call it &amp;quot;degftodegc.nas&amp;quot;.  Note that many different functions can live in the same .nas file; this could be renamed to something more generic later if other similar functions are added to it in time.&lt;br /&gt;
&lt;br /&gt;
It's always nice to start with a helpful comment at the top of the file;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Converts degF to degC&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, open our function;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;convertTemp = func{&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What we need to do first is to read in the engine temperature (in degF) from the relevant place in the property tree.  We'll create a local variable for that;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  var degF = getprop(&amp;quot;engines/engine[0]/egt_degf&amp;quot;);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, we need to do the actual conversion process.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  var degC = (degF - 32) * 5/9;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That seems pretty self-explanatory (but note the trailing semicolon at the end of each line of the function - easy to forget!)&lt;br /&gt;
&lt;br /&gt;
Now that we have a variable in our script containing the temperature in degreesC, we will want to write it into a suitable place in the property tree to allow our instruments to make use of it;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  setprop(&amp;quot;engines/engine[0]/egt-degc&amp;quot;, degC);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This property didn't exist before, but will be created and the value held in our &amp;quot;degC&amp;quot; variable will be written there.  Now that our script seems quite complete we can close the function with a closing curly brace&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Including the nasal file in the -set file:'''&lt;br /&gt;
To make sure our aircraft &amp;quot;knows&amp;quot; about this nasal file, we will need to add a section to the main aircraft -set.xml (in this case, fokker50-set.xml of course).&lt;br /&gt;
&lt;br /&gt;
Here's the relevant XML, which I put at the bottom immediately above the closing &amp;lt;/propertylist&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;nasal&amp;gt;&lt;br /&gt;
  &amp;lt;fokker50&amp;gt;&lt;br /&gt;
   &amp;lt;file&amp;gt;Aircraft/fokker50/Systems/degftodegc.nas&amp;lt;/file&amp;gt;&lt;br /&gt;
  &amp;lt;/fokker50&amp;gt;&lt;br /&gt;
 &amp;lt;/nasal&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Crunch Time, or, testing our function:'''&lt;br /&gt;
Now, we can start FlightGear to test our new function. Start FG in the usual manner with the appropriate aircraft.&lt;br /&gt;
&lt;br /&gt;
Now, call up the &amp;quot;nasal console&amp;quot; from the debug menu (only available in recent versions of FG.)  In a blank tab, type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;fokker50.convertTemp();&amp;lt;/pre&amp;gt; and press execute.  (The &amp;quot;fokker50&amp;quot; part comes from the entry we made in the -set xml file)&lt;br /&gt;
&lt;br /&gt;
[[Image:nasal_console.jpg]]&lt;br /&gt;
&lt;br /&gt;
You can see in the property browser (file/browse internal properties) that we now have a new egt property for the first engine (/engines/engine), with the value in degC - success!&lt;br /&gt;
&lt;br /&gt;
However, you will also see that it doesn't change, unless you execute the function again.  We need to add some more to our script in order to have it run continuously; add this to the end of your function (before the closing curly brace though!)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  settimer(convertTemp, 0.1);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Settimer will call the convertTemp function, and the second argument determines the frequency with which it does so.  If your function requires as rapid a response as possible, use 0.&lt;br /&gt;
&lt;br /&gt;
Now, our function, once called, will constantly update the degC property - but we still have to call it manually.  In order to start the function, we'll use a &amp;quot;listener&amp;quot;; this &amp;quot;watches&amp;quot; a given property and calls the desired function whenever that property is written to.  This is an ideal, efficient method to use for things like switches which don't change state very often.&lt;br /&gt;
&lt;br /&gt;
Place this AFTER the close of the convertTemp function:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;setlistener(&amp;quot;sim/signals/fdm-initialized&amp;quot;, convertTemp);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This listens for the fdm-initialized property to be set (this will happen when the sim has started up), and starts our convertTemp function when that happens.&lt;/div&gt;</summary>
		<author><name>Ajmacleod</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Howto:Write_simple_scripts_in_Nasal&amp;diff=3703</id>
		<title>Howto:Write simple scripts in Nasal</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Howto:Write_simple_scripts_in_Nasal&amp;diff=3703"/>
		<updated>2007-08-22T13:47:34Z</updated>

		<summary type="html">&lt;p&gt;Ajmacleod: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Introduction:'''&lt;br /&gt;
Nasal is a scripting language available in FlightGear which opens up a world of possibilities for aircraft modellers.  Here, as an example, we will create a script to convert engine temperatures from degF to degC, as required by the Fokker50 instruments.&lt;br /&gt;
&lt;br /&gt;
'''Creating the nasal file:'''&lt;br /&gt;
As with many other things in FG, nasal functions can live in many different places.  Here, however, we're going to create a &amp;quot;Systems&amp;quot; directory under the Main fokker50 directory.  Later, other files might be added to this directory; an electrical system, functions to control other cockpit indicators, etc.&lt;br /&gt;
&lt;br /&gt;
Within that new fokker50/Systems directory then, create an empty plain text file, we'll call it &amp;quot;degftodegc.nas&amp;quot;.  Note that many different functions can live in the same .nas file; this could be renamed to something more generic later if other similar functions are added to it in time.&lt;br /&gt;
&lt;br /&gt;
It's always nice to start with a helpful comment at the top of the file;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Converts degF to degC&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, open our function;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;convertTemp = func{&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What we need to do first is to read in the engine temperature (in degF) from the relevant place in the property tree.  We'll create a local variable for that;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  var degF = getprop(&amp;quot;engines/engine[0]/egt_degf&amp;quot;);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, we need to do the actual conversion process.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  var degC = (degF - 32) * 5/9;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That seems pretty self-explanatory (but note the trailing semicolon at the end of each line of the function - easy to forget!)&lt;br /&gt;
&lt;br /&gt;
Now that we have a variable in our script containing the temperature in degreesC, we will want to write it into a suitable place in the property tree to allow our instruments to make use of it;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  setprop(&amp;quot;engines/engine[0]/egt-degc&amp;quot;, degC);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This property didn't exist before, but will be created and the value held in our &amp;quot;degC&amp;quot; variable will be written there.  Now that our script seems quite complete we can close the function with a closing curly brace&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Including the nasal file in the -set file:'''&lt;br /&gt;
To make sure our aircraft &amp;quot;knows&amp;quot; about this nasal file, we will need to add a section to the main aircraft -set.xml (in this case, fokker50-set.xml of course).&lt;br /&gt;
&lt;br /&gt;
Here's the relevant XML, which I put at the bottom immediately above the closing &amp;lt;/propertylist&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;nasal&amp;gt;&lt;br /&gt;
  &amp;lt;fokker50&amp;gt;&lt;br /&gt;
   &amp;lt;file&amp;gt;Aircraft/fokker50/Systems/degftodegc.nas&amp;lt;/file&amp;gt;&lt;br /&gt;
  &amp;lt;/fokker50&amp;gt;&lt;br /&gt;
 &amp;lt;/nasal&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Crunch Time, or, testing our function:'''&lt;br /&gt;
Now, we can start FlightGear to test our new function. Start FG in the usual manner with the appropriate aircraft.&lt;br /&gt;
&lt;br /&gt;
Now, call up the &amp;quot;nasal console&amp;quot; from the debug menu (only available in recent versions of FG.)  In a blank tab, type&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;fokker50.convertTemp();&amp;lt;/pre&amp;gt; and press execute.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;fokker50&amp;quot; part comes from the entry we made in the -set xml file.&lt;br /&gt;
[[Image:nasal_console.jpg]]&lt;/div&gt;</summary>
		<author><name>Ajmacleod</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=File:Nasal_console.jpg&amp;diff=3702</id>
		<title>File:Nasal console.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=File:Nasal_console.jpg&amp;diff=3702"/>
		<updated>2007-08-22T13:38:46Z</updated>

		<summary type="html">&lt;p&gt;Ajmacleod: Nasal Console&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Nasal Console&lt;/div&gt;</summary>
		<author><name>Ajmacleod</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Howto:Write_simple_scripts_in_Nasal&amp;diff=3701</id>
		<title>Howto:Write simple scripts in Nasal</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Howto:Write_simple_scripts_in_Nasal&amp;diff=3701"/>
		<updated>2007-08-22T10:32:43Z</updated>

		<summary type="html">&lt;p&gt;Ajmacleod: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Introduction:'''&lt;br /&gt;
Nasal is a scripting language available in FlightGear which opens up a world of possibilities for aircraft modellers.  Here, as an example, we will create a script to convert engine temperatures from degF to degC, as required by the Fokker50 instruments.&lt;br /&gt;
&lt;br /&gt;
'''Creating the nasal file:'''&lt;br /&gt;
As with many other things in FG, nasal functions can live in many different places.  Here, however, we're going to create a &amp;quot;Systems&amp;quot; directory under the Main fokker50 directory.  Later, other files might be added to this directory; an electrical system, functions to control other cockpit indicators, etc.&lt;br /&gt;
&lt;br /&gt;
Within that new fokker50/Systems directory then, create an empty plain text file, we'll call it &amp;quot;degftodegc.nas&amp;quot;.  Note that many different functions can live in the same .nas file; this could be renamed to something more generic later if other similar functions are added to it in time.&lt;br /&gt;
&lt;br /&gt;
It's always nice to start with a helpful comment at the top of the file;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Converts degF to degC&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, open our function;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;convertTemp = func{&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What we need to do first is to read in the engine temperature (in degF) from the relevant place in the property tree.  We'll create a local variable for that;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  var degF = getprop(&amp;quot;engines/engine[0]/egt_degf&amp;quot;);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, we need to do the actual conversion process.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  var degC = (degF - 32) * 5/9;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That seems pretty self-explanatory (but note the trailing semicolon at the end of each line of the function - easy to forget!)&lt;br /&gt;
&lt;br /&gt;
Now that we have a variable in our script containing the temperature in degreesC, we will want to write it into a suitable place in the property tree to allow our instruments to make use of it;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  setprop(&amp;quot;engines/engine[0]/egt-degc&amp;quot;, degC);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This property didn't exist before, but will be created and the value held in our &amp;quot;degC&amp;quot; variable will be written there.  Now that our script seems quite complete we can close the function with a closing curly brace&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Including the nasal file in the -set file:'''&lt;br /&gt;
To make sure our aircraft &amp;quot;knows&amp;quot; about this nasal file, we will need to add a section to the main aircraft -set.xml (in this case, fokker50-set.xml of course).&lt;br /&gt;
&lt;br /&gt;
Here's the relevant XML, which I put at the bottom immediately above the closing &amp;lt;/propertylist&amp;gt;:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;nasal&amp;gt;&lt;br /&gt;
  &amp;lt;fokker50&amp;gt;&lt;br /&gt;
   &amp;lt;file&amp;gt;Aircraft/fokker50/Systems/degftodegc.nas&amp;lt;/file&amp;gt;&lt;br /&gt;
  &amp;lt;/fokker50&amp;gt;&lt;br /&gt;
 &amp;lt;/nasal&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Crunch Time, or, testing our function:'''&lt;br /&gt;
Now, we can start FlightGear to test our new function. Start FG in the usual manner with the appropriate aircraft.&lt;/div&gt;</summary>
		<author><name>Ajmacleod</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Howto:Write_simple_scripts_in_Nasal&amp;diff=3700</id>
		<title>Howto:Write simple scripts in Nasal</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Howto:Write_simple_scripts_in_Nasal&amp;diff=3700"/>
		<updated>2007-08-22T10:27:19Z</updated>

		<summary type="html">&lt;p&gt;Ajmacleod: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Introduction:'''&lt;br /&gt;
Nasal is a scripting language available in FlightGear which opens up a world of possibilities for aircraft modellers.  Here, as an example, we will create a script to convert engine temperatures from degF to degC, as required by the Fokker50 instruments.&lt;br /&gt;
&lt;br /&gt;
'''Creating the nasal file:'''&lt;br /&gt;
As with many other things in FG, nasal functions can live in many different places.  Here, however, we're going to create a &amp;quot;Systems&amp;quot; directory under the Main fokker50 directory.  Later, other files might be added to this directory; an electrical system, functions to control other cockpit indicators, etc.&lt;br /&gt;
&lt;br /&gt;
Within that new fokker50/Systems directory then, create an empty plain text file, we'll call it &amp;quot;degftodegc.nas&amp;quot;.  Note that many different functions can live in the same .nas file; this could be renamed to something more generic later if other similar functions are added to it in time.&lt;br /&gt;
&lt;br /&gt;
It's always nice to start with a helpful comment at the top of the file;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Converts degF to degC&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, open our function;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;convertTemp = func{&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What we need to do first is to read in the engine temperature (in degF) from the relevant place in the property tree.  We'll create a local variable for that;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  var degF = getprop(&amp;quot;engines/engine[0]/egt_degf&amp;quot;);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next, we need to do the actual conversion process.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  var degC = (degF - 32) * 5/9;&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
That seems pretty self-explanatory (but note the trailing semicolon at the end of each line of the function - easy to forget!)&lt;br /&gt;
&lt;br /&gt;
Now that we have a variable in our script containing the temperature in degreesC, we will want to write it into a suitable place in the property tree to allow our instruments to make use of it;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;  setprop(&amp;quot;engines/engine[0]/egt-degc&amp;quot;, degC);&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This property didn't exist before, but will be created and the value held in our &amp;quot;degC&amp;quot; variable will be written there.  Now that our script seems quite complete we can close the function with a closing curly brace&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;}&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajmacleod</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Howto:Write_simple_scripts_in_Nasal&amp;diff=3699</id>
		<title>Howto:Write simple scripts in Nasal</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Howto:Write_simple_scripts_in_Nasal&amp;diff=3699"/>
		<updated>2007-08-22T10:14:08Z</updated>

		<summary type="html">&lt;p&gt;Ajmacleod: begin the tutorial&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Introduction:'''&lt;br /&gt;
Nasal is a scripting language available in FlightGear which opens up a world of possibilities for aircraft modellers.  Here, as an example, we will create a script to convert engine temperatures from degF to degC, as required by the Fokker50 instruments.&lt;br /&gt;
&lt;br /&gt;
'''Creating the nasal file:'''&lt;br /&gt;
As with many other things in FG, nasal functions can live in many different places.  Here, however, we're going to create a &amp;quot;Systems&amp;quot; directory under the Main fokker50 directory.  Later, other files might be added to this directory; an electrical system, functions to control other cockpit indicators, etc.&lt;br /&gt;
&lt;br /&gt;
Within that new fokker50/Systems directory then, create an empty plain text file, we'll call it &amp;quot;degftodegc.nas&amp;quot;.  Note that many different functions can live in the same .nas file; this could be renamed to something more generic later if other similar functions are added to it in time.&lt;br /&gt;
&lt;br /&gt;
Now, as always add a helpful comment at the top of the file;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;# Converts degF to degC&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajmacleod</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Main_Page&amp;diff=3698</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Main_Page&amp;diff=3698"/>
		<updated>2007-08-22T09:58:35Z</updated>

		<summary type="html">&lt;p&gt;Ajmacleod: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
__NOEDITSECTION__&lt;br /&gt;
'''FlightGear''' Flight Simulator project is an open-source, multi-platform, cooperative flight simulator development project. Source code for the entire project is available ([http://cvs.flightgear.org/cgi-bin/viewcvs/viewcvs.cgi/?cvsroot=FlightGear-0.9#dirlist CVS repository]) and licensed under the [http://www.gnu.org/copyleft/gpl.html GNU General Public License]. &lt;br /&gt;
&lt;br /&gt;
The goal of the '''FlightGear''' project is to create a sophisticated flight simulator framework for use in research or academic environments, for the development and pursuit of other interesting flight simulation ideas, and as an end-user application. We are developing a sophisticated, open simulation framework that can be expanded and improved upon by anyone interested in [[Volunteer|contributing]]. &lt;br /&gt;
&lt;br /&gt;
There are many exciting possibilities for an open, free flight sim. We hope that this project will be interesting and useful to many people in many areas.&lt;br /&gt;
&lt;br /&gt;
'''FlightGear''' comes with a set of illustrated documentation, notably&lt;br /&gt;
&amp;quot;The Manual&amp;quot;, which is available as&lt;br /&gt;
[ftp://ftp.de.flightgear.org/pub/fgfs/Docs/getstart.pdf PDF] and&lt;br /&gt;
[http://www.flightgear.org/Docs/getstart/getstart.html HTML]. If you&lt;br /&gt;
prefer to follow the 'bleeding edge' set of FlightGear instructions,&lt;br /&gt;
then the following articles are likely to make you happy. You will&lt;br /&gt;
notice that parts of this Wiki duplicate information that's already&lt;br /&gt;
present in &amp;quot;The Manual&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
{|cellspacing=&amp;quot;10&amp;quot;&lt;br /&gt;
| width=&amp;quot;50%&amp;quot;|&lt;br /&gt;
== User Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Getting Started ===&lt;br /&gt;
* [[ New to FlightGear ]]&lt;br /&gt;
* [[ Why FlightGear ]]&lt;br /&gt;
* [[ Features ]]&lt;br /&gt;
* [[ FAQ ]]&lt;br /&gt;
* [[ Hardware Recommendations ]]&lt;br /&gt;
* [[ Recommended Software ]]&lt;br /&gt;
* [[ Troubleshooting Problems ]]&lt;br /&gt;
* [[ Volunteer ]]&lt;br /&gt;
* [[ Real Life Experience ]]&lt;br /&gt;
&lt;br /&gt;
=== Configuring Flightgear ===&lt;br /&gt;
* [[ Command Line Parameters ]]&lt;br /&gt;
* [[ Installing Scenery ]]&lt;br /&gt;
* [[ Improving Framerates ]]&lt;br /&gt;
* [[ Multiplayer Howto ]]&lt;br /&gt;
* [[ Linux software audio mixing with FlightGear ]]&lt;br /&gt;
&lt;br /&gt;
=== Using Flightgear ===&lt;br /&gt;
* [[Aircraft]]&lt;br /&gt;
* [[ Suggested Flights ]]&lt;br /&gt;
* [[ Starting in the Air ]]&lt;br /&gt;
* [[ Instant Replay ]]&lt;br /&gt;
* [[ Preset Properties ]]&lt;br /&gt;
* [[ Realism ]]&lt;br /&gt;
* [[ Flying the Helicopter ]]&lt;br /&gt;
* [[ Doing aerotow over the net ]]&lt;br /&gt;
&lt;br /&gt;
=== Interactive Scenarios ===&lt;br /&gt;
* [[ Carrier Howto ]]&lt;br /&gt;
* [[ Air-Air Refueling Howto ]]&lt;br /&gt;
* [[ AI Systems ]]&lt;br /&gt;
* [[ Interactive Traffic ]]&lt;br /&gt;
* [[ Soaring ]]&lt;br /&gt;
&lt;br /&gt;
=== Flying Resources ===&lt;br /&gt;
* [[ Definitions Acronyms ]]&lt;br /&gt;
* [[ Getting IFR Charts ]]&lt;br /&gt;
* [[ Understanding Altitude ]]&lt;br /&gt;
* [[ Understanding Navigation ]]&lt;br /&gt;
* [[ Understanding Propeller Torque and P-Factor ]]&lt;br /&gt;
* [[ Understanding Aerodynamics ]]&lt;br /&gt;
* [[ Communications ]]&lt;br /&gt;
* [[ Weather ]]&lt;br /&gt;
* [[ Avionics and Instruments ]] &lt;br /&gt;
* [http://www.wingfiles.com/ Everything you need ]&lt;br /&gt;
* [http://www.faa.gov/library/manuals/ FAA Handbooks &amp;amp; Manuals]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
== Developer Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Compiling  ===&lt;br /&gt;
* [[ Building Flightgear ]]&lt;br /&gt;
* [[ Building Terragear ]]&lt;br /&gt;
* [[ OpenSceneGraph ]]&lt;br /&gt;
* [[ Building FlightGear Launch Control ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Contributing ===&lt;br /&gt;
* [[ Submitting Patches ]] &lt;br /&gt;
* [[ Code Cleanup ]] &lt;br /&gt;
* [[ Development Resources ]]&lt;br /&gt;
* [[ Extension Support ]]&lt;br /&gt;
* [[ Technical Reports ]]&lt;br /&gt;
* [[ Changes since 0.9.10 ]]&lt;br /&gt;
&lt;br /&gt;
=== Code Internals ===&lt;br /&gt;
* [[ Property Tree ]]&lt;br /&gt;
* [[ Subsystems ]] &lt;br /&gt;
* [[ Commands ]] &lt;br /&gt;
* [[ FDM API ]]&lt;br /&gt;
* [[ Nasal scripting language ]]&lt;br /&gt;
* [[ File Formats ]]&lt;br /&gt;
&lt;br /&gt;
=== Modeling ===&lt;br /&gt;
* [[ Modeling - Getting Started ]]&lt;br /&gt;
* [[ Model Import and Export ]]&lt;br /&gt;
* [[ Modeling Resources ]]&lt;br /&gt;
* [[ Autopilot Tuning Resources ]]&lt;br /&gt;
* [[ Aircraft Information Resources ]]&lt;br /&gt;
* [[ Blender Ground Signs Tutorial]]&lt;br /&gt;
* [[ Normals and Transparency Tutorial ]]&lt;br /&gt;
* [[ Creating instruments for FG ]]&lt;br /&gt;
* [[ Writing simple scripts in &amp;quot;nasal&amp;quot; ]]&lt;br /&gt;
&lt;br /&gt;
=== Todo ===&lt;br /&gt;
* [[ Long Term Goals ]]&lt;br /&gt;
* [[ Bugs ]]&lt;br /&gt;
* [[ FGFS Todo ]]&lt;br /&gt;
* [[:Category:Aircraft TODO]]&lt;br /&gt;
* [[ Feature Requests / Proposals / Ideas ]]&lt;br /&gt;
* [[ FlightGear Expo Checklist ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
* [[ Glass Cockpit Projects ]]&lt;br /&gt;
* [[ Tutorial Resources ]]&lt;br /&gt;
* [[ Copyright Inquiry ]]&lt;br /&gt;
* [http://www.cafepress.com/fgfs_gear FlightGear - Gear] &lt;br /&gt;
* [[Resources]]&lt;br /&gt;
* [[ Sign Specification Proposal ]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ajmacleod</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Howto:Creating_3D_instruments&amp;diff=3678</id>
		<title>Howto:Creating 3D instruments</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Howto:Creating_3D_instruments&amp;diff=3678"/>
		<updated>2007-07-18T21:50:15Z</updated>

		<summary type="html">&lt;p&gt;Ajmacleod: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Introduction:'''&lt;br /&gt;
This tutorial describes the basic process of creating a 3d instrument for use in FlightGear.  For now, we're assuming that you have created the actual 3d model to use and wish to include it in a cockpit and animate it.  As an example, we will be animating the ITT gauge for the Fokker 50.&lt;br /&gt;
&lt;br /&gt;
'''What you need:'''&lt;br /&gt;
You will need; a text editor (even notepad will do, but one that does syntax highlighting might help you spot typos more easily; if you're on Windows, [http://notepad-plus.sourceforge.net/uk/site.htm Notepad++] looks suitable.)&lt;br /&gt;
&lt;br /&gt;
You will also need your 3d modelling package, and of course a copy of FlightGear.&lt;br /&gt;
&lt;br /&gt;
'''Creating the XML file:'''&lt;br /&gt;
The first step is to create an XML file which will load the 3d model and animate it.  There are no hard and fast rules about where these files should live or what they must be called, but we'll follow the fairly standard procedure of calling it itt.xml and placing it in the Models directory.&lt;br /&gt;
&lt;br /&gt;
So, using your favourite text editor, create a file called itt.xml in the Aircraft/fokker50/Models directory (folder).&lt;br /&gt;
&lt;br /&gt;
It should start like this (and please remember that case is ALWAYS important);&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;PropertyList&amp;gt;&lt;br /&gt;
 &amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Everything you will add to this file '''must''' go between the &amp;lt;PropertyList&amp;gt; tags.&lt;br /&gt;
&lt;br /&gt;
Now, our file does nothing useful at this point.  First of all, we want to tell FG to load the 3d model of our instrument.  Add a section under &amp;lt;PropertyList&amp;gt; like this;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;path&amp;gt;itt.ac&amp;lt;/path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is obviously the name of the 3d model file we wish to load.  The model in question looks like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Fokker51_ITT_screenshot1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Adding an animation:'''&lt;br /&gt;
&lt;br /&gt;
As you can see, the main item to animate is the temperature needle, and its name is &amp;quot;needle&amp;quot; (you can animate either ac3d &amp;quot;objects&amp;quot; or complete &amp;quot;groups&amp;quot;).  We will want to use a &amp;quot;rotate&amp;quot; animation (for more details on available animation types, see &amp;quot;model-howto.html&amp;quot; which is provided with FG in the Docs directory.)&lt;br /&gt;
&lt;br /&gt;
So, we add an &amp;lt;animation&amp;gt; section to our XML file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;animation&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;rotate&amp;lt;/type&amp;gt;&lt;br /&gt;
        &amp;lt;object-name&amp;gt;needle&amp;lt;/object-name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, we need to specify a property which will determine the amount of rotation required; in other words, the property that provides the ITT value at any one time.  To find the name of this property, we need to start FlightGear in the usual manner with the correct aircraft (fokker50 in this case).  Once FG has started, open the property browser (file/browse internal properties).  You will see the top level of the property tree.  Click on &amp;quot;engines&amp;quot; and you will see a list of engines; click on the first one (engine) and you will see a long list of properties and their current values.&lt;br /&gt;
&lt;br /&gt;
[[Image:Fokker50_prop_browser_screenshot1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now, we have a slight problem at this stage; the fokker50 was created before JSBSim could model turboprops, and so the ITT property is not available right now.  For the purposes of this tutorial though, we'll just use the exhaust temperature instead; the process is what's important.&lt;br /&gt;
&lt;br /&gt;
So, the next line in our XML file will specify the property to use;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;property&amp;gt;engines/engine/egt_degf&amp;lt;/property&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next we need to specify exactly how much that property moves the needle.  There are several ways to do this, but we'll use a simple interpolation table since these are especially useful in more complicated situations.  The ITT gauge is marked from 0 degC to 1200 degC; since we're having to use a value that's reported in degF for now, we'll just convert those two values.  0 degC is about 32 degF and 1200 degC is about 2192 degF.  Two handy tips here; for Linux/unix users, the &amp;quot;units&amp;quot; program is truly invaluable; for everyone, google has a useful units converter; for example search for &amp;quot;&lt;br /&gt;
1200 degrees celsius in fahrenheit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
On to our table then.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;interpolation&amp;gt;&lt;br /&gt;
            &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;32&amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;0&amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
            &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;2192&amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;230&amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
        &amp;lt;/interpolation&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;ind&amp;gt; entries are what's indicated on the gauge; the &amp;lt;dep&amp;gt; entries determine how many degrees the object will be rotated by.  In this case I found that number by rotating the needle in AC3D from one end of the scale to the other and reading off the rotation value reported (see screenshot)&lt;br /&gt;
&lt;br /&gt;
[[Image:Fokker50_rotation_value.jpg]]&lt;br /&gt;
&lt;br /&gt;
Having configured the type of animation, the controlling property, and specified the effect of that property, we need to describe an axis and centre for the animation.&lt;br /&gt;
&lt;br /&gt;
In this case, the centre is easy, because the needle centre is at the origin of the 3d model.  If you wanted the rotation centre to be somewhere else, you could use your modelling app to obtain these values.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;center&amp;gt;&lt;br /&gt;
            &amp;lt;x-m&amp;gt;0&amp;lt;/x-m&amp;gt;&lt;br /&gt;
            &amp;lt;y-m&amp;gt;0&amp;lt;/y-m&amp;gt;&lt;br /&gt;
            &amp;lt;z-m&amp;gt;0&amp;lt;/z-m&amp;gt;&lt;br /&gt;
        &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The axis is also very simple in this case;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;axis&amp;gt;&lt;br /&gt;
            &amp;lt;x&amp;gt;-1&amp;lt;/x&amp;gt;&lt;br /&gt;
            &amp;lt;y&amp;gt;0&amp;lt;/y&amp;gt;&lt;br /&gt;
            &amp;lt;z&amp;gt;0&amp;lt;/z&amp;gt;&lt;br /&gt;
        &amp;lt;/axis&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The negative sign on the x axis means that the rotation will be clockwise when viewed from the -x direction (i.e. looking &amp;quot;forwards&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
That concludes the rotation animation and so (as always) we need to add a suitable closing tag;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Digital display:'''&lt;br /&gt;
Our itt.xml file, as it stands, should now &amp;quot;work&amp;quot; in flightgear; that is, it will animate the needle object to display exhaust temperature on the first engine, in degC (despite the input property being in degF!)&lt;br /&gt;
&lt;br /&gt;
However, the bottom half of the gauge contains a digital readout of the same information, and we haven't mentioned that yet.  In order to only introduce one new aspect at a time, for the moment I am going to ignore the fact that our input property is in degF and simply display it using the digits; there are several ways we could display degC (or indeed any kind of value) instead, but those are probably best left to another tutorial.&lt;br /&gt;
&lt;br /&gt;
Now, in order to give the illusion of a digital display, we are going to use a slightly less obvious technique than the simple rotation used for the needle.  Our digits are going to come from this texture, freshly borrowed from another model in FlightGear (remember, this is open source software - don't reinvent the wheel unless it's absolutely necessary!).&lt;br /&gt;
&lt;br /&gt;
[[Image:digits.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now, each &amp;quot;digit&amp;quot; in the 3d model is a separate rectangle, and each is mapped to the number zero on that texture.  What we are going to do is use a &amp;quot;textranslate&amp;quot; animation to slide the texture along to the relevant number in each case.  Here's the code for the first digit;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Digital Display --&amp;gt;&lt;br /&gt;
    &amp;lt;animation&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;textranslate&amp;lt;/type&amp;gt;&lt;br /&gt;
        &amp;lt;object-name&amp;gt;digit1&amp;lt;/object-name&amp;gt;&lt;br /&gt;
        &amp;lt;property&amp;gt;engines/engine/egt_degf&amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;factor&amp;gt;0.0001&amp;lt;/factor&amp;gt;&lt;br /&gt;
        &amp;lt;step&amp;gt;1000&amp;lt;/step&amp;gt;&lt;br /&gt;
        &amp;lt;axis&amp;gt;&lt;br /&gt;
            &amp;lt;x&amp;gt;1&amp;lt;/x&amp;gt;&lt;br /&gt;
            &amp;lt;y&amp;gt;0&amp;lt;/y&amp;gt;&lt;br /&gt;
            &amp;lt;z&amp;gt;0&amp;lt;/z&amp;gt;&lt;br /&gt;
        &amp;lt;/axis&amp;gt;&lt;br /&gt;
    &amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As always, if you need more detailed explanations of any of these animations, remember to RTFM which in this case is the model-howto.html referred to previously.&lt;br /&gt;
&lt;br /&gt;
Each subsequent digit is handled in the same way, though with the object-name, factor and step values modified accordingly.&lt;br /&gt;
&lt;br /&gt;
For example, the next digit along, the &amp;quot;hundreds&amp;quot; digit;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;animation&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;textranslate&amp;lt;/type&amp;gt;&lt;br /&gt;
        &amp;lt;object-name&amp;gt;digit2&amp;lt;/object-name&amp;gt;&lt;br /&gt;
        &amp;lt;property&amp;gt;engines/engine/egt_degf&amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;factor&amp;gt;0.001&amp;lt;/factor&amp;gt;&lt;br /&gt;
        &amp;lt;step&amp;gt;100&amp;lt;/step&amp;gt;&lt;br /&gt;
        &amp;lt;axis&amp;gt;&lt;br /&gt;
            &amp;lt;x&amp;gt;1&amp;lt;/x&amp;gt;&lt;br /&gt;
            &amp;lt;y&amp;gt;0&amp;lt;/y&amp;gt;&lt;br /&gt;
            &amp;lt;z&amp;gt;0&amp;lt;/z&amp;gt;&lt;br /&gt;
        &amp;lt;/axis&amp;gt;&lt;br /&gt;
    &amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And so on, for the remaining two.  Now, your itt instrument should display the EGT in degC using the needle, and give a &amp;quot;digital&amp;quot; readout of the same in degF.&lt;br /&gt;
&lt;br /&gt;
'''Level Of Detail:'''&lt;br /&gt;
To prevent objects like this instrument being drawn when the aircraft is actually too far away for them to be seen anyway we use a Level Of Detail section (a &amp;quot;range&amp;quot; &amp;quot;animation&amp;quot;.)  Notice the &amp;lt;pre&amp;gt;&amp;lt;!-- --&amp;gt;&amp;lt;/pre&amp;gt; section; this is a comment, feel free to add them where you need a reminder of what's going on.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;!-- LoD --&amp;gt;&lt;br /&gt;
 &amp;lt;animation&amp;gt;&lt;br /&gt;
   &amp;lt;type&amp;gt;range&amp;lt;/type&amp;gt;&lt;br /&gt;
   &amp;lt;min-m&amp;gt;0&amp;lt;/min-m&amp;gt;&lt;br /&gt;
   &amp;lt;max-m&amp;gt;30&amp;lt;/max-m&amp;gt;&lt;br /&gt;
 &amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, if you've managed to stay with us the whole way through, the file should look something like this one, which you can download and compare with. [[Media:itt.xml]]  Notice that under each new opening xml tag (such as &amp;lt;animation&amp;gt;) the text is indented one more level.  Sensible people(!) use one tab to indent each level, others try to use various numbers of spaces to indent; whatever you use, the single most important thing is to be consistent.  Consistent indentation makes the file much easier to read.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Including the instrument in an aircraft:'''&lt;br /&gt;
&lt;br /&gt;
Now to the exciting bit, actually seeing the fruits of our labour in FlightGear!  &lt;br /&gt;
Including our itt.xml file in the fokker50 is actually an easy step.  The &amp;quot;model&amp;quot; XML file controls the 3d model; this is often called aircraftname-model.xml and nearly always lives in the aircraftname/Models directory.  However, FG is very flexible and in this case, the model XML file is  fokker50/Models/fokker50.xml .  To avoid confusion, it would be preferable for this to be called fokker50-model.xml, and if you're creating one from scratch, please use that convention.&lt;br /&gt;
&lt;br /&gt;
If we open that file in a text editor, it should look quite familiar; you will recognise the way it specifies an ac3d file, and animates the various parts of it.  However, we wish to include an instrument, and that is done very simply.  Below the &amp;lt;offsets&amp;gt; section, add a section like this;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;!-- ITT Gauge --&amp;gt;&lt;br /&gt;
  &amp;lt;model&amp;gt;&lt;br /&gt;
    &amp;lt;path&amp;gt;Aircraft/fokker50/Models/itt.xml&amp;lt;/path&amp;gt;&lt;br /&gt;
    &amp;lt;offsets&amp;gt;&lt;br /&gt;
      &amp;lt;x-m&amp;gt;-8.9088&amp;lt;/x-m&amp;gt;&lt;br /&gt;
      &amp;lt;y-m&amp;gt;-0.0811&amp;lt;/y-m&amp;gt;&lt;br /&gt;
      &amp;lt;z-m&amp;gt;-1.0722&amp;lt;/z-m&amp;gt;&lt;br /&gt;
      &amp;lt;pitch-deg&amp;gt;-10&amp;lt;/pitch-deg&amp;gt;&lt;br /&gt;
    &amp;lt;/offsets&amp;gt;&lt;br /&gt;
  &amp;lt;/model&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Those numbers can be easily obtained from your 3d modelling app; just open the aircraft model and place an object in the correct position, then use the distances here.  The usual FG model coordinate system is used; x=back, y=right, z=up, from the pilot's perspective; the origin is the one in the 3d model (.ac file).  The &amp;quot;pitch&amp;quot; entry is fairly obvious; pitch of zero is a completely vertical instrument, pitch of -90 is one tilted &amp;quot;top edge forwards&amp;quot; to lie flat.&lt;br /&gt;
&lt;br /&gt;
Now, when you start flightgear, you should see your fully-working instrument in all its glory, situated where it ought to be!  If you need to move it later, it's trivial to tweak the numbers above to suit.&lt;/div&gt;</summary>
		<author><name>Ajmacleod</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Howto:Creating_3D_instruments&amp;diff=3677</id>
		<title>Howto:Creating 3D instruments</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Howto:Creating_3D_instruments&amp;diff=3677"/>
		<updated>2007-07-18T21:49:08Z</updated>

		<summary type="html">&lt;p&gt;Ajmacleod: add how to include instrument into aircraft&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Introduction:'''&lt;br /&gt;
This tutorial describes the basic process of creating a 3d instrument for use in FlightGear.  For now, we're assuming that you have created the actual 3d model to use and wish to include it in a cockpit and animate it.  As an example, we will be animating the ITT gauge for the Fokker 50.&lt;br /&gt;
&lt;br /&gt;
'''What you need:'''&lt;br /&gt;
You will need; a text editor (even notepad will do, but one that does syntax highlighting might help you spot typos more easily; if you're on Windows, [http://notepad-plus.sourceforge.net/uk/site.htm Notepad++] looks suitable.)&lt;br /&gt;
&lt;br /&gt;
You will also need your 3d modelling package, and of course a copy of FlightGear.&lt;br /&gt;
&lt;br /&gt;
'''Creating the XML file:'''&lt;br /&gt;
The first step is to create an XML file which will load the 3d model and animate it.  There are no hard and fast rules about where these files should live or what they must be called, but we'll follow the fairly standard procedure of calling it itt.xml and placing it in the Models directory.&lt;br /&gt;
&lt;br /&gt;
So, using your favourite text editor, create a file called itt.xml in the Aircraft/fokker50/Models directory (folder).&lt;br /&gt;
&lt;br /&gt;
It should start like this (and please remember that case is ALWAYS important);&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;PropertyList&amp;gt;&lt;br /&gt;
 &amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Everything you will add to this file '''must''' go between the &amp;lt;PropertyList&amp;gt; tags.&lt;br /&gt;
&lt;br /&gt;
Now, our file does nothing useful at this point.  First of all, we want to tell FG to load the 3d model of our instrument.  Add a section under &amp;lt;PropertyList&amp;gt; like this;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;path&amp;gt;itt.ac&amp;lt;/path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is obviously the name of the 3d model file we wish to load.  The model in question looks like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Fokker51_ITT_screenshot1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Adding an animation:'''&lt;br /&gt;
&lt;br /&gt;
As you can see, the main item to animate is the temperature needle, and its name is &amp;quot;needle&amp;quot; (you can animate either ac3d &amp;quot;objects&amp;quot; or complete &amp;quot;groups&amp;quot;).  We will want to use a &amp;quot;rotate&amp;quot; animation (for more details on available animation types, see &amp;quot;model-howto.html&amp;quot; which is provided with FG in the Docs directory.)&lt;br /&gt;
&lt;br /&gt;
So, we add an &amp;lt;animation&amp;gt; section to our XML file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;animation&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;rotate&amp;lt;/type&amp;gt;&lt;br /&gt;
        &amp;lt;object-name&amp;gt;needle&amp;lt;/object-name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, we need to specify a property which will determine the amount of rotation required; in other words, the property that provides the ITT value at any one time.  To find the name of this property, we need to start FlightGear in the usual manner with the correct aircraft (fokker50 in this case).  Once FG has started, open the property browser (file/browse internal properties).  You will see the top level of the property tree.  Click on &amp;quot;engines&amp;quot; and you will see a list of engines; click on the first one (engine) and you will see a long list of properties and their current values.&lt;br /&gt;
&lt;br /&gt;
[[Image:Fokker50_prop_browser_screenshot1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now, we have a slight problem at this stage; the fokker50 was created before JSBSim could model turboprops, and so the ITT property is not available right now.  For the purposes of this tutorial though, we'll just use the exhaust temperature instead; the process is what's important.&lt;br /&gt;
&lt;br /&gt;
So, the next line in our XML file will specify the property to use;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;property&amp;gt;engines/engine/egt_degf&amp;lt;/property&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next we need to specify exactly how much that property moves the needle.  There are several ways to do this, but we'll use a simple interpolation table since these are especially useful in more complicated situations.  The ITT gauge is marked from 0 degC to 1200 degC; since we're having to use a value that's reported in degF for now, we'll just convert those two values.  0 degC is about 32 degF and 1200 degC is about 2192 degF.  Two handy tips here; for Linux/unix users, the &amp;quot;units&amp;quot; program is truly invaluable; for everyone, google has a useful units converter; for example search for &amp;quot;&lt;br /&gt;
1200 degrees celsius in fahrenheit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
On to our table then.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;interpolation&amp;gt;&lt;br /&gt;
            &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;32&amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;0&amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
            &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;2192&amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;230&amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
        &amp;lt;/interpolation&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;ind&amp;gt; entries are what's indicated on the gauge; the &amp;lt;dep&amp;gt; entries determine how many degrees the object will be rotated by.  In this case I found that number by rotating the needle in AC3D from one end of the scale to the other and reading off the rotation value reported (see screenshot)&lt;br /&gt;
&lt;br /&gt;
[[Image:Fokker50_rotation_value.jpg]]&lt;br /&gt;
&lt;br /&gt;
Having configured the type of animation, the controlling property, and specified the effect of that property, we need to describe an axis and centre for the animation.&lt;br /&gt;
&lt;br /&gt;
In this case, the centre is easy, because the needle centre is at the origin of the 3d model.  If you wanted the rotation centre to be somewhere else, you could use your modelling app to obtain these values.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;center&amp;gt;&lt;br /&gt;
            &amp;lt;x-m&amp;gt;0&amp;lt;/x-m&amp;gt;&lt;br /&gt;
            &amp;lt;y-m&amp;gt;0&amp;lt;/y-m&amp;gt;&lt;br /&gt;
            &amp;lt;z-m&amp;gt;0&amp;lt;/z-m&amp;gt;&lt;br /&gt;
        &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The axis is also very simple in this case;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;axis&amp;gt;&lt;br /&gt;
            &amp;lt;x&amp;gt;-1&amp;lt;/x&amp;gt;&lt;br /&gt;
            &amp;lt;y&amp;gt;0&amp;lt;/y&amp;gt;&lt;br /&gt;
            &amp;lt;z&amp;gt;0&amp;lt;/z&amp;gt;&lt;br /&gt;
        &amp;lt;/axis&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The negative sign on the x axis means that the rotation will be clockwise when viewed from the -x direction (i.e. looking &amp;quot;forwards&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
That concludes the rotation animation and so (as always) we need to add a suitable closing tag;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Digital display:'''&lt;br /&gt;
Our itt.xml file, as it stands, should now &amp;quot;work&amp;quot; in flightgear; that is, it will animate the needle object to display exhaust temperature on the first engine, in degC (despite the input property being in degF!)&lt;br /&gt;
&lt;br /&gt;
However, the bottom half of the gauge contains a digital readout of the same information, and we haven't mentioned that yet.  In order to only introduce one new aspect at a time, for the moment I am going to ignore the fact that our input property is in degF and simply display it using the digits; there are several ways we could display degC (or indeed any kind of value) instead, but those are probably best left to another tutorial.&lt;br /&gt;
&lt;br /&gt;
Now, in order to give the illusion of a digital display, we are going to use a slightly less obvious technique than the simple rotation used for the needle.  Our digits are going to come from this texture, freshly borrowed from another model in FlightGear (remember, this is open source software - don't reinvent the wheel unless it's absolutely necessary!).&lt;br /&gt;
&lt;br /&gt;
[[Image:digits.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now, each &amp;quot;digit&amp;quot; in the 3d model is a separate rectangle, and each is mapped to the number zero on that texture.  What we are going to do is use a &amp;quot;textranslate&amp;quot; animation to slide the texture along to the relevant number in each case.  Here's the code for the first digit;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Digital Display --&amp;gt;&lt;br /&gt;
    &amp;lt;animation&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;textranslate&amp;lt;/type&amp;gt;&lt;br /&gt;
        &amp;lt;object-name&amp;gt;digit1&amp;lt;/object-name&amp;gt;&lt;br /&gt;
        &amp;lt;property&amp;gt;engines/engine/egt_degf&amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;factor&amp;gt;0.0001&amp;lt;/factor&amp;gt;&lt;br /&gt;
        &amp;lt;step&amp;gt;1000&amp;lt;/step&amp;gt;&lt;br /&gt;
        &amp;lt;axis&amp;gt;&lt;br /&gt;
            &amp;lt;x&amp;gt;1&amp;lt;/x&amp;gt;&lt;br /&gt;
            &amp;lt;y&amp;gt;0&amp;lt;/y&amp;gt;&lt;br /&gt;
            &amp;lt;z&amp;gt;0&amp;lt;/z&amp;gt;&lt;br /&gt;
        &amp;lt;/axis&amp;gt;&lt;br /&gt;
    &amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As always, if you need more detailed explanations of any of these animations, remember to RTFM which in this case is the model-howto.html referred to previously.&lt;br /&gt;
&lt;br /&gt;
Each subsequent digit is handled in the same way, though with the object-name, factor and step values modified accordingly.&lt;br /&gt;
&lt;br /&gt;
For example, the next digit along, the &amp;quot;hundreds&amp;quot; digit;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;animation&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;textranslate&amp;lt;/type&amp;gt;&lt;br /&gt;
        &amp;lt;object-name&amp;gt;digit2&amp;lt;/object-name&amp;gt;&lt;br /&gt;
        &amp;lt;property&amp;gt;engines/engine/egt_degf&amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;factor&amp;gt;0.001&amp;lt;/factor&amp;gt;&lt;br /&gt;
        &amp;lt;step&amp;gt;100&amp;lt;/step&amp;gt;&lt;br /&gt;
        &amp;lt;axis&amp;gt;&lt;br /&gt;
            &amp;lt;x&amp;gt;1&amp;lt;/x&amp;gt;&lt;br /&gt;
            &amp;lt;y&amp;gt;0&amp;lt;/y&amp;gt;&lt;br /&gt;
            &amp;lt;z&amp;gt;0&amp;lt;/z&amp;gt;&lt;br /&gt;
        &amp;lt;/axis&amp;gt;&lt;br /&gt;
    &amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And so on, for the remaining two.  Now, your itt instrument should display the EGT in degC using the needle, and give a &amp;quot;digital&amp;quot; readout of the same in degF.&lt;br /&gt;
&lt;br /&gt;
'''Level Of Detail:'''&lt;br /&gt;
To prevent objects like this instrument being drawn when the aircraft is actually too far away for them to be seen anyway we use a Level Of Detail section (a &amp;quot;range&amp;quot; &amp;quot;animation&amp;quot;.)  Notice the &amp;lt;pre&amp;gt;&amp;lt;!-- --&amp;gt;&amp;lt;/pre&amp;gt; section; this is a comment, feel free to add them where you need a reminder of what's going on.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;!-- LoD --&amp;gt;&lt;br /&gt;
 &amp;lt;animation&amp;gt;&lt;br /&gt;
   &amp;lt;type&amp;gt;range&amp;lt;/type&amp;gt;&lt;br /&gt;
   &amp;lt;min-m&amp;gt;0&amp;lt;/min-m&amp;gt;&lt;br /&gt;
   &amp;lt;max-m&amp;gt;30&amp;lt;/max-m&amp;gt;&lt;br /&gt;
 &amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, if you've managed to stay with us the whole way through, the file should look something like this one, which you can download and compare with. [[Media:itt.xml]]  Notice that under each new opening xml tag (such as &amp;lt;animation&amp;gt;) the text is indented one more level.  Sensible people(!) use one tab to indent each level, others try to use various numbers of spaces to indent; whatever you use, the single most important thing is to be consistent.  Consistent indentation makes the file much easier to read.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Including the instrument in an aircraft:'''&lt;br /&gt;
&lt;br /&gt;
Now to the exciting bit, actually seeing the fruits of our labour in FlightGear!  &lt;br /&gt;
Including our itt.xml file in the fokker50 is actually an easy step.  The &amp;quot;model&amp;quot; XML file controls the 3d model; this is often called aircraftname-model.xml and nearly always lives in the aircraftname/Models directory.  However, FG is very flexible and in this case, the model XML file is  fokker50/Models/fokker50.xml .  To avoid confusion, it would be preferable for this to be called fokker50-model.xml, and if you're creating one from scratch, please use that convention.&lt;br /&gt;
&lt;br /&gt;
If we open that file in a text editor, it should look quite familiar; you will recognise the way it specifies an ac3d file, and animates the various parts of it.  However, we wish to include an instrument, and that is done very simply.  Below the &amp;lt;offsets&amp;gt; section, add a section like this;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
  &amp;lt;!-- ITT Gauge --&amp;gt;&lt;br /&gt;
  &amp;lt;model&amp;gt;&lt;br /&gt;
    &amp;lt;offsets&amp;gt;&lt;br /&gt;
      &amp;lt;x-m&amp;gt;-8.9088&amp;lt;/x-m&amp;gt;&lt;br /&gt;
      &amp;lt;y-m&amp;gt;-0.0811&amp;lt;/y-m&amp;gt;&lt;br /&gt;
      &amp;lt;z-m&amp;gt;-1.0722&amp;lt;/z-m&amp;gt;&lt;br /&gt;
      &amp;lt;pitch-deg&amp;gt;-10&amp;lt;/pitch-deg&amp;gt;&lt;br /&gt;
    &amp;lt;/offsets&amp;gt;&lt;br /&gt;
  &amp;lt;/model&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Those numbers can be easily obtained from your 3d modelling app; just open the aircraft model and place an object in the correct position, then use the distances here.  The usual FG model coordinate system is used; x=back, y=right, z=up, from the pilot's perspective; the origin is the one in the 3d model (.ac file).  The &amp;quot;pitch&amp;quot; entry is fairly obvious; pitch of zero is a completely vertical instrument, pitch of -90 is one tilted &amp;quot;top edge forwards&amp;quot; to lie flat.&lt;br /&gt;
&lt;br /&gt;
Now, when you start flightgear, you should see your fully-working instrument in all its glory, situated where it ought to be!  If you need to move it later, it's trivial to tweak the numbers above to suit.&lt;/div&gt;</summary>
		<author><name>Ajmacleod</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Sopwith_Camel&amp;diff=3675</id>
		<title>Sopwith Camel</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Sopwith_Camel&amp;diff=3675"/>
		<updated>2007-07-10T18:31:15Z</updated>

		<summary type="html">&lt;p&gt;Ajmacleod: /* Development status/Issues/Todo */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Alias for sopwithCamel-v1-nl-uiuc sopwithCamel-v1-nl-uiuc&lt;br /&gt;
&lt;br /&gt;
== Development status/Issues/Todo ==&lt;br /&gt;
&lt;br /&gt;
== External links ==&lt;br /&gt;
== Related content ==&lt;br /&gt;
=== Related lists ===&lt;br /&gt;
* [[Aircraft]]&lt;br /&gt;
* [[Aircraft Todo]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Aircraft]]&lt;br /&gt;
[[Category:Civilian aircraft]]&lt;br /&gt;
[[Category:Aircraft TODO]]&lt;/div&gt;</summary>
		<author><name>Ajmacleod</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Howto:Creating_3D_instruments&amp;diff=3627</id>
		<title>Howto:Creating 3D instruments</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Howto:Creating_3D_instruments&amp;diff=3627"/>
		<updated>2007-07-05T11:12:02Z</updated>

		<summary type="html">&lt;p&gt;Ajmacleod: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Introduction:'''&lt;br /&gt;
This tutorial describes the basic process of creating a 3d instrument for use in FlightGear.  For now, we're assuming that you have created the actual 3d model to use and wish to include it in a cockpit and animate it.  As an example, we will be animating the ITT gauge for the Fokker 50.&lt;br /&gt;
&lt;br /&gt;
'''What you need:'''&lt;br /&gt;
You will need; a text editor (even notepad will do, but one that does syntax highlighting might help you spot typos more easily; if you're on Windows, [http://notepad-plus.sourceforge.net/uk/site.htm Notepad++] looks suitable.)&lt;br /&gt;
&lt;br /&gt;
You will also need your 3d modelling package, and of course a copy of FlightGear.&lt;br /&gt;
&lt;br /&gt;
'''Creating the XML file:'''&lt;br /&gt;
The first step is to create an XML file which will load the 3d model and animate it.  There are no hard and fast rules about where these files should live or what they must be called, but we'll follow the fairly standard procedure of calling it itt.xml and placing it in the Models directory.&lt;br /&gt;
&lt;br /&gt;
So, using your favourite text editor, create a file called itt.xml in the Aircraft/fokker50/Models directory (folder).&lt;br /&gt;
&lt;br /&gt;
It should start like this (and please remember that case is ALWAYS important);&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;PropertyList&amp;gt;&lt;br /&gt;
 &amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Everything you will add to this file '''must''' go between the &amp;lt;PropertyList&amp;gt; tags.&lt;br /&gt;
&lt;br /&gt;
Now, our file does nothing useful at this point.  First of all, we want to tell FG to load the 3d model of our instrument.  Add a section under &amp;lt;PropertyList&amp;gt; like this;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;path&amp;gt;itt.ac&amp;lt;/path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is obviously the name of the 3d model file we wish to load.  The model in question looks like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Fokker51_ITT_screenshot1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Adding an animation:'''&lt;br /&gt;
&lt;br /&gt;
As you can see, the main item to animate is the temperature needle, and its name is &amp;quot;needle&amp;quot; (you can animate either ac3d &amp;quot;objects&amp;quot; or complete &amp;quot;groups&amp;quot;).  We will want to use a &amp;quot;rotate&amp;quot; animation (for more details on available animation types, see &amp;quot;model-howto.html&amp;quot; which is provided with FG in the Docs directory.)&lt;br /&gt;
&lt;br /&gt;
So, we add an &amp;lt;animation&amp;gt; section to our XML file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;animation&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;rotate&amp;lt;/type&amp;gt;&lt;br /&gt;
        &amp;lt;object-name&amp;gt;needle&amp;lt;/object-name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, we need to specify a property which will determine the amount of rotation required; in other words, the property that provides the ITT value at any one time.  To find the name of this property, we need to start FlightGear in the usual manner with the correct aircraft (fokker50 in this case).  Once FG has started, open the property browser (file/browse internal properties).  You will see the top level of the property tree.  Click on &amp;quot;engines&amp;quot; and you will see a list of engines; click on the first one (engine) and you will see a long list of properties and their current values.&lt;br /&gt;
&lt;br /&gt;
[[Image:Fokker50_prop_browser_screenshot1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now, we have a slight problem at this stage; the fokker50 was created before JSBSim could model turboprops, and so the ITT property is not available right now.  For the purposes of this tutorial though, we'll just use the exhaust temperature instead; the process is what's important.&lt;br /&gt;
&lt;br /&gt;
So, the next line in our XML file will specify the property to use;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;property&amp;gt;engines/engine/egt_degf&amp;lt;/property&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next we need to specify exactly how much that property moves the needle.  There are several ways to do this, but we'll use a simple interpolation table since these are especially useful in more complicated situations.  The ITT gauge is marked from 0 degC to 1200 degC; since we're having to use a value that's reported in degF for now, we'll just convert those two values.  0 degC is about 32 degF and 1200 degC is about 2192 degF.  Two handy tips here; for Linux/unix users, the &amp;quot;units&amp;quot; program is truly invaluable; for everyone, google has a useful units converter; for example search for &amp;quot;&lt;br /&gt;
1200 degrees celsius in fahrenheit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
On to our table then.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;interpolation&amp;gt;&lt;br /&gt;
            &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;32&amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;0&amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
            &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;2192&amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;230&amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
        &amp;lt;/interpolation&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;ind&amp;gt; entries are what's indicated on the gauge; the &amp;lt;dep&amp;gt; entries determine how many degrees the object will be rotated by.  In this case I found that number by rotating the needle in AC3D from one end of the scale to the other and reading off the rotation value reported (see screenshot)&lt;br /&gt;
&lt;br /&gt;
[[Image:Fokker50_rotation_value.jpg]]&lt;br /&gt;
&lt;br /&gt;
Having configured the type of animation, the controlling property, and specified the effect of that property, we need to describe an axis and centre for the animation.&lt;br /&gt;
&lt;br /&gt;
In this case, the centre is easy, because the needle centre is at the origin of the 3d model.  If you wanted the rotation centre to be somewhere else, you could use your modelling app to obtain these values.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;center&amp;gt;&lt;br /&gt;
            &amp;lt;x-m&amp;gt;0&amp;lt;/x-m&amp;gt;&lt;br /&gt;
            &amp;lt;y-m&amp;gt;0&amp;lt;/y-m&amp;gt;&lt;br /&gt;
            &amp;lt;z-m&amp;gt;0&amp;lt;/z-m&amp;gt;&lt;br /&gt;
        &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The axis is also very simple in this case;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;axis&amp;gt;&lt;br /&gt;
            &amp;lt;x&amp;gt;-1&amp;lt;/x&amp;gt;&lt;br /&gt;
            &amp;lt;y&amp;gt;0&amp;lt;/y&amp;gt;&lt;br /&gt;
            &amp;lt;z&amp;gt;0&amp;lt;/z&amp;gt;&lt;br /&gt;
        &amp;lt;/axis&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The negative sign on the x axis means that the rotation will be clockwise when viewed from the -x direction (i.e. looking &amp;quot;forwards&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
That concludes the rotation animation and so (as always) we need to add a suitable closing tag;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Digital display:'''&lt;br /&gt;
Our itt.xml file, as it stands, should now &amp;quot;work&amp;quot; in flightgear; that is, it will animate the needle object to display exhaust temperature on the first engine, in degC (despite the input property being in degF!)&lt;br /&gt;
&lt;br /&gt;
However, the bottom half of the gauge contains a digital readout of the same information, and we haven't mentioned that yet.  In order to only introduce one new aspect at a time, for the moment I am going to ignore the fact that our input property is in degF and simply display it using the digits; there are several ways we could display degC (or indeed any kind of value) instead, but those are probably best left to another tutorial.&lt;br /&gt;
&lt;br /&gt;
Now, in order to give the illusion of a digital display, we are going to use a slightly less obvious technique than the simple rotation used for the needle.  Our digits are going to come from this texture, freshly borrowed from another model in FlightGear (remember, this is open source software - don't reinvent the wheel unless it's absolutely necessary!).&lt;br /&gt;
&lt;br /&gt;
[[Image:digits.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now, each &amp;quot;digit&amp;quot; in the 3d model is a separate rectangle, and each is mapped to the number zero on that texture.  What we are going to do is use a &amp;quot;textranslate&amp;quot; animation to slide the texture along to the relevant number in each case.  Here's the code for the first digit;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Digital Display --&amp;gt;&lt;br /&gt;
    &amp;lt;animation&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;textranslate&amp;lt;/type&amp;gt;&lt;br /&gt;
        &amp;lt;object-name&amp;gt;digit1&amp;lt;/object-name&amp;gt;&lt;br /&gt;
        &amp;lt;property&amp;gt;engines/engine/egt_degf&amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;factor&amp;gt;0.0001&amp;lt;/factor&amp;gt;&lt;br /&gt;
        &amp;lt;step&amp;gt;1000&amp;lt;/step&amp;gt;&lt;br /&gt;
        &amp;lt;axis&amp;gt;&lt;br /&gt;
            &amp;lt;x&amp;gt;1&amp;lt;/x&amp;gt;&lt;br /&gt;
            &amp;lt;y&amp;gt;0&amp;lt;/y&amp;gt;&lt;br /&gt;
            &amp;lt;z&amp;gt;0&amp;lt;/z&amp;gt;&lt;br /&gt;
        &amp;lt;/axis&amp;gt;&lt;br /&gt;
    &amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As always, if you need more detailed explanations of any of these animations, remember to RTFM which in this case is the model-howto.html referred to previously.&lt;br /&gt;
&lt;br /&gt;
Each subsequent digit is handled in the same way, though with the object-name, factor and step values modified accordingly.&lt;br /&gt;
&lt;br /&gt;
For example, the next digit along, the &amp;quot;hundreds&amp;quot; digit;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;animation&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;textranslate&amp;lt;/type&amp;gt;&lt;br /&gt;
        &amp;lt;object-name&amp;gt;digit2&amp;lt;/object-name&amp;gt;&lt;br /&gt;
        &amp;lt;property&amp;gt;engines/engine/egt_degf&amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;factor&amp;gt;0.001&amp;lt;/factor&amp;gt;&lt;br /&gt;
        &amp;lt;step&amp;gt;100&amp;lt;/step&amp;gt;&lt;br /&gt;
        &amp;lt;axis&amp;gt;&lt;br /&gt;
            &amp;lt;x&amp;gt;1&amp;lt;/x&amp;gt;&lt;br /&gt;
            &amp;lt;y&amp;gt;0&amp;lt;/y&amp;gt;&lt;br /&gt;
            &amp;lt;z&amp;gt;0&amp;lt;/z&amp;gt;&lt;br /&gt;
        &amp;lt;/axis&amp;gt;&lt;br /&gt;
    &amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And so on, for the remaining two.  Now, your itt instrument should display the EGT in degC using the needle, and give a &amp;quot;digital&amp;quot; readout of the same in degF.&lt;br /&gt;
&lt;br /&gt;
'''Level Of Detail:'''&lt;br /&gt;
To prevent objects like this instrument being drawn when the aircraft is actually too far away for them to be seen anyway we use a Level Of Detail section (a &amp;quot;range&amp;quot; &amp;quot;animation&amp;quot;.)  Notice the &amp;lt;pre&amp;gt;&amp;lt;!-- --&amp;gt;&amp;lt;/pre&amp;gt; section; this is a comment, feel free to add them where you need a reminder of what's going on.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;!-- LoD --&amp;gt;&lt;br /&gt;
 &amp;lt;animation&amp;gt;&lt;br /&gt;
   &amp;lt;type&amp;gt;range&amp;lt;/type&amp;gt;&lt;br /&gt;
   &amp;lt;min-m&amp;gt;0&amp;lt;/min-m&amp;gt;&lt;br /&gt;
   &amp;lt;max-m&amp;gt;30&amp;lt;/max-m&amp;gt;&lt;br /&gt;
 &amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, if you've managed to stay with us the whole way through, the file should look something like this one, which you can download and compare with. [[Media:itt.xml]]  Notice that under each new opening xml tag (such as &amp;lt;animation&amp;gt;) the text is indented one more level.  Sensible people(!) use one tab to indent each level, others try to use various numbers of spaces to indent; whatever you use, the single most important thing is to be consistent.  Consistent indentation makes the file much easier to read.&lt;/div&gt;</summary>
		<author><name>Ajmacleod</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Howto:Creating_3D_instruments&amp;diff=3626</id>
		<title>Howto:Creating 3D instruments</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Howto:Creating_3D_instruments&amp;diff=3626"/>
		<updated>2007-07-05T11:10:42Z</updated>

		<summary type="html">&lt;p&gt;Ajmacleod: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Introduction:'''&lt;br /&gt;
This tutorial describes the basic process of creating a 3d instrument for use in FlightGear.  For now, we're assuming that you have created the actual 3d model to use and wish to include it in a cockpit and animate it.  As an example, we will be animating the ITT gauge for the Fokker 50.&lt;br /&gt;
&lt;br /&gt;
'''What you need:'''&lt;br /&gt;
You will need; a text editor (even notepad will do, but one that does syntax highlighting might help you spot typos more easily; if you're on Windows, [http://notepad-plus.sourceforge.net/uk/site.htm Notepad++] looks suitable.)&lt;br /&gt;
&lt;br /&gt;
You will also need your 3d modelling package, and of course a copy of FlightGear.&lt;br /&gt;
&lt;br /&gt;
'''Creating the XML file:'''&lt;br /&gt;
The first step is to create an XML file which will load the 3d model and animate it.  There are no hard and fast rules about where these files should live or what they must be called, but we'll follow the fairly standard procedure of calling it itt.xml and placing it in the Models directory.&lt;br /&gt;
&lt;br /&gt;
So, using your favourite text editor, create a file called itt.xml in the Aircraft/fokker50/Models directory (folder).&lt;br /&gt;
&lt;br /&gt;
It should start like this (and please remember that case is ALWAYS important);&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;PropertyList&amp;gt;&lt;br /&gt;
 &amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Everything you will add to this file must go between the &amp;lt;PropertyList&amp;gt; tags.&lt;br /&gt;
&lt;br /&gt;
Now, our file does nothing useful at this point.  First of all, we want to tell FG to load the 3d model of our instrument.  Add a section under &amp;lt;PropertyList&amp;gt; like this;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;path&amp;gt;itt.ac&amp;lt;/path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is obviously the name of the 3d model file we wish to load.  The model in question looks like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Fokker51_ITT_screenshot1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Adding an animation:'''&lt;br /&gt;
&lt;br /&gt;
As you can see, the main item to animate is the temperature needle, and its name is &amp;quot;needle&amp;quot; (you can animate either ac3d &amp;quot;objects&amp;quot; or complete &amp;quot;groups&amp;quot;).  We will want to use a &amp;quot;rotate&amp;quot; animation (for more details on available animation types, see &amp;quot;model-howto.html&amp;quot; which is provided with FG in the Docs directory.)&lt;br /&gt;
&lt;br /&gt;
So, we add an &amp;lt;animation&amp;gt; section to our XML file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;animation&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;rotate&amp;lt;/type&amp;gt;&lt;br /&gt;
        &amp;lt;object-name&amp;gt;needle&amp;lt;/object-name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, we need to specify a property which will determine the amount of rotation required; in other words, the property that provides the ITT value at any one time.  To find the name of this property, we need to start FlightGear in the usual manner with the correct aircraft (fokker50 in this case).  Once FG has started, open the property browser (file/browse internal properties).  You will see the top level of the property tree.  Click on &amp;quot;engines&amp;quot; and you will see a list of engines; click on the first one (engine) and you will see a long list of properties and their current values.&lt;br /&gt;
&lt;br /&gt;
[[Image:Fokker50_prop_browser_screenshot1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now, we have a slight problem at this stage; the fokker50 was created before JSBSim could model turboprops, and so the ITT property is not available right now.  For the purposes of this tutorial though, we'll just use the exhaust temperature instead; the process is what's important.&lt;br /&gt;
&lt;br /&gt;
So, the next line in our XML file will specify the property to use;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;property&amp;gt;engines/engine/egt_degf&amp;lt;/property&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next we need to specify exactly how much that property moves the needle.  There are several ways to do this, but we'll use a simple interpolation table since these are especially useful in more complicated situations.  The ITT gauge is marked from 0 degC to 1200 degC; since we're having to use a value that's reported in degF for now, we'll just convert those two values.  0 degC is about 32 degF and 1200 degC is about 2192 degF.  Two handy tips here; for Linux/unix users, the &amp;quot;units&amp;quot; program is truly invaluable; for everyone, google has a useful units converter; for example search for &amp;quot;&lt;br /&gt;
1200 degrees celsius in fahrenheit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
On to our table then.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;interpolation&amp;gt;&lt;br /&gt;
            &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;32&amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;0&amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
            &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;2192&amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;230&amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
        &amp;lt;/interpolation&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;ind&amp;gt; entries are what's indicated on the gauge; the &amp;lt;dep&amp;gt; entries determine how many degrees the object will be rotated by.  In this case I found that number by rotating the needle in AC3D from one end of the scale to the other and reading off the rotation value reported (see screenshot)&lt;br /&gt;
&lt;br /&gt;
[[Image:Fokker50_rotation_value.jpg]]&lt;br /&gt;
&lt;br /&gt;
Having configured the type of animation, the controlling property, and specified the effect of that property, we need to describe an axis and centre for the animation.&lt;br /&gt;
&lt;br /&gt;
In this case, the centre is easy, because the needle centre is at the origin of the 3d model.  If you wanted the rotation centre to be somewhere else, you could use your modelling app to obtain these values.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;center&amp;gt;&lt;br /&gt;
            &amp;lt;x-m&amp;gt;0&amp;lt;/x-m&amp;gt;&lt;br /&gt;
            &amp;lt;y-m&amp;gt;0&amp;lt;/y-m&amp;gt;&lt;br /&gt;
            &amp;lt;z-m&amp;gt;0&amp;lt;/z-m&amp;gt;&lt;br /&gt;
        &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The axis is also very simple in this case;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;axis&amp;gt;&lt;br /&gt;
            &amp;lt;x&amp;gt;-1&amp;lt;/x&amp;gt;&lt;br /&gt;
            &amp;lt;y&amp;gt;0&amp;lt;/y&amp;gt;&lt;br /&gt;
            &amp;lt;z&amp;gt;0&amp;lt;/z&amp;gt;&lt;br /&gt;
        &amp;lt;/axis&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The negative sign on the x axis means that the rotation will be clockwise when viewed from the -x direction (i.e. looking &amp;quot;forwards&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
That concludes the rotation animation and so (as always) we need to add a suitable closing tag;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Digital display:'''&lt;br /&gt;
Our itt.xml file, as it stands, should now &amp;quot;work&amp;quot; in flightgear; that is, it will animate the needle object to display exhaust temperature on the first engine, in degC (despite the input property being in degF!)&lt;br /&gt;
&lt;br /&gt;
However, the bottom half of the gauge contains a digital readout of the same information, and we haven't mentioned that yet.  In order to only introduce one new aspect at a time, for the moment I am going to ignore the fact that our input property is in degF and simply display it using the digits; there are several ways we could display degC (or indeed any kind of value) instead, but those are probably best left to another tutorial.&lt;br /&gt;
&lt;br /&gt;
Now, in order to give the illusion of a digital display, we are going to use a slightly less obvious technique than the simple rotation used for the needle.  Our digits are going to come from this texture, freshly borrowed from another model in FlightGear (remember, this is open source software - don't reinvent the wheel unless it's absolutely necessary!).&lt;br /&gt;
&lt;br /&gt;
[[Image:digits.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now, each &amp;quot;digit&amp;quot; in the 3d model is a separate rectangle, and each is mapped to the number zero on that texture.  What we are going to do is use a &amp;quot;textranslate&amp;quot; animation to slide the texture along to the relevant number in each case.  Here's the code for the first digit;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Digital Display --&amp;gt;&lt;br /&gt;
    &amp;lt;animation&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;textranslate&amp;lt;/type&amp;gt;&lt;br /&gt;
        &amp;lt;object-name&amp;gt;digit1&amp;lt;/object-name&amp;gt;&lt;br /&gt;
        &amp;lt;property&amp;gt;engines/engine/egt_degf&amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;factor&amp;gt;0.0001&amp;lt;/factor&amp;gt;&lt;br /&gt;
        &amp;lt;step&amp;gt;1000&amp;lt;/step&amp;gt;&lt;br /&gt;
        &amp;lt;axis&amp;gt;&lt;br /&gt;
            &amp;lt;x&amp;gt;1&amp;lt;/x&amp;gt;&lt;br /&gt;
            &amp;lt;y&amp;gt;0&amp;lt;/y&amp;gt;&lt;br /&gt;
            &amp;lt;z&amp;gt;0&amp;lt;/z&amp;gt;&lt;br /&gt;
        &amp;lt;/axis&amp;gt;&lt;br /&gt;
    &amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As always, if you need more detailed explanations of any of these animations, remember to RTFM which in this case is the model-howto.html referred to previously.&lt;br /&gt;
&lt;br /&gt;
Each subsequent digit is handled in the same way, though with the object-name, factor and step values modified accordingly.&lt;br /&gt;
&lt;br /&gt;
For example, the next digit along, the &amp;quot;hundreds&amp;quot; digit;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;animation&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;textranslate&amp;lt;/type&amp;gt;&lt;br /&gt;
        &amp;lt;object-name&amp;gt;digit2&amp;lt;/object-name&amp;gt;&lt;br /&gt;
        &amp;lt;property&amp;gt;engines/engine/egt_degf&amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;factor&amp;gt;0.001&amp;lt;/factor&amp;gt;&lt;br /&gt;
        &amp;lt;step&amp;gt;100&amp;lt;/step&amp;gt;&lt;br /&gt;
        &amp;lt;axis&amp;gt;&lt;br /&gt;
            &amp;lt;x&amp;gt;1&amp;lt;/x&amp;gt;&lt;br /&gt;
            &amp;lt;y&amp;gt;0&amp;lt;/y&amp;gt;&lt;br /&gt;
            &amp;lt;z&amp;gt;0&amp;lt;/z&amp;gt;&lt;br /&gt;
        &amp;lt;/axis&amp;gt;&lt;br /&gt;
    &amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And so on, for the remaining two.  Now, your itt instrument should display the EGT in degC using the needle, and give a &amp;quot;digital&amp;quot; readout of the same in degF.&lt;br /&gt;
&lt;br /&gt;
'''Level Of Detail:'''&lt;br /&gt;
To prevent objects like this instrument being drawn when the aircraft is actually too far away for them to be seen anyway we use a Level Of Detail section (a &amp;quot;range&amp;quot; &amp;quot;animation&amp;quot;.)  Notice the &amp;lt;pre&amp;gt;&amp;lt;!-- --&amp;gt;&amp;lt;/pre&amp;gt; section; this is a comment, feel free to add them where you need a reminder of what's going on.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;!-- LoD --&amp;gt;&lt;br /&gt;
 &amp;lt;animation&amp;gt;&lt;br /&gt;
   &amp;lt;type&amp;gt;range&amp;lt;/type&amp;gt;&lt;br /&gt;
   &amp;lt;min-m&amp;gt;0&amp;lt;/min-m&amp;gt;&lt;br /&gt;
   &amp;lt;max-m&amp;gt;30&amp;lt;/max-m&amp;gt;&lt;br /&gt;
 &amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, if you've managed to stay with us the whole way through, the file should look something like this one, which you can download and compare with. [[Media:itt.xml]]  Notice that under each new opening xml tag (such as &amp;lt;animation&amp;gt;) the text is indented one more level.  Sensible people(!) use one tab to indent each level, others try to use various numbers of spaces to indent; whatever you use, the single most important thing is to be consistent.  Consistent indentation makes the file much easier to read.&lt;/div&gt;</summary>
		<author><name>Ajmacleod</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Howto:Creating_3D_instruments&amp;diff=3625</id>
		<title>Howto:Creating 3D instruments</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Howto:Creating_3D_instruments&amp;diff=3625"/>
		<updated>2007-07-05T11:09:53Z</updated>

		<summary type="html">&lt;p&gt;Ajmacleod: follow my own advice&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Introduction:'''&lt;br /&gt;
This tutorial describes the basic process of creating a 3d instrument for use in FlightGear.  For now, we're assuming that you have created the actual 3d model to use and wish to include it in a cockpit and animate it.  As an example, we will be animating the ITT gauge for the Fokker 50.&lt;br /&gt;
&lt;br /&gt;
'''What you need:'''&lt;br /&gt;
You will need; a text editor (even notepad will do, but one that does syntax highlighting might help you spot typos more easily; if you're on Windows, [http://notepad-plus.sourceforge.net/uk/site.htm Notepad++] looks suitable.&lt;br /&gt;
&lt;br /&gt;
You will also need your 3d modelling package, and of course a copy of FlightGear.&lt;br /&gt;
&lt;br /&gt;
'''Creating the XML file:'''&lt;br /&gt;
The first step is to create an XML file which will load the 3d model and animate it.  There are no hard and fast rules about where these files should live or what they must be called, but we'll follow the fairly standard procedure of calling it itt.xml and placing it in the Models directory.&lt;br /&gt;
&lt;br /&gt;
So, using your favourite text editor, create a file called itt.xml in the Aircraft/fokker50/Models directory (folder).&lt;br /&gt;
&lt;br /&gt;
It should start like this (and please remember that case is ALWAYS important);&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;PropertyList&amp;gt;&lt;br /&gt;
 &amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Everything you will add to this file must go between the &amp;lt;PropertyList&amp;gt; tags.&lt;br /&gt;
&lt;br /&gt;
Now, our file does nothing useful at this point.  First of all, we want to tell FG to load the 3d model of our instrument.  Add a section under &amp;lt;PropertyList&amp;gt; like this;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;path&amp;gt;itt.ac&amp;lt;/path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is obviously the name of the 3d model file we wish to load.  The model in question looks like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Fokker51_ITT_screenshot1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Adding an animation:'''&lt;br /&gt;
&lt;br /&gt;
As you can see, the main item to animate is the temperature needle, and its name is &amp;quot;needle&amp;quot; (you can animate either ac3d &amp;quot;objects&amp;quot; or complete &amp;quot;groups&amp;quot;).  We will want to use a &amp;quot;rotate&amp;quot; animation (for more details on available animation types, see &amp;quot;model-howto.html&amp;quot; which is provided with FG in the Docs directory.)&lt;br /&gt;
&lt;br /&gt;
So, we add an &amp;lt;animation&amp;gt; section to our XML file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;animation&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;rotate&amp;lt;/type&amp;gt;&lt;br /&gt;
        &amp;lt;object-name&amp;gt;needle&amp;lt;/object-name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, we need to specify a property which will determine the amount of rotation required; in other words, the property that provides the ITT value at any one time.  To find the name of this property, we need to start FlightGear in the usual manner with the correct aircraft (fokker50 in this case).  Once FG has started, open the property browser (file/browse internal properties).  You will see the top level of the property tree.  Click on &amp;quot;engines&amp;quot; and you will see a list of engines; click on the first one (engine) and you will see a long list of properties and their current values.&lt;br /&gt;
&lt;br /&gt;
[[Image:Fokker50_prop_browser_screenshot1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now, we have a slight problem at this stage; the fokker50 was created before JSBSim could model turboprops, and so the ITT property is not available right now.  For the purposes of this tutorial though, we'll just use the exhaust temperature instead; the process is what's important.&lt;br /&gt;
&lt;br /&gt;
So, the next line in our XML file will specify the property to use;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;property&amp;gt;engines/engine/egt_degf&amp;lt;/property&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next we need to specify exactly how much that property moves the needle.  There are several ways to do this, but we'll use a simple interpolation table since these are especially useful in more complicated situations.  The ITT gauge is marked from 0 degC to 1200 degC; since we're having to use a value that's reported in degF for now, we'll just convert those two values.  0 degC is about 32 degF and 1200 degC is about 2192 degF.  Two handy tips here; for Linux/unix users, the &amp;quot;units&amp;quot; program is truly invaluable; for everyone, google has a useful units converter; for example search for &amp;quot;&lt;br /&gt;
1200 degrees celsius in fahrenheit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
On to our table then.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;interpolation&amp;gt;&lt;br /&gt;
            &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;32&amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;0&amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
            &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;2192&amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;230&amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
        &amp;lt;/interpolation&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;ind&amp;gt; entries are what's indicated on the gauge; the &amp;lt;dep&amp;gt; entries determine how many degrees the object will be rotated by.  In this case I found that number by rotating the needle in AC3D from one end of the scale to the other and reading off the rotation value reported (see screenshot)&lt;br /&gt;
&lt;br /&gt;
[[Image:Fokker50_rotation_value.jpg]]&lt;br /&gt;
&lt;br /&gt;
Having configured the type of animation, the controlling property, and specified the effect of that property, we need to describe an axis and centre for the animation.&lt;br /&gt;
&lt;br /&gt;
In this case, the centre is easy, because the needle centre is at the origin of the 3d model.  If you wanted the rotation centre to be somewhere else, you could use your modelling app to obtain these values.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;center&amp;gt;&lt;br /&gt;
            &amp;lt;x-m&amp;gt;0&amp;lt;/x-m&amp;gt;&lt;br /&gt;
            &amp;lt;y-m&amp;gt;0&amp;lt;/y-m&amp;gt;&lt;br /&gt;
            &amp;lt;z-m&amp;gt;0&amp;lt;/z-m&amp;gt;&lt;br /&gt;
        &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The axis is also very simple in this case;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
        &amp;lt;axis&amp;gt;&lt;br /&gt;
            &amp;lt;x&amp;gt;-1&amp;lt;/x&amp;gt;&lt;br /&gt;
            &amp;lt;y&amp;gt;0&amp;lt;/y&amp;gt;&lt;br /&gt;
            &amp;lt;z&amp;gt;0&amp;lt;/z&amp;gt;&lt;br /&gt;
        &amp;lt;/axis&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The negative sign on the x axis means that the rotation will be clockwise when viewed from the -x direction (i.e. looking &amp;quot;forwards&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
That concludes the rotation animation and so (as always) we need to add a suitable closing tag;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Digital display:'''&lt;br /&gt;
Our itt.xml file, as it stands, should now &amp;quot;work&amp;quot; in flightgear; that is, it will animate the needle object to display exhaust temperature on the first engine, in degC (despite the input property being in degF!)&lt;br /&gt;
&lt;br /&gt;
However, the bottom half of the gauge contains a digital readout of the same information, and we haven't mentioned that yet.  In order to only introduce one new aspect at a time, for the moment I am going to ignore the fact that our input property is in degF and simply display it using the digits; there are several ways we could display degC (or indeed any kind of value) instead, but those are probably best left to another tutorial.&lt;br /&gt;
&lt;br /&gt;
Now, in order to give the illusion of a digital display, we are going to use a slightly less obvious technique than the simple rotation used for the needle.  Our digits are going to come from this texture, freshly borrowed from another model in FlightGear (remember, this is open source software - don't reinvent the wheel unless it's absolutely necessary!).&lt;br /&gt;
&lt;br /&gt;
[[Image:digits.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now, each &amp;quot;digit&amp;quot; in the 3d model is a separate rectangle, and each is mapped to the number zero on that texture.  What we are going to do is use a &amp;quot;textranslate&amp;quot; animation to slide the texture along to the relevant number in each case.  Here's the code for the first digit;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Digital Display --&amp;gt;&lt;br /&gt;
    &amp;lt;animation&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;textranslate&amp;lt;/type&amp;gt;&lt;br /&gt;
        &amp;lt;object-name&amp;gt;digit1&amp;lt;/object-name&amp;gt;&lt;br /&gt;
        &amp;lt;property&amp;gt;engines/engine/egt_degf&amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;factor&amp;gt;0.0001&amp;lt;/factor&amp;gt;&lt;br /&gt;
        &amp;lt;step&amp;gt;1000&amp;lt;/step&amp;gt;&lt;br /&gt;
        &amp;lt;axis&amp;gt;&lt;br /&gt;
            &amp;lt;x&amp;gt;1&amp;lt;/x&amp;gt;&lt;br /&gt;
            &amp;lt;y&amp;gt;0&amp;lt;/y&amp;gt;&lt;br /&gt;
            &amp;lt;z&amp;gt;0&amp;lt;/z&amp;gt;&lt;br /&gt;
        &amp;lt;/axis&amp;gt;&lt;br /&gt;
    &amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As always, if you need more detailed explanations of any of these animations, remember to RTFM which in this case is the model-howto.html referred to previously.&lt;br /&gt;
&lt;br /&gt;
Each subsequent digit is handled in the same way, though with the object-name, factor and step values modified accordingly.&lt;br /&gt;
&lt;br /&gt;
For example, the next digit along, the &amp;quot;hundreds&amp;quot; digit;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;animation&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;textranslate&amp;lt;/type&amp;gt;&lt;br /&gt;
        &amp;lt;object-name&amp;gt;digit2&amp;lt;/object-name&amp;gt;&lt;br /&gt;
        &amp;lt;property&amp;gt;engines/engine/egt_degf&amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;factor&amp;gt;0.001&amp;lt;/factor&amp;gt;&lt;br /&gt;
        &amp;lt;step&amp;gt;100&amp;lt;/step&amp;gt;&lt;br /&gt;
        &amp;lt;axis&amp;gt;&lt;br /&gt;
            &amp;lt;x&amp;gt;1&amp;lt;/x&amp;gt;&lt;br /&gt;
            &amp;lt;y&amp;gt;0&amp;lt;/y&amp;gt;&lt;br /&gt;
            &amp;lt;z&amp;gt;0&amp;lt;/z&amp;gt;&lt;br /&gt;
        &amp;lt;/axis&amp;gt;&lt;br /&gt;
    &amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And so on, for the remaining two.  Now, your itt instrument should display the EGT in degC using the needle, and give a &amp;quot;digital&amp;quot; readout of the same in degF.&lt;br /&gt;
&lt;br /&gt;
'''Level Of Detail:'''&lt;br /&gt;
To prevent objects like this instrument being drawn when the aircraft is actually too far away for them to be seen anyway we use a Level Of Detail section (a &amp;quot;range&amp;quot; &amp;quot;animation&amp;quot;.)  Notice the &amp;lt;pre&amp;gt;&amp;lt;!-- --&amp;gt;&amp;lt;/pre&amp;gt; section; this is a comment, feel free to add them where you need a reminder of what's going on.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;!-- LoD --&amp;gt;&lt;br /&gt;
 &amp;lt;animation&amp;gt;&lt;br /&gt;
   &amp;lt;type&amp;gt;range&amp;lt;/type&amp;gt;&lt;br /&gt;
   &amp;lt;min-m&amp;gt;0&amp;lt;/min-m&amp;gt;&lt;br /&gt;
   &amp;lt;max-m&amp;gt;30&amp;lt;/max-m&amp;gt;&lt;br /&gt;
 &amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, if you've managed to stay with us the whole way through, the file should look something like this one, which you can download and compare with. [[Media:itt.xml]]  Notice that under each new opening xml tag (such as &amp;lt;animation&amp;gt;) the text is indented one more level.  Sensible people(!) use one tab to indent each level, others try to use various numbers of spaces to indent; whatever you use, the single most important thing is to be consistent.  Consistent indentation makes the file much easier to read.&lt;/div&gt;</summary>
		<author><name>Ajmacleod</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Howto:Creating_3D_instruments&amp;diff=3624</id>
		<title>Howto:Creating 3D instruments</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Howto:Creating_3D_instruments&amp;diff=3624"/>
		<updated>2007-07-05T11:05:43Z</updated>

		<summary type="html">&lt;p&gt;Ajmacleod: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Introduction:'''&lt;br /&gt;
This tutorial describes the basic process of creating a 3d instrument for use in FlightGear.  For now, we're assuming that you have created the actual 3d model to use and wish to include it in a cockpit and animate it.  As an example, we will be animating the ITT gauge for the Fokker 50.&lt;br /&gt;
&lt;br /&gt;
'''What you need:'''&lt;br /&gt;
You will need; a text editor (even notepad will do, but one that does syntax highlighting might help you spot typos more easily; if you're on Windows, [http://notepad-plus.sourceforge.net/uk/site.htm Notepad++] looks suitable.&lt;br /&gt;
&lt;br /&gt;
You will also need your 3d modelling package, and of course a copy of FlightGear.&lt;br /&gt;
&lt;br /&gt;
'''Creating the XML file:'''&lt;br /&gt;
The first step is to create an XML file which will load the 3d model and animate it.  There are no hard and fast rules about where these files should live or what they must be called, but we'll follow the fairly standard procedure of calling it itt.xml and placing it in the Models directory.&lt;br /&gt;
&lt;br /&gt;
So, using your favourite text editor, create a file called itt.xml in the Aircraft/fokker50/Models directory (folder).&lt;br /&gt;
&lt;br /&gt;
It should start like this (and please remember that case is ALWAYS important);&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;PropertyList&amp;gt;&lt;br /&gt;
 &amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Everything you will add to this file must go between the &amp;lt;PropertyList&amp;gt; tags.&lt;br /&gt;
&lt;br /&gt;
Now, our file does nothing useful at this point.  First of all, we want to tell FG to load the 3d model of our instrument.  Add a section under &amp;lt;PropertyList&amp;gt; like this;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;path&amp;gt;itt.ac&amp;lt;/path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is obviously the name of the 3d model file we wish to load.  The model in question looks like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Fokker51_ITT_screenshot1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Adding an animation:'''&lt;br /&gt;
&lt;br /&gt;
As you can see, the main item to animate is the temperature needle, and its name is &amp;quot;needle&amp;quot; (you can animate either ac3d &amp;quot;objects&amp;quot; or complete &amp;quot;groups&amp;quot;).  We will want to use a &amp;quot;rotate&amp;quot; animation (for more details on available animation types, see &amp;quot;model-howto.html&amp;quot; which is provided with FG in the Docs directory.)&lt;br /&gt;
&lt;br /&gt;
So, we add an &amp;lt;animation&amp;gt; section to our XML file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;animation&amp;gt;&lt;br /&gt;
   &amp;lt;type&amp;gt;rotate&amp;lt;/type&amp;gt;&lt;br /&gt;
   &amp;lt;object-name&amp;gt;needle&amp;lt;/object-name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, we need to specify a property which will determine the amount of rotation required; in other words, the property that provides the ITT value at any one time.  To find the name of this property, we need to start FlightGear in the usual manner with the correct aircraft (fokker50 in this case).  Once FG has started, open the property browser (file/browse internal properties).  You will see the top level of the property tree.  Click on &amp;quot;engines&amp;quot; and you will see a list of engines; click on the first one (engine) and you will see a long list of properties and their current values.&lt;br /&gt;
&lt;br /&gt;
[[Image:Fokker50_prop_browser_screenshot1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now, we have a slight problem at this stage; the fokker50 was created before JSBSim could model turboprops, and so the ITT property is not available right now.  For the purposes of this tutorial though, we'll just use the exhaust temperature instead; the process is what's important.&lt;br /&gt;
&lt;br /&gt;
So, the next line in our XML file will specify the property to use;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property&amp;gt;engines/engine/egt_degf&amp;lt;/property&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next we need to specify exactly how much that property moves the needle.  There are several ways to do this, but we'll use a simple interpolation table since these are especially useful in more complicated situations.  The ITT gauge is marked from 0 degC to 1200 degC; since we're having to use a value that's reported in degF for now, we'll just convert those two values.  0 degC is about 32 degF and 1200 degC is about 2192 degF.  Two handy tips here; for Linux/unix users, the &amp;quot;units&amp;quot; program is truly invaluable; for everyone, google has a useful units converter; for example search for &amp;quot;&lt;br /&gt;
1200 degrees celsius in fahrenheit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
On to our table then.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;interpolation&amp;gt;&lt;br /&gt;
   &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;32&amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;0&amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;2192&amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;230&amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
 &amp;lt;/interpolation&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;ind&amp;gt; entries are what's indicated on the gauge; the &amp;lt;dep&amp;gt; entries determine how many degrees the object will be rotated by.  In this case I found that number by rotating the needle in AC3D from one end of the scale to the other and reading off the rotation value reported (see screenshot)&lt;br /&gt;
&lt;br /&gt;
[[Image:Fokker50_rotation_value.jpg]]&lt;br /&gt;
&lt;br /&gt;
Having configured the type of animation, the controlling property, and specified the effect of that property, we need to describe an axis and centre for the animation.&lt;br /&gt;
&lt;br /&gt;
In this case, the centre is easy, because the needle centre is at the origin of the 3d model.  If you wanted the rotation centre to be somewhere else, you could use your modelling app to obtain these values.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;center&amp;gt;&lt;br /&gt;
   &amp;lt;x-m&amp;gt;0&amp;lt;/x-m&amp;gt;&lt;br /&gt;
   &amp;lt;y-m&amp;gt;0&amp;lt;/y-m&amp;gt;&lt;br /&gt;
   &amp;lt;z-m&amp;gt;0&amp;lt;/z-m&amp;gt;&lt;br /&gt;
 &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The axis is also very simple in this case;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;axis&amp;gt;&lt;br /&gt;
   &amp;lt;x&amp;gt;-1&amp;lt;/x&amp;gt;&lt;br /&gt;
   &amp;lt;y&amp;gt;0&amp;lt;/y&amp;gt;&lt;br /&gt;
   &amp;lt;z&amp;gt;0&amp;lt;/z&amp;gt;&lt;br /&gt;
 &amp;lt;/axis&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The negative sign on the x axis means that the rotation will be clockwise when viewed from the -x direction (i.e. looking &amp;quot;forwards&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
That concludes the rotation animation and so (as always) we need to add a suitable closing tag;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;/animation&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Digital display:'''&lt;br /&gt;
Our itt.xml file, as it stands, should now &amp;quot;work&amp;quot; in flightgear; that is, it will animate the needle object to display exhaust temperature on the first engine, in degC (despite the input property being in degF!)&lt;br /&gt;
&lt;br /&gt;
However, the bottom half of the gauge contains a digital readout of the same information, and we haven't mentioned that yet.  In order to only introduce one new aspect at a time, for the moment I am going to ignore the fact that our input property is in degF and simply display it using the digits; there are several ways we could display degC (or indeed any kind of value) instead, but those are probably best left to another tutorial.&lt;br /&gt;
&lt;br /&gt;
Now, in order to give the illusion of a digital display, we are going to use a slightly less obvious technique than the simple rotation used for the needle.  Our digits are going to come from this texture, freshly borrowed from another model in FlightGear (remember, this is open source software - don't reinvent the wheel unless it's absolutely necessary!).&lt;br /&gt;
&lt;br /&gt;
[[Image:digits.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now, each &amp;quot;digit&amp;quot; in the 3d model is a separate rectangle, and each is mapped to the number zero on that texture.  What we are going to do is use a &amp;quot;textranslate&amp;quot; animation to slide the texture along to the relevant number in each case.  Here's the code for the first digit;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Digital Display --&amp;gt;&lt;br /&gt;
    &amp;lt;animation&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;textranslate&amp;lt;/type&amp;gt;&lt;br /&gt;
        &amp;lt;object-name&amp;gt;digit1&amp;lt;/object-name&amp;gt;&lt;br /&gt;
        &amp;lt;property&amp;gt;engines/engine/egt_degf&amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;factor&amp;gt;0.0001&amp;lt;/factor&amp;gt;&lt;br /&gt;
        &amp;lt;step&amp;gt;1000&amp;lt;/step&amp;gt;&lt;br /&gt;
        &amp;lt;axis&amp;gt;&lt;br /&gt;
            &amp;lt;x&amp;gt;1&amp;lt;/x&amp;gt;&lt;br /&gt;
            &amp;lt;y&amp;gt;0&amp;lt;/y&amp;gt;&lt;br /&gt;
            &amp;lt;z&amp;gt;0&amp;lt;/z&amp;gt;&lt;br /&gt;
        &amp;lt;/axis&amp;gt;&lt;br /&gt;
    &amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As always, if you need more detailed explanations of any of these animations, remember to RTFM which in this case is the model-howto.html referred to previously.&lt;br /&gt;
&lt;br /&gt;
Each subsequent digit is handled in the same way, though with the object-name, factor and step values modified accordingly.&lt;br /&gt;
&lt;br /&gt;
For example, the next digit along, the &amp;quot;hundreds&amp;quot; digit;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;animation&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;textranslate&amp;lt;/type&amp;gt;&lt;br /&gt;
        &amp;lt;object-name&amp;gt;digit2&amp;lt;/object-name&amp;gt;&lt;br /&gt;
        &amp;lt;property&amp;gt;engines/engine/egt_degf&amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;factor&amp;gt;0.001&amp;lt;/factor&amp;gt;&lt;br /&gt;
        &amp;lt;step&amp;gt;100&amp;lt;/step&amp;gt;&lt;br /&gt;
        &amp;lt;axis&amp;gt;&lt;br /&gt;
            &amp;lt;x&amp;gt;1&amp;lt;/x&amp;gt;&lt;br /&gt;
            &amp;lt;y&amp;gt;0&amp;lt;/y&amp;gt;&lt;br /&gt;
            &amp;lt;z&amp;gt;0&amp;lt;/z&amp;gt;&lt;br /&gt;
        &amp;lt;/axis&amp;gt;&lt;br /&gt;
    &amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And so on, for the remaining two.  Now, your itt instrument should display the EGT in degC using the needle, and give a &amp;quot;digital&amp;quot; readout of the same in degF.&lt;br /&gt;
&lt;br /&gt;
'''Level Of Detail:'''&lt;br /&gt;
To prevent objects like this instrument being drawn when the aircraft is actually too far away for them to be seen anyway we use a Level Of Detail section (a &amp;quot;range&amp;quot; &amp;quot;animation&amp;quot;.)  Notice the &amp;lt;pre&amp;gt;&amp;lt;!-- --&amp;gt;&amp;lt;/pre&amp;gt; section; this is a comment, feel free to add them where you need a reminder of what's going on.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;!-- LoD --&amp;gt;&lt;br /&gt;
 &amp;lt;animation&amp;gt;&lt;br /&gt;
   &amp;lt;type&amp;gt;range&amp;lt;/type&amp;gt;&lt;br /&gt;
   &amp;lt;min-m&amp;gt;0&amp;lt;/min-m&amp;gt;&lt;br /&gt;
   &amp;lt;max-m&amp;gt;30&amp;lt;/max-m&amp;gt;&lt;br /&gt;
 &amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, if you've managed to stay with us the whole way through, the file should look something like this one, which you can download and compare with. [[Media:itt.xml]]  Notice that under each new opening xml tag (such as &amp;lt;animation&amp;gt;) the text is indented one more level.  Sensible people(!) use one tab to indent each level, others try to use various numbers of spaces to indent; whatever you use, the single most important thing is to be consistent.  Consistent indentation makes the file much easier to read.&lt;/div&gt;</summary>
		<author><name>Ajmacleod</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=File:Itt.xml&amp;diff=3623</id>
		<title>File:Itt.xml</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=File:Itt.xml&amp;diff=3623"/>
		<updated>2007-07-05T10:55:59Z</updated>

		<summary type="html">&lt;p&gt;Ajmacleod: sample instrument xml file&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;sample instrument xml file&lt;/div&gt;</summary>
		<author><name>Ajmacleod</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Howto:Creating_3D_instruments&amp;diff=3622</id>
		<title>Howto:Creating 3D instruments</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Howto:Creating_3D_instruments&amp;diff=3622"/>
		<updated>2007-07-05T10:54:33Z</updated>

		<summary type="html">&lt;p&gt;Ajmacleod: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Introduction:'''&lt;br /&gt;
This tutorial describes the basic process of creating a 3d instrument for use in FlightGear.  For now, we're assuming that you have created the actual 3d model to use and wish to include it in a cockpit and animate it.  As an example, we will be animating the ITT gauge for the Fokker 50.&lt;br /&gt;
&lt;br /&gt;
'''What you need:'''&lt;br /&gt;
You will need; a text editor (even notepad will do, but one that does syntax highlighting might help you spot typos more easily; if you're on Windows, [http://notepad-plus.sourceforge.net/uk/site.htm Notepad++] looks suitable.&lt;br /&gt;
&lt;br /&gt;
You will also need your 3d modelling package, and of course a copy of FlightGear.&lt;br /&gt;
&lt;br /&gt;
'''Creating the XML file:'''&lt;br /&gt;
The first step is to create an XML file which will load the 3d model and animate it.  There are no hard and fast rules about where these files should live or what they must be called, but we'll follow the fairly standard procedure of calling it itt.xml and placing it in the Models directory.&lt;br /&gt;
&lt;br /&gt;
So, using your favourite text editor, create a file called itt.xml in the Aircraft/fokker50/Models directory (folder).&lt;br /&gt;
&lt;br /&gt;
It should start like this (and please remember that case is ALWAYS important);&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;PropertyList&amp;gt;&lt;br /&gt;
 &amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Everything you will add to this file must go between the &amp;lt;PropertyList&amp;gt; tags.&lt;br /&gt;
&lt;br /&gt;
Now, our file does nothing useful at this point.  First of all, we want to tell FG to load the 3d model of our instrument.  Add a section under &amp;lt;PropertyList&amp;gt; like this;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;path&amp;gt;itt.ac&amp;lt;/path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is obviously the name of the 3d model file we wish to load.  The model in question looks like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Fokker51_ITT_screenshot1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Adding an animation:'''&lt;br /&gt;
&lt;br /&gt;
As you can see, the main item to animate is the temperature needle, and its name is &amp;quot;needle&amp;quot; (you can animate either ac3d &amp;quot;objects&amp;quot; or complete &amp;quot;groups&amp;quot;).  We will want to use a &amp;quot;rotate&amp;quot; animation (for more details on available animation types, see &amp;quot;model-howto.html&amp;quot; which is provided with FG in the Docs directory.)&lt;br /&gt;
&lt;br /&gt;
So, we add an &amp;lt;animation&amp;gt; section to our XML file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;animation&amp;gt;&lt;br /&gt;
   &amp;lt;type&amp;gt;rotate&amp;lt;/type&amp;gt;&lt;br /&gt;
   &amp;lt;object-name&amp;gt;needle&amp;lt;/object-name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, we need to specify a property which will determine the amount of rotation required; in other words, the property that provides the ITT value at any one time.  To find the name of this property, we need to start FlightGear in the usual manner with the correct aircraft (fokker50 in this case).  Once FG has started, open the property browser (file/browse internal properties).  You will see the top level of the property tree.  Click on &amp;quot;engines&amp;quot; and you will see a list of engines; click on the first one (engine) and you will see a long list of properties and their current values.&lt;br /&gt;
&lt;br /&gt;
[[Image:Fokker50_prop_browser_screenshot1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now, we have a slight problem at this stage; the fokker50 was created before JSBSim could model turboprops, and so the ITT property is not available right now.  For the purposes of this tutorial though, we'll just use the exhaust temperature instead; the process is what's important.&lt;br /&gt;
&lt;br /&gt;
So, the next line in our XML file will specify the property to use;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property&amp;gt;engines/engine/egt_degf&amp;lt;/property&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next we need to specify exactly how much that property moves the needle.  There are several ways to do this, but we'll use a simple interpolation table since these are especially useful in more complicated situations.  The ITT gauge is marked from 0 degC to 1200 degC; since we're having to use a value that's reported in degF for now, we'll just convert those two values.  0 degC is about 32 degF and 1200 degC is about 2192 degF.  Two handy tips here; for Linux/unix users, the &amp;quot;units&amp;quot; program is truly invaluable; for everyone, google has a useful units converter; for example search for &amp;quot;&lt;br /&gt;
1200 degrees celsius in fahrenheit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
On to our table then.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;interpolation&amp;gt;&lt;br /&gt;
   &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;32&amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;0&amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;2192&amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;230&amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
 &amp;lt;/interpolation&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;ind&amp;gt; entries are what's indicated on the gauge; the &amp;lt;dep&amp;gt; entries determine how many degrees the object will be rotated by.  In this case I found that number by rotating the needle in AC3D from one end of the scale to the other and reading off the rotation value reported (see screenshot)&lt;br /&gt;
&lt;br /&gt;
[[Image:Fokker50_rotation_value.jpg]]&lt;br /&gt;
&lt;br /&gt;
Having configured the type of animation, the controlling property, and specified the effect of that property, we need to describe an axis and centre for the animation.&lt;br /&gt;
&lt;br /&gt;
In this case, the centre is easy, because the needle centre is at the origin of the 3d model.  If you wanted the rotation centre to be somewhere else, you could use your modelling app to obtain these values.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;center&amp;gt;&lt;br /&gt;
   &amp;lt;x-m&amp;gt;0&amp;lt;/x-m&amp;gt;&lt;br /&gt;
   &amp;lt;y-m&amp;gt;0&amp;lt;/y-m&amp;gt;&lt;br /&gt;
   &amp;lt;z-m&amp;gt;0&amp;lt;/z-m&amp;gt;&lt;br /&gt;
 &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The axis is also very simple in this case;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;axis&amp;gt;&lt;br /&gt;
   &amp;lt;x&amp;gt;-1&amp;lt;/x&amp;gt;&lt;br /&gt;
   &amp;lt;y&amp;gt;0&amp;lt;/y&amp;gt;&lt;br /&gt;
   &amp;lt;z&amp;gt;0&amp;lt;/z&amp;gt;&lt;br /&gt;
 &amp;lt;/axis&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The negative sign on the x axis means that the rotation will be clockwise when viewed from the -x direction (i.e. looking &amp;quot;forwards&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
That concludes the rotation animation and so (as always) we need to add a suitable closing tag;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;/animation&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Digital display:'''&lt;br /&gt;
Our itt.xml file, as it stands, should now &amp;quot;work&amp;quot; in flightgear; that is, it will animate the needle object to display exhaust temperature on the first engine, in degC (despite the input property being in degF!)&lt;br /&gt;
&lt;br /&gt;
However, the bottom half of the gauge contains a digital readout of the same information, and we haven't mentioned that yet.  In order to only introduce one new aspect at a time, for the moment I am going to ignore the fact that our input property is in degF and simply display it using the digits; there are several ways we could display degC (or indeed any kind of value) instead, but those are probably best left to another tutorial.&lt;br /&gt;
&lt;br /&gt;
Now, in order to give the illusion of a digital display, we are going to use a slightly less obvious technique than the simple rotation used for the needle.  Our digits are going to come from this texture, freshly borrowed from another model in FlightGear (remember, this is open source software - don't reinvent the wheel unless it's absolutely necessary!).&lt;br /&gt;
&lt;br /&gt;
[[Image:digits.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now, each &amp;quot;digit&amp;quot; in the 3d model is a separate rectangle, and each is mapped to the number zero on that texture.  What we are going to do is use a &amp;quot;textranslate&amp;quot; animation to slide the texture along to the relevant number in each case.  Here's the code for the first digit;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;!-- Digital Display --&amp;gt;&lt;br /&gt;
    &amp;lt;animation&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;textranslate&amp;lt;/type&amp;gt;&lt;br /&gt;
        &amp;lt;object-name&amp;gt;digit1&amp;lt;/object-name&amp;gt;&lt;br /&gt;
        &amp;lt;property&amp;gt;engines/engine/egt_degf&amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;factor&amp;gt;0.0001&amp;lt;/factor&amp;gt;&lt;br /&gt;
        &amp;lt;step&amp;gt;1000&amp;lt;/step&amp;gt;&lt;br /&gt;
        &amp;lt;axis&amp;gt;&lt;br /&gt;
            &amp;lt;x&amp;gt;1&amp;lt;/x&amp;gt;&lt;br /&gt;
            &amp;lt;y&amp;gt;0&amp;lt;/y&amp;gt;&lt;br /&gt;
            &amp;lt;z&amp;gt;0&amp;lt;/z&amp;gt;&lt;br /&gt;
        &amp;lt;/axis&amp;gt;&lt;br /&gt;
    &amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As always, if you need more detailed explanations of any of these animations, remember to RTFM which in this case is the model-howto.html which I've referred to before.&lt;br /&gt;
&lt;br /&gt;
Each subsequent digit is handled in the same way, though with the object-name, factor and step values modified accordingly.&lt;br /&gt;
&lt;br /&gt;
For example, the next digit along, the &amp;quot;hundreds&amp;quot; digit;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;animation&amp;gt;&lt;br /&gt;
        &amp;lt;type&amp;gt;textranslate&amp;lt;/type&amp;gt;&lt;br /&gt;
        &amp;lt;object-name&amp;gt;digit2&amp;lt;/object-name&amp;gt;&lt;br /&gt;
        &amp;lt;property&amp;gt;engines/engine/egt_degf&amp;lt;/property&amp;gt;&lt;br /&gt;
        &amp;lt;factor&amp;gt;0.001&amp;lt;/factor&amp;gt;&lt;br /&gt;
        &amp;lt;step&amp;gt;100&amp;lt;/step&amp;gt;&lt;br /&gt;
        &amp;lt;axis&amp;gt;&lt;br /&gt;
            &amp;lt;x&amp;gt;1&amp;lt;/x&amp;gt;&lt;br /&gt;
            &amp;lt;y&amp;gt;0&amp;lt;/y&amp;gt;&lt;br /&gt;
            &amp;lt;z&amp;gt;0&amp;lt;/z&amp;gt;&lt;br /&gt;
        &amp;lt;/axis&amp;gt;&lt;br /&gt;
    &amp;lt;/animation&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
And so on, for the remaining two.  Now, your itt instrument should display the EGT in degC using the needle, and give a &amp;quot;digital&amp;quot; readout of the same in degF.&lt;br /&gt;
&lt;br /&gt;
The file should look something like this one. [[Media:itt.xml]]&lt;br /&gt;
&lt;br /&gt;
'''Level Of Detail:'''&lt;br /&gt;
To prevent objects like this instrument being drawn when the aircraft is actually too far away for them to be seen anyway we use a Level Of Detail section (a &amp;quot;range&amp;quot; &amp;quot;animation&amp;quot;.)  Notice the &amp;lt;pre&amp;gt;&amp;lt;!-- --&amp;gt;&amp;lt;/pre&amp;gt; section; this is a comment, feel free to add them where you need a reminder of what's going on.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;!-- LoD --&amp;gt;&lt;br /&gt;
 &amp;lt;animation&amp;gt;&lt;br /&gt;
   &amp;lt;type&amp;gt;range&amp;lt;/type&amp;gt;&lt;br /&gt;
   &amp;lt;min-m&amp;gt;0&amp;lt;/min-m&amp;gt;&lt;br /&gt;
   &amp;lt;max-m&amp;gt;30&amp;lt;/max-m&amp;gt;&lt;br /&gt;
 &amp;lt;animation&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajmacleod</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=File:Digits.jpg&amp;diff=3621</id>
		<title>File:Digits.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=File:Digits.jpg&amp;diff=3621"/>
		<updated>2007-07-05T10:42:50Z</updated>

		<summary type="html">&lt;p&gt;Ajmacleod: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ajmacleod</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Howto:Creating_3D_instruments&amp;diff=3620</id>
		<title>Howto:Creating 3D instruments</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Howto:Creating_3D_instruments&amp;diff=3620"/>
		<updated>2007-07-05T10:41:50Z</updated>

		<summary type="html">&lt;p&gt;Ajmacleod: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Introduction:'''&lt;br /&gt;
This tutorial describes the basic process of creating a 3d instrument for use in FlightGear.  For now, we're assuming that you have created the actual 3d model to use and wish to include it in a cockpit and animate it.  As an example, we will be animating the ITT gauge for the Fokker 50.&lt;br /&gt;
&lt;br /&gt;
'''What you need:'''&lt;br /&gt;
You will need; a text editor (even notepad will do, but one that does syntax highlighting might help you spot typos more easily; if you're on Windows, [http://notepad-plus.sourceforge.net/uk/site.htm Notepad++] looks suitable.&lt;br /&gt;
&lt;br /&gt;
You will also need your 3d modelling package, and of course a copy of FlightGear.&lt;br /&gt;
&lt;br /&gt;
'''Creating the XML file:'''&lt;br /&gt;
The first step is to create an XML file which will load the 3d model and animate it.  There are no hard and fast rules about where these files should live or what they must be called, but we'll follow the fairly standard procedure of calling it itt.xml and placing it in the Models directory.&lt;br /&gt;
&lt;br /&gt;
So, using your favourite text editor, create a file called itt.xml in the Aircraft/fokker50/Models directory (folder).&lt;br /&gt;
&lt;br /&gt;
It should start like this (and please remember that case is ALWAYS important);&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;PropertyList&amp;gt;&lt;br /&gt;
 &amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Everything you will add to this file must go between the &amp;lt;PropertyList&amp;gt; tags.&lt;br /&gt;
&lt;br /&gt;
Now, our file does nothing useful at this point.  First of all, we want to tell FG to load the 3d model of our instrument.  Add a section under &amp;lt;PropertyList&amp;gt; like this;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;path&amp;gt;itt.ac&amp;lt;/path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is obviously the name of the 3d model file we wish to load.  The model in question looks like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Fokker51_ITT_screenshot1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Adding an animation:'''&lt;br /&gt;
&lt;br /&gt;
As you can see, the main item to animate is the temperature needle, and its name is &amp;quot;needle&amp;quot; (you can animate either ac3d &amp;quot;objects&amp;quot; or complete &amp;quot;groups&amp;quot;).  We will want to use a &amp;quot;rotate&amp;quot; animation (for more details on available animation types, see &amp;quot;model-howto.html&amp;quot; which is provided with FG in the Docs directory.)&lt;br /&gt;
&lt;br /&gt;
So, we add an &amp;lt;animation&amp;gt; section to our XML file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;animation&amp;gt;&lt;br /&gt;
   &amp;lt;type&amp;gt;rotate&amp;lt;/type&amp;gt;&lt;br /&gt;
   &amp;lt;object-name&amp;gt;needle&amp;lt;/object-name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, we need to specify a property which will determine the amount of rotation required; in other words, the property that provides the ITT value at any one time.  To find the name of this property, we need to start FlightGear in the usual manner with the correct aircraft (fokker50 in this case).  Once FG has started, open the property browser (file/browse internal properties).  You will see the top level of the property tree.  Click on &amp;quot;engines&amp;quot; and you will see a list of engines; click on the first one (engine) and you will see a long list of properties and their current values.&lt;br /&gt;
&lt;br /&gt;
[[Image:Fokker50_prop_browser_screenshot1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now, we have a slight problem at this stage; the fokker50 was created before JSBSim could model turboprops, and so the ITT property is not available right now.  For the purposes of this tutorial though, we'll just use the exhaust temperature instead; the process is what's important.&lt;br /&gt;
&lt;br /&gt;
So, the next line in our XML file will specify the property to use;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property&amp;gt;engines/engine/egt_degf&amp;lt;/property&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next we need to specify exactly how much that property moves the needle.  There are several ways to do this, but we'll use a simple interpolation table since these are especially useful in more complicated situations.  The ITT gauge is marked from 0 degC to 1200 degC; since we're having to use a value that's reported in degF for now, we'll just convert those two values.  0 degC is about 32 degF and 1200 degC is about 2192 degF.  Two handy tips here; for Linux/unix users, the &amp;quot;units&amp;quot; program is truly invaluable; for everyone, google has a useful units converter; for example search for &amp;quot;&lt;br /&gt;
1200 degrees celsius in fahrenheit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
On to our table then.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;interpolation&amp;gt;&lt;br /&gt;
   &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;32&amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;0&amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;2192&amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;230&amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
 &amp;lt;/interpolation&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;ind&amp;gt; entries are what's indicated on the gauge; the &amp;lt;dep&amp;gt; entries determine how many degrees the object will be rotated by.  In this case I found that number by rotating the needle in AC3D from one end of the scale to the other and reading off the rotation value reported (see screenshot)&lt;br /&gt;
&lt;br /&gt;
[[Image:Fokker50_rotation_value.jpg]]&lt;br /&gt;
&lt;br /&gt;
Having configured the type of animation, the controlling property, and specified the effect of that property, we need to describe an axis and centre for the animation.&lt;br /&gt;
&lt;br /&gt;
In this case, the centre is easy, because the needle centre is at the origin of the 3d model.  If you wanted the rotation centre to be somewhere else, you could use your modelling app to obtain these values.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;center&amp;gt;&lt;br /&gt;
   &amp;lt;x-m&amp;gt;0&amp;lt;/x-m&amp;gt;&lt;br /&gt;
   &amp;lt;y-m&amp;gt;0&amp;lt;/y-m&amp;gt;&lt;br /&gt;
   &amp;lt;z-m&amp;gt;0&amp;lt;/z-m&amp;gt;&lt;br /&gt;
 &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The axis is also very simple in this case;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;axis&amp;gt;&lt;br /&gt;
   &amp;lt;x&amp;gt;-1&amp;lt;/x&amp;gt;&lt;br /&gt;
   &amp;lt;y&amp;gt;0&amp;lt;/y&amp;gt;&lt;br /&gt;
   &amp;lt;z&amp;gt;0&amp;lt;/z&amp;gt;&lt;br /&gt;
 &amp;lt;/axis&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The negative sign on the x axis means that the rotation will be clockwise when viewed from the -x direction (i.e. looking &amp;quot;forwards&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
That concludes the rotation animation and so (as always) we need to add a suitable closing tag;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;/animation&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''Digital display:'''&lt;br /&gt;
Our itt.xml file, as it stands, should now &amp;quot;work&amp;quot; in flightgear; that is, it will animate the needle object to display exhaust temperature on the first engine, in degC (despite the input property being in degF!)&lt;br /&gt;
&lt;br /&gt;
However, the bottom half of the gauge contains a digital readout of the same information, and we haven't mentioned that yet.  In order to only introduce one new aspect at a time, for the moment I am going to ignore the fact that our input property is in degF and simply display it using the digits; there are several ways we could display degC (or indeed any kind of value) instead, but those are probably best left to another tutorial.&lt;br /&gt;
&lt;br /&gt;
Now, in order to give the illusion of a digital display, we are going to use a slightly less obvious technique than the simple rotation used for the needle.  Our digits are going to come from this texture, freshly borrowed from another model in FlightGear (remember, this is open source software - don't reinvent the wheel unless it's absolutely necessary!).&lt;br /&gt;
&lt;br /&gt;
[[Image:digits.jpg]]&lt;br /&gt;
&lt;br /&gt;
'''Level Of Detail:'''&lt;br /&gt;
To prevent objects like this instrument being drawn when the aircraft is actually too far away for them to be seen anyway we use a Level Of Detail section (a &amp;quot;range&amp;quot; &amp;quot;animation&amp;quot;.)  Notice the &amp;lt;pre&amp;gt;&amp;lt;!-- --&amp;gt;&amp;lt;/pre&amp;gt; section; this is a comment, feel free to add them where you need a reminder of what's going on.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;!-- LoD --&amp;gt;&lt;br /&gt;
 &amp;lt;animation&amp;gt;&lt;br /&gt;
   &amp;lt;type&amp;gt;range&amp;lt;/type&amp;gt;&lt;br /&gt;
   &amp;lt;min-m&amp;gt;0&amp;lt;/min-m&amp;gt;&lt;br /&gt;
   &amp;lt;max-m&amp;gt;30&amp;lt;/max-m&amp;gt;&lt;br /&gt;
 &amp;lt;animation&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajmacleod</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Howto:Creating_3D_instruments&amp;diff=3619</id>
		<title>Howto:Creating 3D instruments</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Howto:Creating_3D_instruments&amp;diff=3619"/>
		<updated>2007-07-04T18:42:40Z</updated>

		<summary type="html">&lt;p&gt;Ajmacleod: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Introduction:'''&lt;br /&gt;
This tutorial describes the basic process of creating a 3d instrument for use in FlightGear.  For now, we're assuming that you have created the actual 3d model to use and wish to include it in a cockpit and animate it.  As an example, we will be animating the ITT gauge for the Fokker 50.&lt;br /&gt;
&lt;br /&gt;
'''What you need:'''&lt;br /&gt;
You will need; a text editor (even notepad will do, but one that does syntax highlighting might help you spot typos more easily; if you're on Windows, [http://notepad-plus.sourceforge.net/uk/site.htm Notepad++] looks suitable.&lt;br /&gt;
&lt;br /&gt;
You will also need your 3d modelling package, and of course a copy of FlightGear.&lt;br /&gt;
&lt;br /&gt;
'''Creating the XML file:'''&lt;br /&gt;
The first step is to create an XML file which will load the 3d model and animate it.  There are no hard and fast rules about where these files should live or what they must be called, but we'll follow the fairly standard procedure of calling it itt.xml and placing it in the Models directory.&lt;br /&gt;
&lt;br /&gt;
So, using your favourite text editor, create a file called itt.xml in the Aircraft/fokker50/Models directory (folder).&lt;br /&gt;
&lt;br /&gt;
It should start like this (and please remember that case is ALWAYS important);&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;PropertyList&amp;gt;&lt;br /&gt;
 &amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Everything you will add to this file must go between the &amp;lt;PropertyList&amp;gt; tags.&lt;br /&gt;
&lt;br /&gt;
Now, our file does nothing useful at this point.  First of all, we want to tell FG to load the 3d model of our instrument.  Add a section under &amp;lt;PropertyList&amp;gt; like this;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;path&amp;gt;itt.ac&amp;lt;/path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is obviously the name of the 3d model file we wish to load.  The model in question looks like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Fokker51_ITT_screenshot1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Adding an animation:'''&lt;br /&gt;
&lt;br /&gt;
As you can see, the main item to animate is the temperature needle, and its name is &amp;quot;needle&amp;quot; (you can animate either ac3d &amp;quot;objects&amp;quot; or complete &amp;quot;groups&amp;quot;).  We will want to use a &amp;quot;rotate&amp;quot; animation (for more details on available animation types, see &amp;quot;model-howto.html&amp;quot; which is provided with FG in the Docs directory.)&lt;br /&gt;
&lt;br /&gt;
So, we add an &amp;lt;animation&amp;gt; section to our XML file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;animation&amp;gt;&lt;br /&gt;
   &amp;lt;type&amp;gt;rotate&amp;lt;/type&amp;gt;&lt;br /&gt;
   &amp;lt;object-name&amp;gt;needle&amp;lt;/object-name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, we need to specify a property which will determine the amount of rotation required; in other words, the property that provides the ITT value at any one time.  To find the name of this property, we need to start FlightGear in the usual manner with the correct aircraft (fokker50 in this case).  Once FG has started, open the property browser (file/browse internal properties).  You will see the top level of the property tree.  Click on &amp;quot;engines&amp;quot; and you will see a list of engines; click on the first one (engine) and you will see a long list of properties and their current values.&lt;br /&gt;
&lt;br /&gt;
[[Image:Fokker50_prop_browser_screenshot1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now, we have a slight problem at this stage; the fokker50 was created before JSBSim could model turboprops, and so the ITT property is not available right now.  For the purposes of this tutorial though, we'll just use the exhaust temperature instead; the process is what's important.&lt;br /&gt;
&lt;br /&gt;
So, the next line in our XML file will specify the property to use;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property&amp;gt;engines/engine/egt_degf&amp;lt;/property&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next we need to specify exactly how much that property moves the needle.  There are several ways to do this, but we'll use a simple interpolation table since these are especially useful in more complicated situations.  The ITT gauge is marked from 0 degC to 1200 degC; since we're having to use a value that's reported in degF for now, we'll just convert those two values.  0 degC is about 32 degF and 1200 degC is about 2192 degF.  Two handy tips here; for Linux/unix users, the &amp;quot;units&amp;quot; program is truly invaluable; for everyone, google has a useful units converter; for example search for &amp;quot;&lt;br /&gt;
1200 degrees celsius in fahrenheit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
On to our table then.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;interpolation&amp;gt;&lt;br /&gt;
   &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;32&amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;0&amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;2192&amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;230&amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
 &amp;lt;/interpolation&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;ind&amp;gt; entries are what's indicated on the gauge; the &amp;lt;dep&amp;gt; entries determine how many degrees the object will be rotated by.  In this case I found that number by rotating the needle in AC3D from one end of the scale to the other and reading off the rotation value reported (see screenshot)&lt;br /&gt;
&lt;br /&gt;
[[Image:Fokker50_rotation_value.jpg]]&lt;br /&gt;
&lt;br /&gt;
Having configured the type of animation, the controlling property, and specified the effect of that property, we need to describe an axis and centre for the animation.&lt;br /&gt;
&lt;br /&gt;
In this case, the centre is easy, because the needle centre is at the origin of the 3d model.  If you wanted the rotation centre to be somewhere else, you could use your modelling app to obtain these values.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;center&amp;gt;&lt;br /&gt;
   &amp;lt;x-m&amp;gt;0&amp;lt;/x-m&amp;gt;&lt;br /&gt;
   &amp;lt;y-m&amp;gt;0&amp;lt;/y-m&amp;gt;&lt;br /&gt;
   &amp;lt;z-m&amp;gt;0&amp;lt;/z-m&amp;gt;&lt;br /&gt;
 &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The axis is also very simple in this case;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;axis&amp;gt;&lt;br /&gt;
   &amp;lt;x&amp;gt;-1&amp;lt;/x&amp;gt;&lt;br /&gt;
   &amp;lt;y&amp;gt;0&amp;lt;/y&amp;gt;&lt;br /&gt;
   &amp;lt;z&amp;gt;0&amp;lt;/z&amp;gt;&lt;br /&gt;
 &amp;lt;/axis&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The negative sign on the x axis means that the rotation will be clockwise when viewed from the -x direction (i.e. looking &amp;quot;forwards&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
That concludes the rotation animation and so (as always) we need to add a suitable closing tag;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;/animation&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Level of Detail:'''&lt;br /&gt;
To prevent objects like this instrument being drawn when the aircraft is actually too far away for them to be seen anyway we use a Level Of Detail section.  Notice the &amp;lt;pre&amp;gt;&amp;lt;!-- --&amp;gt;&amp;lt;/pre&amp;gt; section; this is a comment, feel free to add them where you need a reminder of what's going on.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;!-- LoD --&amp;gt;&lt;br /&gt;
 &amp;lt;animation&amp;gt;&lt;br /&gt;
   &amp;lt;type&amp;gt;range&amp;lt;/type&amp;gt;&lt;br /&gt;
   &amp;lt;min-m&amp;gt;0&amp;lt;/min-m&amp;gt;&lt;br /&gt;
   &amp;lt;max-m&amp;gt;30&amp;lt;/max-m&amp;gt;&lt;br /&gt;
 &amp;lt;animation&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajmacleod</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Howto:Creating_3D_instruments&amp;diff=3618</id>
		<title>Howto:Creating 3D instruments</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Howto:Creating_3D_instruments&amp;diff=3618"/>
		<updated>2007-07-04T18:40:49Z</updated>

		<summary type="html">&lt;p&gt;Ajmacleod: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Introduction:'''&lt;br /&gt;
This tutorial describes the basic process of creating a 3d instrument for use in FlightGear.  For now, we're assuming that you have created the actual 3d model to use and wish to include it in a cockpit and animate it.  As an example, we will be animating the ITT gauge for the Fokker 50.&lt;br /&gt;
&lt;br /&gt;
'''What you need:'''&lt;br /&gt;
You will need; a text editor (even notepad will do, but one that does syntax highlighting might help you spot typos more easily; if you're on Windows, [http://notepad-plus.sourceforge.net/uk/site.htm Notepad++] looks suitable.&lt;br /&gt;
&lt;br /&gt;
You will also need your 3d modelling package, and of course a copy of FlightGear.&lt;br /&gt;
&lt;br /&gt;
'''Creating the XML file:'''&lt;br /&gt;
The first step is to create an XML file which will load the 3d model and animate it.  There are no hard and fast rules about where these files should live or what they must be called, but we'll follow the fairly standard procedure of calling it itt.xml and placing it in the Models directory.&lt;br /&gt;
&lt;br /&gt;
So, using your favourite text editor, create a file called itt.xml in the Aircraft/fokker50/Models directory (folder).&lt;br /&gt;
&lt;br /&gt;
It should start like this (and please remember that case is ALWAYS important);&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;PropertyList&amp;gt;&lt;br /&gt;
 &amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Everything you will add to this file must go between the &amp;lt;PropertyList&amp;gt; tags.&lt;br /&gt;
&lt;br /&gt;
Now, our file does nothing useful at this point.  First of all, we want to tell FG to load the 3d model of our instrument.  Add a section under &amp;lt;PropertyList&amp;gt; like this;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;path&amp;gt;itt.ac&amp;lt;/path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is obviously the name of the 3d model file we wish to load.  The model in question looks like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Fokker51_ITT_screenshot1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Adding an animation:'''&lt;br /&gt;
&lt;br /&gt;
As you can see, the main item to animate is the temperature needle, and its name is &amp;quot;needle&amp;quot; (you can animate either ac3d &amp;quot;objects&amp;quot; or complete &amp;quot;groups&amp;quot;).  We will want to use a &amp;quot;rotate&amp;quot; animation (for more details on available animation types, see &amp;quot;model-howto.html&amp;quot; which is provided with FG in the Docs directory.)&lt;br /&gt;
&lt;br /&gt;
So, we add an &amp;lt;animation&amp;gt; section to our XML file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;animation&amp;gt;&lt;br /&gt;
   &amp;lt;type&amp;gt;rotate&amp;lt;/type&amp;gt;&lt;br /&gt;
   &amp;lt;object-name&amp;gt;needle&amp;lt;/object-name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, we need to specify a property which will determine the amount of rotation required; in other words, the property that provides the ITT value at any one time.  To find the name of this property, we need to start FlightGear in the usual manner with the correct aircraft (fokker50 in this case).  Once FG has started, open the property browser (file/browse internal properties).  You will see the top level of the property tree.  Click on &amp;quot;engines&amp;quot; and you will see a list of engines; click on the first one (engine) and you will see a long list of properties and their current values.&lt;br /&gt;
&lt;br /&gt;
[[Image:Fokker50_prop_browser_screenshot1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now, we have a slight problem at this stage; the fokker50 was created before JSBSim could model turboprops, and so the ITT property is not available right now.  For the purposes of this tutorial though, we'll just use the exhaust temperature instead; the process is what's important.&lt;br /&gt;
&lt;br /&gt;
So, the next line in our XML file will be specify the property to use;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property&amp;gt;engines/engine/egt_degf&amp;lt;/property&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next we need to specify exactly how much that property moves the needle.  There are several ways to do this, but we'll use a simple interpolation table since these are especially useful in more complicated situations.  The ITT gauge is marked from 0 degC to 1200 degC; since we're having to use a value that's reported in degF for now, we'll just convert those two values.  0 degC is about 32 degF and 1200 degC is about 2192 degF.  Two handy tips here; for Linux/unix users, the &amp;quot;units&amp;quot; program is truly invaluable; for everyone, google has a useful units converter; for example search for &amp;quot;&lt;br /&gt;
1200 degrees celsius in fahrenheit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
On to our table then.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;interpolation&amp;gt;&lt;br /&gt;
   &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;32&amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;0&amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;2192&amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;230&amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
 &amp;lt;/interpolation&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;ind&amp;gt; entries are what's indicated on the gauge; the &amp;lt;dep&amp;gt; entries determine how many degrees the object will be rotated by.  In this case I found that number by rotating the needle in AC3D from one end of the scale to the other and reading off the rotation value reported (see screenshot)&lt;br /&gt;
&lt;br /&gt;
[[Image:Fokker50_rotation_value.jpg]]&lt;br /&gt;
&lt;br /&gt;
Having configured the type of animation, the controlling property, and specified the effect of that property, we need to describe an axis and centre for the animation.&lt;br /&gt;
&lt;br /&gt;
In this case, the centre is easy, because the needle centre is at the origin of the 3d model.  If you wanted the rotation centre to be somewhere else, you could use your modelling app to obtain these values.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;center&amp;gt;&lt;br /&gt;
   &amp;lt;x-m&amp;gt;0&amp;lt;/x-m&amp;gt;&lt;br /&gt;
   &amp;lt;y-m&amp;gt;0&amp;lt;/y-m&amp;gt;&lt;br /&gt;
   &amp;lt;z-m&amp;gt;0&amp;lt;/z-m&amp;gt;&lt;br /&gt;
 &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The axis is also very simple in this case;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;axis&amp;gt;&lt;br /&gt;
   &amp;lt;x&amp;gt;-1&amp;lt;/x&amp;gt;&lt;br /&gt;
   &amp;lt;y&amp;gt;0&amp;lt;/y&amp;gt;&lt;br /&gt;
   &amp;lt;z&amp;gt;0&amp;lt;/z&amp;gt;&lt;br /&gt;
 &amp;lt;/axis&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The negative sign on the x axis means that the rotation will be clockwise when viewed from the -x direction (i.e. looking &amp;quot;forwards&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
That concludes the rotation animation and so (as always) we need to add a suitable closing tag;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;/animation&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Level of Detail:'''&lt;br /&gt;
To prevent objects like this instrument being drawn when the aircraft is actually too far away for them to be seen anyway we use a Level Of Detail section.  Notice the &amp;lt;pre&amp;gt;&amp;lt;!-- --&amp;gt;&amp;lt;/pre&amp;gt; section; this is a comment, feel free to add them where you need a reminder of what's going on.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;!-- LoD --&amp;gt;&lt;br /&gt;
 &amp;lt;animation&amp;gt;&lt;br /&gt;
   &amp;lt;type&amp;gt;range&amp;lt;/type&amp;gt;&lt;br /&gt;
   &amp;lt;min-m&amp;gt;0&amp;lt;/min-m&amp;gt;&lt;br /&gt;
   &amp;lt;max-m&amp;gt;30&amp;lt;/max-m&amp;gt;&lt;br /&gt;
 &amp;lt;animation&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajmacleod</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Howto:Creating_3D_instruments&amp;diff=3617</id>
		<title>Howto:Creating 3D instruments</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Howto:Creating_3D_instruments&amp;diff=3617"/>
		<updated>2007-07-04T15:39:23Z</updated>

		<summary type="html">&lt;p&gt;Ajmacleod: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Introduction:'''&lt;br /&gt;
This tutorial describes the basic process of creating a 3d instrument for use in FlightGear.  For now, we're assuming that you have created the actual 3d model to use and wish to include it in a cockpit and animate it.  As an example, we will be animating the ITT gauge for the Fokker 50.&lt;br /&gt;
&lt;br /&gt;
'''What you need:'''&lt;br /&gt;
You will need; a text editor (even notepad will do, but one that does syntax highlighting might help you spot typos more easily; if you're on Windows, [http://notepad-plus.sourceforge.net/uk/site.htm Notepad++] looks suitable.&lt;br /&gt;
&lt;br /&gt;
You will also need your 3d modelling package, and of course a copy of FlightGear.&lt;br /&gt;
&lt;br /&gt;
'''Creating the XML file:'''&lt;br /&gt;
The first step is to create an XML file which will load the 3d model and animate it.  There are no hard and fast rules about where these files should live or what they must be called, but we'll follow the fairly standard procedure of calling it itt.xml and placing it in the Models directory.&lt;br /&gt;
&lt;br /&gt;
So, using your favourite text editor, create a file called itt.xml in the Aircraft/fokker50/Models directory (folder).&lt;br /&gt;
&lt;br /&gt;
It should start like this (and please remember that case is ALWAYS important);&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;PropertyList&amp;gt;&lt;br /&gt;
 &amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Everything you will add to this file must go between the &amp;lt;PropertyList&amp;gt; tags.&lt;br /&gt;
&lt;br /&gt;
Now, our file does nothing useful at this point.  First of all, we want to tell FG to load the 3d model of our instrument.  Add a section under &amp;lt;PropertyList&amp;gt; like this;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;path&amp;gt;itt.ac&amp;lt;/path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is obviously the name of the 3d model file we wish to load.  The model in question looks like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Fokker51_ITT_screenshot1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Adding an animation:'''&lt;br /&gt;
&lt;br /&gt;
As you can see, the main item to animate is the temperature needle, and its name is &amp;quot;needle&amp;quot; (you can animate either ac3d &amp;quot;objects&amp;quot; or complete &amp;quot;groups&amp;quot;).  We will want to use a &amp;quot;rotate&amp;quot; animation (for more details on available animation types, see &amp;quot;model-howto.html&amp;quot; which is provided with FG in the Docs directory.)&lt;br /&gt;
&lt;br /&gt;
So, we add an &amp;lt;animation&amp;gt; section to our XML file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;animation&amp;gt;&lt;br /&gt;
   &amp;lt;type&amp;gt;rotate&amp;lt;/type&amp;gt;&lt;br /&gt;
   &amp;lt;object-name&amp;gt;needle&amp;lt;/object-name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, we need to specify a property which will determine the amount of rotation required; in other words, the property that provides the ITT value at any one time.  To find the name of this property, we need to start FlightGear in the usual manner with the correct aircraft (fokker50 in this case).  Once FG has started, open the property browser (file/browse internal properties).  You will see the top level of the property tree.  Click on &amp;quot;engines&amp;quot; and you will see a list of engines; click on the first one (engine) and you will see a long list of properties and their current values.&lt;br /&gt;
&lt;br /&gt;
[[Image:Fokker50_prop_browser_screenshot1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now, we have a slight problem at this stage; the fokker50 was created before JSBSim could model turboprops, and so the ITT property is not available right now.  For the purposes of this tutorial though, we'll just use the exhaust temperature instead; the process is what's important.&lt;br /&gt;
&lt;br /&gt;
So, the next line in our XML file will be specify the property to use;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property&amp;gt;engines/engine/egt_degf&amp;lt;/property&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next we need to specify exactly how much that property moves the needle.  There are several ways to do this, but we'll use a simple interpolation table since these are especially useful in more complicated situations.  The ITT gauge is marked from 0 degC to 1200 degC; since we're having to use a value that's reported in degF for now, we'll just convert those two values.  0 degC is about 32 degF and 1200 degC is about 2192 degF.  Two handy tips here; for Linux/unix users, the &amp;quot;units&amp;quot; program is truly invaluable; for everyone, google has a useful units converter; for example search for &amp;quot;&lt;br /&gt;
1200 degrees celsius in fahrenheit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
On to our table then.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;interpolation&amp;gt;&lt;br /&gt;
   &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;32&amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;0&amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;2192&amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;230&amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
 &amp;lt;/interpolation&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;ind&amp;gt; entries are what's indicated on the gauge; the &amp;lt;dep&amp;gt; entries determine how many degrees the object will be rotated by.  In this case I found that number by rotating the needle in AC3D from one end of the scale to the other and reading off the rotation value reported (see screenshot)&lt;br /&gt;
&lt;br /&gt;
[[Image:Fokker50_rotation_value.jpg]]&lt;br /&gt;
&lt;br /&gt;
Having configured the type of animation, the controlling property, and specified the effect of that property, we need to describe an axis and centre for the animation.&lt;br /&gt;
&lt;br /&gt;
In this case, the centre is easy, because the needle centre is at the origin of the 3d model.  If you wanted the rotation centre to be somewhere else, you could use your modelling app to obtain these values.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;center&amp;gt;&lt;br /&gt;
   &amp;lt;x-m&amp;gt;0&amp;lt;/x-m&amp;gt;&lt;br /&gt;
   &amp;lt;y-m&amp;gt;0&amp;lt;/y-m&amp;gt;&lt;br /&gt;
   &amp;lt;z-m&amp;gt;0&amp;lt;/z-m&amp;gt;&lt;br /&gt;
 &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The axis is also very simple in this case;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;axis&amp;gt;&lt;br /&gt;
   &amp;lt;x&amp;gt;-1&amp;lt;/x&amp;gt;&lt;br /&gt;
   &amp;lt;y&amp;gt;0&amp;lt;/y&amp;gt;&lt;br /&gt;
   &amp;lt;z&amp;gt;0&amp;lt;/z&amp;gt;&lt;br /&gt;
 &amp;lt;/axis&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The negative sign on the x axis means that the rotation will be clockwise when viewed from the -x direction (i.e. looking &amp;quot;forwards&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
That concludes the rotation animation and so (as always) we need to add a suitable closing tag;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;/animation&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Level of Detail:'''&lt;br /&gt;
To prevent objects like this instrument being drawn when the aircraft is actually too far away for them to be seen anyway we use a Level Of Detail section.  Notice the &amp;lt;!-- --&amp;gt; section; this is a comment, feel free to add them where you need a reminder of what's going on.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;!-- LoD --&amp;gt;&lt;br /&gt;
 &amp;lt;animation&amp;gt;&lt;br /&gt;
   &amp;lt;type&amp;gt;range&amp;lt;/type&amp;gt;&lt;br /&gt;
   &amp;lt;min-m&amp;gt;0&amp;lt;/min-m&amp;gt;&lt;br /&gt;
   &amp;lt;max-m&amp;gt;30&amp;lt;/max-m&amp;gt;&lt;br /&gt;
 &amp;lt;animation&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajmacleod</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Howto:Creating_3D_instruments&amp;diff=3616</id>
		<title>Howto:Creating 3D instruments</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Howto:Creating_3D_instruments&amp;diff=3616"/>
		<updated>2007-07-04T14:22:08Z</updated>

		<summary type="html">&lt;p&gt;Ajmacleod: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Introduction:'''&lt;br /&gt;
This tutorial describes the basic process of creating a 3d instrument for use in FlightGear.  For now, we're assuming that you have created the actual 3d model to use and wish to include it in a cockpit and animate it.  As an example, we will be animating the ITT gauge for the Fokker 50.&lt;br /&gt;
&lt;br /&gt;
'''What you need:'''&lt;br /&gt;
You will need; a text editor (even notepad will do, but one that does syntax highlighting might help you spot typos more easily; if you're on Windows, [http://notepad-plus.sourceforge.net/uk/site.htm Notepad++] looks suitable.&lt;br /&gt;
&lt;br /&gt;
You will also need your 3d modelling package, and of course a copy of FlightGear.&lt;br /&gt;
&lt;br /&gt;
'''Creating the XML file:'''&lt;br /&gt;
The first step is to create an XML file which will load the 3d model and animate it.  There are no hard and fast rules about where these files should live or what they must be called, but we'll follow the fairly standard procedure of calling it itt.xml and placing it in the Models directory.&lt;br /&gt;
&lt;br /&gt;
So, using your favourite text editor, create a file called itt.xml in the Aircraft/fokker50/Models directory (folder).&lt;br /&gt;
&lt;br /&gt;
It should start like this (and please remember that case is ALWAYS important);&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;PropertyList&amp;gt;&lt;br /&gt;
 &amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Everything you will add to this file must go between the &amp;lt;PropertyList&amp;gt; tags.&lt;br /&gt;
&lt;br /&gt;
Now, our file does nothing useful at this point.  First of all, we want to tell FG to load the 3d model of our instrument.  Add a section under &amp;lt;PropertyList&amp;gt; like this;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;path&amp;gt;itt.ac&amp;lt;/path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is obviously the name of the 3d model file we wish to load.  The model in question looks like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Fokker51_ITT_screenshot1.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''Adding an animation:'''&lt;br /&gt;
&lt;br /&gt;
As you can see, the main item to animate is the temperature needle, and its name is &amp;quot;needle&amp;quot; (you can animate either ac3d &amp;quot;objects&amp;quot; or complete &amp;quot;groups&amp;quot;).  We will want to use a &amp;quot;rotate&amp;quot; animation (for more details on available animation types, see &amp;quot;model-howto.html&amp;quot; which is provided with FG in the Docs directory.)&lt;br /&gt;
&lt;br /&gt;
So, we add an &amp;lt;animation&amp;gt; section to our XML file.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;animation&amp;gt;&lt;br /&gt;
   &amp;lt;type&amp;gt;rotate&amp;lt;/type&amp;gt;&lt;br /&gt;
   &amp;lt;object-name&amp;gt;needle&amp;lt;/object-name&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, we need to specify a property which will determine the amount of rotation required; in other words, the property that provides the ITT value at any one time.  To find the name of this property, we need to start FlightGear in the usual manner with the correct aircraft (fokker50 in this case).  Once FG has started, open the property browser (file/browse internal properties).  You will see the top level of the property tree.  Click on &amp;quot;engines&amp;quot; and you will see a list of engines; click on the first one (engine) and you will see a long list of properties and their current values.&lt;br /&gt;
&lt;br /&gt;
[[Image:Fokker50_prop_browser_screenshot1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now, we have a slight problem at this stage; the fokker50 was created before JSBSim could model turboprops, and so the ITT property is not available right now.  For the purposes of this tutorial though, we'll just use the exhaust temperature instead; the process is what's important.&lt;br /&gt;
&lt;br /&gt;
So, the next line in our XML file will be specify the property to use;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property&amp;gt;engines/engine/egt_degf&amp;lt;/property&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next we need to specify exactly how much that property moves the needle.  There are several ways to do this, but we'll use a simple interpolation table since these are especially useful in more complicated situations.  The ITT gauge is marked from 0 degC to 1200 degC; since we're having to use a value that's reported in degF for now, we'll just convert those two values.  0 degC is about 32 degF and 1200 degC is about 2192 degF.  Two handy tips here; for Linux/unix users, the &amp;quot;units&amp;quot; program is truly invaluable; for everyone, google has a useful units converter; for example search for &amp;quot;&lt;br /&gt;
1200 degrees celsius in fahrenheit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
On to our table then.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;interpolation&amp;gt;&lt;br /&gt;
   &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;32&amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;0&amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;2192&amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;230&amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
 &amp;lt;/interpolation&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;ind&amp;gt; entries are what's indicated on the gauge; the &amp;lt;dep&amp;gt; entries determine how many degrees the object will be rotated by.  In this case I found that number by rotating the needle in AC3D from one end of the scale to the other and reading off the rotation value reported (see screenshot)&lt;br /&gt;
&lt;br /&gt;
[[Image:Fokker50_rotation_value.jpg]]&lt;br /&gt;
&lt;br /&gt;
Having configured the type of animation, the controlling property, and specified the effect of that property, we need to describe an axis and centre for the animation.&lt;br /&gt;
&lt;br /&gt;
In this case, the centre is easy, because the needle centre is at the origin of the 3d model.  If you wanted the rotation centre to be somewhere else, you could use your modelling app to obtain these values.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;center&amp;gt;&lt;br /&gt;
   &amp;lt;x-m&amp;gt;0&amp;lt;/x-m&amp;gt;&lt;br /&gt;
   &amp;lt;y-m&amp;gt;0&amp;lt;/y-m&amp;gt;&lt;br /&gt;
   &amp;lt;z-m&amp;gt;0&amp;lt;/z-m&amp;gt;&lt;br /&gt;
 &amp;lt;/center&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The axis is also very simple in this case;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
 &amp;lt;axis&amp;gt;&lt;br /&gt;
   &amp;lt;x&amp;gt;-1&amp;lt;/x&amp;gt;&lt;br /&gt;
   &amp;lt;y&amp;gt;0&amp;lt;/y&amp;gt;&lt;br /&gt;
   &amp;lt;z&amp;gt;0&amp;lt;/z&amp;gt;&lt;br /&gt;
 &amp;lt;/axis&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The negative sign on the x axis means that the rotation will be clockwise when viewed from the -x direction (i.e. looking &amp;quot;forwards&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
That concludes the rotation animation and so (as always) we need to add a suitable closing tag;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;/animation&amp;gt;&lt;/div&gt;</summary>
		<author><name>Ajmacleod</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=File:Fokker50_rotation_value.jpg&amp;diff=3615</id>
		<title>File:Fokker50 rotation value.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=File:Fokker50_rotation_value.jpg&amp;diff=3615"/>
		<updated>2007-07-04T12:24:08Z</updated>

		<summary type="html">&lt;p&gt;Ajmacleod: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Ajmacleod</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Howto:Creating_3D_instruments&amp;diff=3614</id>
		<title>Howto:Creating 3D instruments</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Howto:Creating_3D_instruments&amp;diff=3614"/>
		<updated>2007-07-04T12:23:28Z</updated>

		<summary type="html">&lt;p&gt;Ajmacleod: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Introduction:'''&lt;br /&gt;
This tutorial describes the basic process of creating a 3d instrument for use in FlightGear.  For now, we're assuming that you have created the actual 3d model to use and wish to include it in a cockpit and animate it.  As an example, we will be animating the ITT gauge for the Fokker 50.&lt;br /&gt;
&lt;br /&gt;
'''What you need:'''&lt;br /&gt;
You will need; a text editor (even notepad will do, but one that does syntax highlighting might help you spot typos more easily; if you're on Windows, [http://notepad-plus.sourceforge.net/uk/site.htm Notepad++] looks suitable.&lt;br /&gt;
&lt;br /&gt;
You will also need your 3d modelling package, and of course a copy of FlightGear.&lt;br /&gt;
&lt;br /&gt;
'''Creating the XML file:'''&lt;br /&gt;
The first step is to create an XML file which will load the 3d model and animate it.  There are no hard and fast rules about where these files should live or what they must be called, but we'll follow the fairly standard procedure of calling it itt.xml and placing it in the Models directory.&lt;br /&gt;
&lt;br /&gt;
So, using your favourite text editor, create a file called itt.xml in the Aircraft/fokker50/Models directory (folder).&lt;br /&gt;
&lt;br /&gt;
It should start like this (and please remember that case is ALWAYS important);&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;PropertyList&amp;gt;&lt;br /&gt;
 &amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Everything you will add to this file must go between the &amp;lt;PropertyList&amp;gt; tags.&lt;br /&gt;
&lt;br /&gt;
Now, our file does nothing useful at this point.  First of all, we want to tell FG to load the 3d model of our instrument.  Add a section under &amp;lt;PropertyList&amp;gt; like this;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;path&amp;gt;itt.ac&amp;lt;/path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is obviously the name of the 3d model file we wish to load.  The model in question looks like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Fokker51_ITT_screenshot1.jpg]]&lt;br /&gt;
&lt;br /&gt;
As you can see, the main item to animate is the temperature needle, and its name is &amp;quot;needle&amp;quot; (you can animate either ac3d &amp;quot;objects&amp;quot; or complete &amp;quot;groups&amp;quot;).  We will want to use a &amp;quot;rotate&amp;quot; animation (for more details on available animation types, see &amp;quot;model-howto.html&amp;quot; which is provided with FG in the Docs directory.)&lt;br /&gt;
&lt;br /&gt;
So, we add an &amp;lt;animation&amp;gt; section to our XML file.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;animation&amp;gt;&lt;br /&gt;
   &amp;lt;type&amp;gt;rotate&amp;lt;/type&amp;gt;&lt;br /&gt;
   &amp;lt;object-name&amp;gt;needle&amp;lt;/object-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, we need to specify a property which will determine the amount of rotation required; in other words, the property that provides the ITT value at any one time.  To find the name of this property, we need to start FlightGear in the usual manner with the correct aircraft (fokker50 in this case).  Once FG has started, open the property browser (file/browse internal properties).  You will see the top level of the property tree.  Click on &amp;quot;engines&amp;quot; and you will see a list of engines; click on the first one (engine) and you will see a long list of properties and their current values.&lt;br /&gt;
&lt;br /&gt;
[[Image:Fokker50_prop_browser_screenshot1.jpg]]&lt;br /&gt;
&lt;br /&gt;
Now, we have a slight problem at this stage; the fokker50 was created before JSBSim could model turboprops, and so the ITT property is not available right now.  For the purposes of this tutorial though, we'll just use the exhaust temperature instead; the process is what's important.&lt;br /&gt;
&lt;br /&gt;
So, the next line in our XML file will be specify the property to use;&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;property&amp;gt;engines/engine/egt_degf&amp;lt;/property&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Next we need to specify exactly how much that property moves the needle.  There are several ways to do this, but we'll use a simple interpolation table since these are especially useful in more complicated situations.  The ITT gauge is marked from 0 degC to 1200 degC; since we're having to use a value that's reported in degF for now, we'll just convert those two values.  0 degC is about 32 degF and 1200 degC is about 2192 degF.  Two handy tips here; for Linux/unix users, the &amp;quot;units&amp;quot; program is truly invaluable; for everyone, google has a useful units converter; for example search for &amp;quot;&lt;br /&gt;
1200 degrees celsius in fahrenheit&amp;quot;&lt;br /&gt;
&lt;br /&gt;
On to our table then.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;interpolation&amp;gt;&lt;br /&gt;
   &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;32&amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;0&amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
   &amp;lt;entry&amp;gt;&amp;lt;ind&amp;gt;2192&amp;lt;/ind&amp;gt;&amp;lt;dep&amp;gt;230&amp;lt;/dep&amp;gt;&amp;lt;/entry&amp;gt;&lt;br /&gt;
 &amp;lt;/interpolation&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;ind&amp;gt; entries are what's indicated on the gauge; the &amp;lt;dep&amp;gt; entries determine how many degrees the object will be rotated by.  I found that number by rotating the needle in AC3D from one end of the scale to the other and reading off the rotation value reported (see screenshot)&lt;br /&gt;
&lt;br /&gt;
[[Image:Fokker50_rotation_value.jpg]]&lt;/div&gt;</summary>
		<author><name>Ajmacleod</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Howto:Creating_3D_instruments&amp;diff=3613</id>
		<title>Howto:Creating 3D instruments</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Howto:Creating_3D_instruments&amp;diff=3613"/>
		<updated>2007-07-04T11:59:56Z</updated>

		<summary type="html">&lt;p&gt;Ajmacleod: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;'''Introduction:'''&lt;br /&gt;
This tutorial describes the basic process of creating a 3d instrument for use in FlightGear.  For now, we're assuming that you have created the actual 3d model to use and wish to include it in a cockpit and animate it.  As an example, we will be animating the ITT gauge for the Fokker 50.&lt;br /&gt;
&lt;br /&gt;
'''What you need:'''&lt;br /&gt;
You will need; a text editor (even notepad will do, but one that does syntax highlighting might help you spot typos more easily; if you're on Windows, [http://notepad-plus.sourceforge.net/uk/site.htm Notepad++] looks suitable.&lt;br /&gt;
&lt;br /&gt;
You will also need your 3d modelling package, and of course a copy of FlightGear.&lt;br /&gt;
&lt;br /&gt;
'''Creating the XML file:'''&lt;br /&gt;
The first step is to create an XML file which will load the 3d model and animate it.  There are no hard and fast rules about where these files should live or what they must be called, but we'll follow the fairly standard procedure of calling it itt.xml and placing it in the Models directory.&lt;br /&gt;
&lt;br /&gt;
So, using your favourite text editor, create a file called itt.xml in the Aircraft/fokker50/Models directory (folder).&lt;br /&gt;
&lt;br /&gt;
It should start like this (and please remember that case is ALWAYS important);&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;?xml version=&amp;quot;1.0&amp;quot;?&amp;gt;&lt;br /&gt;
 &amp;lt;PropertyList&amp;gt;&lt;br /&gt;
 &amp;lt;/PropertyList&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Everything you will add to this file must go between the &amp;lt;PropertyList&amp;gt; tags.&lt;br /&gt;
&lt;br /&gt;
Now, our file does nothing useful at this point.  First of all, we want to tell FG to load the 3d model of our instrument.  Add a section under &amp;lt;PropertyList&amp;gt; like this;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;path&amp;gt;itt.ac&amp;lt;/path&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is obviously the name of the 3d model file we wish to load.  The model in question looks like this:&lt;br /&gt;
&lt;br /&gt;
[[Image:Fokker51_ITT_screenshot1.jpg]]&lt;br /&gt;
&lt;br /&gt;
As you can see, the main item to animate is the temperature needle, and its name is &amp;quot;needle&amp;quot; (you can animate either ac3d &amp;quot;objects&amp;quot; or complete &amp;quot;groups&amp;quot;).  We will want to use a &amp;quot;rotate&amp;quot; animation (for more details on available animation types, see &amp;quot;model-howto.html&amp;quot; which is provided with FG in the Docs directory.)&lt;br /&gt;
&lt;br /&gt;
So, we add an &amp;lt;animation&amp;gt; section to our XML file.&lt;br /&gt;
&lt;br /&gt;
 &amp;lt;animation&amp;gt;&lt;br /&gt;
   &amp;lt;type&amp;gt;rotate&amp;lt;/type&amp;gt;&lt;br /&gt;
   &amp;lt;object-name&amp;gt;needle&amp;lt;/object-name&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Now, we need to specify a property which will determine the amount of rotation required; in other words, the property that provides the ITT value at any one time.  To find the name of this property, we need to start FlightGear in the usual manner with the correct aircraft (fokker50 in this case).  Once FG has started, open the property browser (file/browse internal properties).  You will see the top level of the property tree.  Click on &amp;quot;engines&amp;quot; and you will see a list of engines; click on the first one (engine) and you will see a long list of properties and their current values.&lt;br /&gt;
&lt;br /&gt;
[[Image:Fokker50_prop_browser_screenshot1.jpg]]&lt;/div&gt;</summary>
		<author><name>Ajmacleod</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=File:Fokker50_prop_browser_screenshot1.jpg&amp;diff=3612</id>
		<title>File:Fokker50 prop browser screenshot1.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=File:Fokker50_prop_browser_screenshot1.jpg&amp;diff=3612"/>
		<updated>2007-07-04T11:57:52Z</updated>

		<summary type="html">&lt;p&gt;Ajmacleod: Property Browser open at engines/engine&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Property Browser open at engines/engine&lt;/div&gt;</summary>
		<author><name>Ajmacleod</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=File:Fokker51_ITT_screenshot1.jpg&amp;diff=3611</id>
		<title>File:Fokker51 ITT screenshot1.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=File:Fokker51_ITT_screenshot1.jpg&amp;diff=3611"/>
		<updated>2007-07-04T11:38:58Z</updated>

		<summary type="html">&lt;p&gt;Ajmacleod: ITT Screenshot 1 showing overview of model in AC3D&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;ITT Screenshot 1 showing overview of model in AC3D&lt;/div&gt;</summary>
		<author><name>Ajmacleod</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Main_Page&amp;diff=3610</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Main_Page&amp;diff=3610"/>
		<updated>2007-07-04T11:10:11Z</updated>

		<summary type="html">&lt;p&gt;Ajmacleod: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
__NOEDITSECTION__&lt;br /&gt;
'''FlightGear''' Flight Simulator project is an open-source, multi-platform, cooperative flight simulator development project. Source code for the entire project is available ([http://cvs.flightgear.org/cgi-bin/viewcvs/viewcvs.cgi/?cvsroot=FlightGear-0.9#dirlist CVS repository]) and licensed under the [http://www.gnu.org/copyleft/gpl.html GNU General Public License]. &lt;br /&gt;
&lt;br /&gt;
The goal of the '''FlightGear''' project is to create a sophisticated flight simulator framework for use in research or academic environments, for the development and pursuit of other interesting flight simulation ideas, and as an end-user application. We are developing a sophisticated, open simulation framework that can be expanded and improved upon by anyone interested in [[Volunteer|contributing]]. &lt;br /&gt;
&lt;br /&gt;
There are many exciting possibilities for an open, free flight sim. We hope that this project will be interesting and useful to many people in many areas.&lt;br /&gt;
&lt;br /&gt;
'''FlightGear''' comes with a set of illustrated documentation, notably&lt;br /&gt;
&amp;quot;The Manual&amp;quot;, which is available as&lt;br /&gt;
[ftp://ftp.de.flightgear.org/pub/fgfs/Docs/getstart.pdf PDF] and&lt;br /&gt;
[http://www.flightgear.org/Docs/getstart/getstart.html HTML]. If you&lt;br /&gt;
prefer to follow the 'bleeding edge' set of FlightGear instructions,&lt;br /&gt;
then the following articles are likely to make you happy. You will&lt;br /&gt;
notice that parts of this Wiki duplicate information that's already&lt;br /&gt;
present in &amp;quot;The Manual&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
{|cellspacing=&amp;quot;10&amp;quot;&lt;br /&gt;
| width=&amp;quot;50%&amp;quot;|&lt;br /&gt;
== User Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Getting Started ===&lt;br /&gt;
* [[ New to FlightGear ]]&lt;br /&gt;
* [[ Why FlightGear ]]&lt;br /&gt;
* [[ Features ]]&lt;br /&gt;
* [[ FAQ ]]&lt;br /&gt;
* [[ Hardware Recommendations ]]&lt;br /&gt;
* [[ Recommended Software ]]&lt;br /&gt;
* [[ Troubleshooting Problems ]]&lt;br /&gt;
* [[ Volunteer ]]&lt;br /&gt;
* [[ Real Life Experience ]]&lt;br /&gt;
&lt;br /&gt;
=== Configuring Flightgear ===&lt;br /&gt;
* [[ Command Line Parameters ]]&lt;br /&gt;
* [[ Installing Scenery ]]&lt;br /&gt;
* [[ Improving Framerates ]]&lt;br /&gt;
* [[ Multiplayer Howto ]]&lt;br /&gt;
* [[ Linux software audio mixing with FlightGear ]]&lt;br /&gt;
&lt;br /&gt;
=== Using Flightgear ===&lt;br /&gt;
* [[Aircraft]]&lt;br /&gt;
* [[ Suggested Flights ]]&lt;br /&gt;
* [[ Starting in the Air ]]&lt;br /&gt;
* [[ Instant Replay ]]&lt;br /&gt;
* [[ Preset Properties ]]&lt;br /&gt;
* [[ Realism ]]&lt;br /&gt;
* [[ Flying the Helicopter ]]&lt;br /&gt;
* [[ Doing aerotow over the net ]]&lt;br /&gt;
&lt;br /&gt;
=== Interactive Scenarios ===&lt;br /&gt;
* [[ Carrier Howto ]]&lt;br /&gt;
* [[ Air-Air Refueling Howto ]]&lt;br /&gt;
* [[ AI Systems ]]&lt;br /&gt;
* [[ Interactive Traffic ]]&lt;br /&gt;
* [[ Soaring ]]&lt;br /&gt;
&lt;br /&gt;
=== Flying Resources ===&lt;br /&gt;
* [[ Definitions Acronyms ]]&lt;br /&gt;
* [[ Getting IFR Charts ]]&lt;br /&gt;
* [[ Understanding Altitude ]]&lt;br /&gt;
* [[ Understanding Navigation ]]&lt;br /&gt;
* [[ Understanding Propeller Torque and P-Factor ]]&lt;br /&gt;
* [[ Understanding Aerodynamics ]]&lt;br /&gt;
* [[ Communications ]]&lt;br /&gt;
* [[ Weather ]]&lt;br /&gt;
* [[ Avionics and Instruments ]] &lt;br /&gt;
* [http://www.wingfiles.com/ Everything you need ]&lt;br /&gt;
* [http://www.faa.gov/library/manuals/ FAA Handbooks &amp;amp; Manuals]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
| width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; |&lt;br /&gt;
== Developer Documentation ==&lt;br /&gt;
&lt;br /&gt;
=== Compiling  ===&lt;br /&gt;
* [[ Building Flightgear ]]&lt;br /&gt;
* [[ Building Terragear ]]&lt;br /&gt;
* [[ OpenSceneGraph ]]&lt;br /&gt;
* [[ Building FlightGear Launch Control ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Contributing ===&lt;br /&gt;
* [[ Submitting Patches ]] &lt;br /&gt;
* [[ Code Cleanup ]] &lt;br /&gt;
* [[ Development Resources ]]&lt;br /&gt;
* [[ Extension Support ]]&lt;br /&gt;
* [[ Technical Reports ]]&lt;br /&gt;
* [[ Changes since 0.9.10 ]]&lt;br /&gt;
&lt;br /&gt;
=== Code Internals ===&lt;br /&gt;
* [[ Property Tree ]]&lt;br /&gt;
* [[ Subsystems ]] &lt;br /&gt;
* [[ Commands ]] &lt;br /&gt;
* [[ FDM API ]]&lt;br /&gt;
* [[ Nasal scripting language ]]&lt;br /&gt;
* [[ File Formats ]]&lt;br /&gt;
&lt;br /&gt;
=== Modeling ===&lt;br /&gt;
* [[ Modeling - Getting Started ]]&lt;br /&gt;
* [[ Model Import and Export ]]&lt;br /&gt;
* [[ Modeling Resources ]]&lt;br /&gt;
* [[ Autopilot Tuning Resources ]]&lt;br /&gt;
* [[ Aircraft Information Resources ]]&lt;br /&gt;
* [[ Blender Ground Signs Tutorial]]&lt;br /&gt;
* [[ Normals and Transparency Tutorial ]]&lt;br /&gt;
* [[ Creating instruments for FG ]]&lt;br /&gt;
&lt;br /&gt;
=== Todo ===&lt;br /&gt;
* [[ Long Term Goals ]]&lt;br /&gt;
* [[ Bugs ]]&lt;br /&gt;
* [[ FGFS Todo ]]&lt;br /&gt;
* [[:Category:Aircraft TODO]]&lt;br /&gt;
* [[ Feature Requests / Proposals / Ideas ]]&lt;br /&gt;
* [[ FlightGear Expo Checklist ]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Miscellaneous ===&lt;br /&gt;
* [[ Glass Cockpit Projects ]]&lt;br /&gt;
* [[ Tutorial Resources ]]&lt;br /&gt;
* [[ Copyright Inquiry ]]&lt;br /&gt;
* [http://www.cafepress.com/fgfs_gear FlightGear - Gear] &lt;br /&gt;
* [[Resources]]&lt;br /&gt;
* [[ Sign Specification Proposal ]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Ajmacleod</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Bugs&amp;diff=3402</id>
		<title>Bugs</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Bugs&amp;diff=3402"/>
		<updated>2007-03-01T19:33:40Z</updated>

		<summary type="html">&lt;p&gt;Ajmacleod: /* Incomplete Scenery. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Known Bugs ==&lt;br /&gt;
&lt;br /&gt;
This section contains known and recorded bugs. It makes no claim to be a complete list, or even to be particularly accurate.&lt;br /&gt;
&lt;br /&gt;
==== Incorrect altimetry. ====&lt;br /&gt;
&lt;br /&gt;
There is evidently at least one serious misconception in the&lt;br /&gt;
code that calculates atmospheric pressure, altimeter settings, &lt;br /&gt;
et cetera.  This can be easily demonstrated:&lt;br /&gt;
&lt;br /&gt;
Park at or near the threshold of runway 33 at Aspen (KASE).&lt;br /&gt;
Under standard conditions, observe that the altimeter reads&lt;br /&gt;
7820 feet MSL, as it should.&lt;br /&gt;
&lt;br /&gt;
Use the Weather : Weather Conditions dialog popup to&lt;br /&gt;
look at the ground-level altimeter setting (QNH).&lt;br /&gt;
This is bottom row in the &amp;quot;Alt (inHg)&amp;quot; column of the popup.&lt;br /&gt;
Verify that it is 29.92.&lt;br /&gt;
&lt;br /&gt;
Now use the dialog box to change this property.  Change it&lt;br /&gt;
to 30.92, a one-inch difference.&lt;br /&gt;
&lt;br /&gt;
Go to your altimeter instrument and enter the new altimeter&lt;br /&gt;
setting in the Kollsman window.  Ideally, this '''should'''&lt;br /&gt;
cause the instrument to read the correct altitude once&lt;br /&gt;
again, namely 7820 feet MSL.&lt;br /&gt;
&lt;br /&gt;
However, due to bugs, it is likely that you will observe&lt;br /&gt;
something closer to 8120.  This means the airplane is 300 &lt;br /&gt;
feet lower than the altimeter says it is.&lt;br /&gt;
&lt;br /&gt;
In case it wasn't obvious, when flying around near Aspen,&lt;br /&gt;
being 300 feet lower than you think you are can be very&lt;br /&gt;
bad for your health.&lt;br /&gt;
&lt;br /&gt;
The absolutely correct formulas for computing the altimeter &lt;br /&gt;
setting are derived and explained on the [http://www.av8n.com/physics/altimetry.htm jsd altimetry page].&lt;br /&gt;
&lt;br /&gt;
A patch to fix the altimeter has been offered.&lt;br /&gt;
&lt;br /&gt;
==== Altimetry misnomers and misconceptions. ====&lt;br /&gt;
&lt;br /&gt;
Both the Weather Conditions popup and the atis.cxx code&lt;br /&gt;
rely on the &amp;quot;pressure-sea-level-inhg&amp;quot; property and use&lt;br /&gt;
it in ways that the altimeter setting should be used.&lt;br /&gt;
&lt;br /&gt;
For some people this may be merely a misnomer, but for&lt;br /&gt;
others it is clearly a misconception, as recent events&lt;br /&gt;
have shown.&lt;br /&gt;
&lt;br /&gt;
The fact is, the altimeter setting is '''not''' the same &lt;br /&gt;
thing as the pressure at sea level (Psl), especially when &lt;br /&gt;
the airmass has a non-standard temperature profile.&lt;br /&gt;
The altimeter setting is something&lt;br /&gt;
else;  it is properly called the altimeter setting.  It&lt;br /&gt;
is also properly called the QNH, although private pilots&lt;br /&gt;
who fly only in the US may be unfamiliar with the QNH&lt;br /&gt;
terminology.&lt;br /&gt;
&lt;br /&gt;
In the Remarks section of a METAR, you can sometimes&lt;br /&gt;
find the ''Reduced'' Sea Level Pressure, which is&lt;br /&gt;
unfortunately denoted SLP.  This METAR SLP serves&lt;br /&gt;
the same function as the altimeter setting.  Despite&lt;br /&gt;
its name, the METAR SLP is not equal to the honest-to-goodness&lt;br /&gt;
pressure at honest-to-goodness sea level (Psl), as&lt;br /&gt;
discussed in more detail on&lt;br /&gt;
[http://www.av8n.com/physics/altimetry.htm jsd altimetry page].&lt;br /&gt;
&lt;br /&gt;
There needs to be a facility whereby routines that need&lt;br /&gt;
the altimeter setting can obtain the altimeter setting.&lt;br /&gt;
&lt;br /&gt;
Correct altimetry formulas may be found on the [http://www.av8n.com/physics/altimetry.htm jsd altimetry page].&lt;br /&gt;
&lt;br /&gt;
Existing code sometimes treads the &amp;quot;pressure-sea-level-inhg&amp;quot; &lt;br /&gt;
property as if it were Psl, and sometimes as if it were &lt;br /&gt;
METAR SLP.  All this needs to be vetted.&lt;br /&gt;
&lt;br /&gt;
==== Newton's laws violated by environment.cxx ====&lt;br /&gt;
&lt;br /&gt;
Consider the following results of an experiment using fgfs:&lt;br /&gt;
&lt;br /&gt;
  alt:  662  mM: 0.0288  P: 99000.8462  T: 286.8563  rho: 1.1975&lt;br /&gt;
  alt: 3462  mM: 0.0288  P: 89341.6721  T: 281.3920  rho: 1.1009&lt;br /&gt;
  &lt;br /&gt;
  alt:  662  mM: 0.0289  P: 99000.8422  T: 256.9910  rho: 1.3404&lt;br /&gt;
  alt: 3462  mM: 0.0289  P: 89341.6740  T: 252.0956  rho: 1.2333&lt;br /&gt;
&lt;br /&gt;
The first pair of lines represent before and after a simple&lt;br /&gt;
flight from one airport to another, with a net gain in altitude of&lt;br /&gt;
2800 feet, under standard conditions.  So far so good.&lt;br /&gt;
&lt;br /&gt;
The second pair of lines represent exactly the same flight, &lt;br /&gt;
except that the ambient temperature was 30 degrees colder&lt;br /&gt;
than before.  You can see that the density (rho) is greater,&lt;br /&gt;
in accordance with the ideal gas law.&lt;br /&gt;
&lt;br /&gt;
The problem is that the delta_P is exactly the same for the two&lt;br /&gt;
flights.  This is a problem because P is connected to the weight&lt;br /&gt;
of the air column.  If the air is 12% denser, the laws of physics &lt;br /&gt;
require it to have a 12% steeper pressure gradient dP/dh ... but &lt;br /&gt;
alas this is not observed.&lt;br /&gt;
&lt;br /&gt;
This incorrect pressure profile P(h) has many consequences affecting&lt;br /&gt;
engine performance, airfoil performance, altimetry, et cetera.&lt;br /&gt;
&lt;br /&gt;
==== Z-buffer burn-through. ====&lt;br /&gt;
&lt;br /&gt;
Sometimes distant objects can be seen through nearer objects that&lt;br /&gt;
are not supposed to be transparent.  For example:  Runway lights &lt;br /&gt;
sometimes burn through a solid cloud layer.  Also runway lights&lt;br /&gt;
sometimes burn through aircraft structure.  Some instruments&lt;br /&gt;
burn through the yoke.&lt;br /&gt;
&lt;br /&gt;
It seems that so-called &amp;quot;2D&amp;quot; objects in the&lt;br /&gt;
background are likely to burn through &amp;quot;3D&amp;quot; objects in the&lt;br /&gt;
foreground.  This is particularly noticeable in aircraft&lt;br /&gt;
that have a mixture of 2D and 3D instruments.&lt;br /&gt;
&lt;br /&gt;
The ''position'' in space of the offending objects is OK, as&lt;br /&gt;
you can verify by shifting your PoV to get a little bit of&lt;br /&gt;
a side view.  The obvious hypothesis is that the Z-order&lt;br /&gt;
is being mishandled in a Z-buffer somewhere.&lt;br /&gt;
&lt;br /&gt;
==== Memory leak. ====&lt;br /&gt;
&lt;br /&gt;
The simulator will gobble up about 3 gigabytes&lt;br /&gt;
of virtual memory overnight, while paused.  &lt;br /&gt;
Without the&lt;br /&gt;
leak, the memory footprint would be less than 300 meg.  The&lt;br /&gt;
difference between 300 meg and 3 gig is quite &lt;br /&gt;
significant on machines that have only 1 or 2 gig&lt;br /&gt;
of main memory.&lt;br /&gt;
&lt;br /&gt;
A rather steady leak of 2 meg per minute is observed&lt;br /&gt;
during pause, no matter whether the aircraft is aloft&lt;br /&gt;
or parked on the ground.  '''Vastly less leakage''' (two&lt;br /&gt;
orders of magnitude less, possibly zero) is observed&lt;br /&gt;
when the simulator is not paused, and the aircraft&lt;br /&gt;
is simply sitting on the ground with the parking&lt;br /&gt;
brake set.&lt;br /&gt;
&lt;br /&gt;
This bug has been observed in multiple versions of fgfs,&lt;br /&gt;
including one compiled back in May, 2006 as well as&lt;br /&gt;
the most current CVS version.&lt;br /&gt;
&lt;br /&gt;
This is 100% reproducible with a &lt;br /&gt;
ATI RV350 [Mobility Radeon 9600 M10] chipset&lt;br /&gt;
and the ati-fglrx driver.&lt;br /&gt;
The leak is observed whether or not &lt;br /&gt;
OSG_GL_EXTENSION_DISABLE=ATI:GL_SGIS_generate_mipmap is set.&lt;br /&gt;
&lt;br /&gt;
==== Numerous bugs in ATIS feature. ====&lt;br /&gt;
&lt;br /&gt;
1) The ATIS is supposed to change whenever there is a&lt;br /&gt;
significant change in the weather.  The comments mention&lt;br /&gt;
this, but the code makes no attempt to implement this.&lt;br /&gt;
&lt;br /&gt;
2) The code assumes that ATIS is prepared on the hour.&lt;br /&gt;
In practice this is virtually never the case;  a new&lt;br /&gt;
ATIS is prepared hourly, but not on the hour.  Also&lt;br /&gt;
this assumption is inconsistent with ATIS changes&lt;br /&gt;
based on the weather.&lt;br /&gt;
&lt;br /&gt;
3) The code attempts to issue a station identifier, but&lt;br /&gt;
none is heard.&lt;br /&gt;
&lt;br /&gt;
4) Multiple departures from standard phraseology.&lt;br /&gt;
&lt;br /&gt;
5) The volume is too low;  ATIS is not readable over engine noise.&lt;br /&gt;
This defeats much of the purpose of ATIS.  The volume does&lt;br /&gt;
not respond to the /instrumentation/comm[N]/volume property.&lt;br /&gt;
&lt;br /&gt;
6) When using the --enable-real-weather-fetch option, the weather conditions used for the ATIS message are the conditions at aircraft current position and not the conditions at the airfield. The METAR used at the aircraft's current position could come from a different airport.&lt;br /&gt;
&lt;br /&gt;
x) Et cetera.&lt;br /&gt;
&lt;br /&gt;
A patch to fix a few dozen ATIS bugs is available, but has not been&lt;br /&gt;
incorporated into FG CVS.&lt;br /&gt;
&lt;br /&gt;
==== Problems with --altitude option. ====&lt;br /&gt;
&lt;br /&gt;
When the aircraft is initialzed aloft using the &lt;br /&gt;
command-line --altitude=6000&lt;br /&gt;
option, 0.9.10 is observed to put up a blank screen &lt;br /&gt;
(no scenery, no panel) and to spew on the console &lt;br /&gt;
page after page like this:&lt;br /&gt;
&lt;br /&gt;
  Warning: invalid line segment passed to IntersectVisitor::addLineSegment(..)&lt;br /&gt;
         nan nan nan 2.7093e+06 4.27332e+06 -3.87316e+06 segment ignored..&lt;br /&gt;
  altitude         = -1.69132e-41&lt;br /&gt;
  sea level radius = -6.54575e-42&lt;br /&gt;
  latitude         = 6.9874e-316&lt;br /&gt;
  longitude        = 6.79737e-313&lt;br /&gt;
  OpenAL error (AL_INVALID_VALUE): set_pitch&lt;br /&gt;
  OpenAL error (AL_INVALID_VALUE): set_volume&lt;br /&gt;
&lt;br /&gt;
==== Multiple bugs in the location-in-air popup. ====&lt;br /&gt;
&lt;br /&gt;
The location-in-air popup turns off the magnetos and extends&lt;br /&gt;
the landing gear.  Some pilots and flight instructors &lt;br /&gt;
deem this to be undesirable behavior, especially if all&lt;br /&gt;
they are trying to do is relocate from one airborne position to&lt;br /&gt;
another.&lt;br /&gt;
&lt;br /&gt;
Similarly, it strongly perturbs the throttle setting, &lt;br /&gt;
aileron trim, elevator trim, rudder trim, &lt;br /&gt;
view angles, PoV position, and who-knows-what else.  &lt;br /&gt;
Again, people who know about airplanes consider this to&lt;br /&gt;
be undesirable behavior.&lt;br /&gt;
&lt;br /&gt;
There is also a tendency to place the aircraft into &lt;br /&gt;
dangerous unusual attitudes, and other bugs too numerous &lt;br /&gt;
to mention.&lt;br /&gt;
&lt;br /&gt;
Evidently, though, there is at least one person who likes&lt;br /&gt;
things the way they are.  Code that would have fixed these&lt;br /&gt;
bugs was rejected.  Neither specific nor constructive criticism&lt;br /&gt;
of the code was offered.  For details see the flightgear-devel&lt;br /&gt;
mailing list archives.&lt;br /&gt;
&lt;br /&gt;
==== Nearest fix. ====&lt;br /&gt;
&lt;br /&gt;
Did you know that there are 8 different BRAVO intersections&lt;br /&gt;
in the database?&lt;br /&gt;
&lt;br /&gt;
Until now there was no support in the code for this;  all but&lt;br /&gt;
one of the entries was thrown away at the lowest level. There&lt;br /&gt;
is a comment in the code saying that fixing this is on the&lt;br /&gt;
TODO list.&lt;br /&gt;
&lt;br /&gt;
As for navaids (as opposed to waypoints), the low-level code&lt;br /&gt;
already provides support for ambiguous IDs, but the information&lt;br /&gt;
is not being used very wisely by the higher layers.&lt;br /&gt;
&lt;br /&gt;
Code to fix these problems was offered to the community.&lt;br /&gt;
So far it has been completely ignored.&lt;br /&gt;
&lt;br /&gt;
==== HSI instrument failure. ====&lt;br /&gt;
&lt;br /&gt;
If you use the &amp;quot;heading indicator&amp;quot; checkbox on the&lt;br /&gt;
&amp;quot;instrument failure&amp;quot; popup to command a failure,&lt;br /&gt;
it has no effect on the HSI instrument used by&lt;br /&gt;
many aircraft in the simulator fleet.&lt;br /&gt;
&lt;br /&gt;
This is because of wrong code in hsi.xml.  &lt;br /&gt;
&lt;br /&gt;
Backend code to handle this correctly exists, but has&lt;br /&gt;
apparently never been used.  It needs one small fix,&lt;br /&gt;
followed by recompilation.  A patchset to take care&lt;br /&gt;
of all this was offered to the community, but has&lt;br /&gt;
not been incorporated.&lt;br /&gt;
&lt;br /&gt;
==== Flux gate not really a flux gate. ====&lt;br /&gt;
&lt;br /&gt;
In the Instrumentation director, there are three heading-related&lt;br /&gt;
.cxx files.&lt;br /&gt;
* heading_indicator.cxx : vacuum driven, with drift&lt;br /&gt;
* heading_indicator_dg.cxx : electrically driven, with drift&lt;br /&gt;
* heading_indicator_fg.cxx : electrically driven, no drift&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;fg&amp;quot; in &amp;quot;heading_indicator_fg&amp;quot; is documented to stand for&lt;br /&gt;
&amp;quot;flux gate&amp;quot;, as if the heading were slaved to a flux-gate&lt;br /&gt;
compass ... but the code does not implement any such thing.&lt;br /&gt;
All it really does is initialize the indicated heading to &lt;br /&gt;
the correct magnetic heading value, and then implement a &lt;br /&gt;
no-drift policy.  This is incorrect behavior, as can be&lt;br /&gt;
seen by flying to an area where the magnetic variation is&lt;br /&gt;
different from what it was at the start of the flight.  A&lt;br /&gt;
true slaved heading indicator would gradually accommodate&lt;br /&gt;
the new magvar.&lt;br /&gt;
&lt;br /&gt;
The correct behavior ought to be easy to implement.&lt;br /&gt;
&lt;br /&gt;
==== Weird noises during initialization. ====&lt;br /&gt;
&lt;br /&gt;
It is observed that sometimes while the simulator is starting&lt;br /&gt;
up, before things are fully operational, weird noises are&lt;br /&gt;
produced.  For example, in the c182rg, gear-in-transit&lt;br /&gt;
noises are produced for several seconds before the first&lt;br /&gt;
display becomes visible.  (According to a dump of the&lt;br /&gt;
relevant variables, there is no evidence that the gear is&lt;br /&gt;
actually in transit, and no reason why it should be.)&lt;br /&gt;
&lt;br /&gt;
Code to fix this was submitted.  So far it has been&lt;br /&gt;
ignored.&lt;br /&gt;
&lt;br /&gt;
==== Weird displays during fullscreen initialization. ====&lt;br /&gt;
&lt;br /&gt;
If the --enable-fullscreen command-line option is used, &lt;br /&gt;
the window is enlarged to full-screen size at a time&lt;br /&gt;
when initialization is only half-complete.  From this&lt;br /&gt;
time until the end of initialization, the display &lt;br /&gt;
contains weird combinations of leftover graphic objects&lt;br /&gt;
and other junk.&lt;br /&gt;
&lt;br /&gt;
This is observed no matter whether the splash-screen feature&lt;br /&gt;
is enabled or disabled.&lt;br /&gt;
&lt;br /&gt;
==== Fullscreen window sometimes misplaced. ====&lt;br /&gt;
&lt;br /&gt;
About 20% of the time, when the --enable-fullscreen command-line&lt;br /&gt;
option is used, it opens a window of the correct size, but &lt;br /&gt;
badly misplaced relative to the screen, such that only one half&lt;br /&gt;
or one quarter of the window is on-screen.&lt;br /&gt;
&lt;br /&gt;
==== Navigation databases out-of-date ====&lt;br /&gt;
&lt;br /&gt;
The database of navigation waypoints and fixes has an internal&lt;br /&gt;
date of early 2005.  It is missing quite a few useful fixes.  &lt;br /&gt;
The FAA has defined quite a few new approaches in recent years,&lt;br /&gt;
and has revised others.&lt;br /&gt;
&lt;br /&gt;
An updated version, based on a pull of the much more&lt;br /&gt;
current x-plane database, was made available.  So far&lt;br /&gt;
it has been ignored.&lt;br /&gt;
&lt;br /&gt;
Similar remarks apply to the ''navaids'' database.&lt;br /&gt;
&lt;br /&gt;
==== Ident from phantom DME. ====&lt;br /&gt;
&lt;br /&gt;
In the real world, some VOR stations and even some localizers&lt;br /&gt;
have a colocated DME station ... but there are plenty that&lt;br /&gt;
don't.&lt;br /&gt;
&lt;br /&gt;
The DME has its own Morse ident, with a distinctive higher pitch.&lt;br /&gt;
&lt;br /&gt;
In the simulator, due to a bug in the code, all stations&lt;br /&gt;
transmit the DME Morse ident ... even stations where no&lt;br /&gt;
DME is present.&lt;br /&gt;
&lt;br /&gt;
The code in navradio.cxx finds the nearest VOR or LOC on the&lt;br /&gt;
frequency, and checks to see if it is in range.  It also asks&lt;br /&gt;
for the &amp;quot;nearest&amp;quot; DME on the frequency, but makes no attempt&lt;br /&gt;
to check that it is in range.  To say the same thing the&lt;br /&gt;
other way, there is no attempt to check that the aircraft is&lt;br /&gt;
within the service volume of the DME.  Since there is almost always&lt;br /&gt;
a DME /somewhere/ on the frequency, the has_dme variable will&lt;br /&gt;
always be set true.&lt;br /&gt;
&lt;br /&gt;
For a demonstration of this bug, park at KAOO airport and &lt;br /&gt;
tune up the AOO VOR (which has no DME).  Or park at almost&lt;br /&gt;
any airport and tune up the localizer (since relatively few&lt;br /&gt;
localizers have DME).&lt;br /&gt;
&lt;br /&gt;
==== Wild accelerations at low speeds. ====&lt;br /&gt;
&lt;br /&gt;
Improper inclinometer ball indications have been observed:&lt;br /&gt;
 -- When parked, the ball was pegged to one side.&lt;br /&gt;
 -- When taxiing at low speeds (a few knots or less) the ball&lt;br /&gt;
  oscillated wildly back and forth.&lt;br /&gt;
&lt;br /&gt;
This was observed in the c182 model and in the default c172 model.&lt;br /&gt;
&lt;br /&gt;
Tracing indicates that the problem is not within the slip_skid_ball.cxx&lt;br /&gt;
code, but rather upstream of there, in the flight dynamics.  Tracing&lt;br /&gt;
shows that the y-accel-fps_sec values are wildly fluctuating in&lt;br /&gt;
direction, and enormous in magnitude.&lt;br /&gt;
&lt;br /&gt;
Additional evidence pointing to the FDM comes from the fact that&lt;br /&gt;
the problem is observed with JSBSim and not with larcsim (although&lt;br /&gt;
larcsim has other problems, such as drifting slowly sideways while&lt;br /&gt;
parked).&lt;br /&gt;
&lt;br /&gt;
This is important from a procedures training point of view.  &lt;br /&gt;
If you want to have&lt;br /&gt;
a realistic flight, one of the checklist items is to verify, insofar&lt;br /&gt;
as possible, that the instruments give correct indications during&lt;br /&gt;
preflight and taxi.  In a real aircraft, a pilot who found the &lt;br /&gt;
inclinometer pegged would cancel the flight before even starting&lt;br /&gt;
the engine.&lt;br /&gt;
&lt;br /&gt;
==== Airport lighting in poor weather. ====&lt;br /&gt;
&lt;br /&gt;
The code in tileentry.cxx turns on airport lights according to&lt;br /&gt;
the position of the sun relative to the horizon.  One consequence&lt;br /&gt;
is that the lights are off during the day.&lt;br /&gt;
&lt;br /&gt;
In real life, there are many circumstances where airport lights,&lt;br /&gt;
including approach lights, are turned on during the day.  At tower airports, the lights are turned on during bad weather -- including weather that &lt;br /&gt;
is only slightly bad -- and also turned on if requested by the pilot.  For&lt;br /&gt;
details, see [[http://www.faa.gov/ATPUBS/ATC/ATC.pdf FAA Order 7110.65p]].&lt;br /&gt;
&lt;br /&gt;
At non-towered airports, the lights are usually pilot-controlled,&lt;br /&gt;
via radio.&lt;br /&gt;
&lt;br /&gt;
The absence of lighting during daytime in poor weather detracts &lt;br /&gt;
significantly from the realism, because it affects both the&lt;br /&gt;
legality and the practicality of performing instrument approaches&lt;br /&gt;
under such conditions.&lt;br /&gt;
&lt;br /&gt;
==== Holes in the ground. ====&lt;br /&gt;
&lt;br /&gt;
Ever since the first win32-build of FG-OSG, there are at least two huge &lt;br /&gt;
ground scenery holes in the the Rhine/Main/Neckar-region in Germany. &lt;br /&gt;
The first one gapes at &lt;br /&gt;
the place which was formerly known as the city of Mannheim (near the &lt;br /&gt;
airport EDFM, which is still there), the second one has swallowed up a &lt;br /&gt;
big piece of Frankfurt am Main (near EDDF) and surrounding land. &lt;br /&gt;
&lt;br /&gt;
First posted to the flightgear-devel list in November, 2006.&lt;br /&gt;
&lt;br /&gt;
==== Mixture versus Altitude. ====&lt;br /&gt;
&lt;br /&gt;
It is observed in the default c172p and in the c182 that at&lt;br /&gt;
high altitude airports (e.g. KGCN or KASE), to obtain max&lt;br /&gt;
static RPM, it suffices to move the mixture control only a&lt;br /&gt;
few mm aft of the full-forward (full-rich) position.&lt;br /&gt;
&lt;br /&gt;
This is unrealistic.  In a real aircraft under such conditions,&lt;br /&gt;
it would be necessary to pull the mixture control back about&lt;br /&gt;
an inch to obtain max RPM.&lt;br /&gt;
&lt;br /&gt;
It's hard to say whether the carburetor is underreacting to the&lt;br /&gt;
altitude, or overreacting to the mixture control.&lt;br /&gt;
&lt;br /&gt;
==== EGT reads high. ====&lt;br /&gt;
&lt;br /&gt;
It is observed in the default c172p and in the c182 that the&lt;br /&gt;
EGT reads toward the high end of the scale under all conditions,&lt;br /&gt;
including idle.  This is unrealistic.&lt;br /&gt;
&lt;br /&gt;
Also, the EGT reads ''off-scale'' high under high-power conditions.&lt;br /&gt;
&lt;br /&gt;
==== Flags missing from instruments. ====&lt;br /&gt;
&lt;br /&gt;
Some of the standard instruments lack status flags.  For example,&lt;br /&gt;
the GS needle goes to  mid-scale if there is no valid signal.  That'll kill you for sure.  Reportedly the hi-res instruments implement flags, but the lo-res ones don't.  Many aircraft are using the lo-res instruments.&lt;br /&gt;
&lt;br /&gt;
Either the aircraft should be upgraded to use instruments that&lt;br /&gt;
display flags, or the instruments should be upgraded to be&lt;br /&gt;
display flags.&lt;br /&gt;
&lt;br /&gt;
==== Problems with --model-hz option. ====&lt;br /&gt;
&lt;br /&gt;
Specifying the --model-hz=10 command-line option results in the&lt;br /&gt;
following mess:&lt;br /&gt;
  Model Author:  Unknown&lt;br /&gt;
  Creation Date: 2002-01-01&lt;br /&gt;
  Description:   Cessna C-182RG&lt;br /&gt;
 Reading xml electrical system model from /games/cvs/data/Aircraft/c182/c182-electrical.xml&lt;br /&gt;
  Sorry, wdot doesn't appear to be trimmable&lt;br /&gt;
 Trim Failed&lt;br /&gt;
  Trim Results: &lt;br /&gt;
       Angle of Attack:   7.50  wdot:  3.21e+01 Tolerance: 1e-03  Failed&lt;br /&gt;
              Throttle:   0.50  udot:  0.00e+00 Tolerance: 1e-03  Passed&lt;br /&gt;
            Pitch Trim:   0.00  qdot: -5.44e-11 Tolerance: 1e-04  Passed&lt;br /&gt;
  Model Author:  Unknown&lt;br /&gt;
  Creation Date: 2002-01-01&lt;br /&gt;
  Description:   Cessna C-182RG&lt;br /&gt;
 altitude         = -1.18461e-41&lt;br /&gt;
 sea level radius = -4.87596e-42&lt;br /&gt;
 latitude         = 6.98923e-316&lt;br /&gt;
 longitude        = 6.79738e-313&lt;br /&gt;
 altitude         = -1.18461e-41&lt;br /&gt;
 sea level radius = -4.87596e-42&lt;br /&gt;
 latitude         = 6.98923e-316&lt;br /&gt;
 longitude        = 6.79738e-313&lt;br /&gt;
 altitude         = -1.18461e-41&lt;br /&gt;
 sea level radius = -4.87596e-42&lt;br /&gt;
 latitude         = 6.98923e-316&lt;br /&gt;
 longitude        = 6.79738e-313&lt;br /&gt;
 WWarning: catching up on tile delete queue&lt;br /&gt;
 Warning: catching up on tile delete queue&lt;br /&gt;
 Warning: catching up on tile delete queue&lt;br /&gt;
 Warning: catching up on tile delete queue&lt;br /&gt;
 Warning: catching up on tile delete queue&lt;br /&gt;
 Warning: catching up on tile delete queue&lt;br /&gt;
     [many repeats]&lt;br /&gt;
 Warning: catching up on tile delete queue&lt;br /&gt;
 Warning: catching up on tile delete queue&lt;br /&gt;
 altitude         = 9&lt;br /&gt;
 sea level radius = 4.62829e-268&lt;br /&gt;
 latitude         = 1.52075e-314&lt;br /&gt;
 longitude        = -0.0967923&lt;br /&gt;
 Warning: catching up on tile delete queue&lt;br /&gt;
 Warning: catching up on tile delete queue&lt;br /&gt;
 Warning: catching up on tile delete queue&lt;br /&gt;
 Warning: catching up on tile delete queue&lt;br /&gt;
 Warning: catching up on tile delete queue&lt;br /&gt;
 Warning: catching up on tile delete queue&lt;br /&gt;
 Warning: catching up on tile delete queue&lt;br /&gt;
 Warning: catching up on tile delete queue&lt;br /&gt;
 Warning: catching up on tile delete queue&lt;br /&gt;
 Warning: invalid line segment passed to IntersectVisitor::addLineSegment(..)&lt;br /&gt;
         nan nan nan -inf inf -inf segment ignored..&lt;br /&gt;
 altitude         = -1.18461e-41&lt;br /&gt;
 sea level radius = -4.87596e-42&lt;br /&gt;
 latitude         = 6.98923e-316&lt;br /&gt;
 longitude        = 6.79738e-313&lt;br /&gt;
 Warning: invalid line segment passed to IntersectVisitor::addLineSegment(..)&lt;br /&gt;
         nan nan nan -inf inf -inf segment ignored..&lt;br /&gt;
 altitude         = -1.18461e-41&lt;br /&gt;
 sea level radius = -4.87596e-42&lt;br /&gt;
 latitude         = 6.98923e-316&lt;br /&gt;
 longitude        = 6.79738e-313&lt;br /&gt;
 Warning: invalid line segment passed to IntersectVisitor::addLineSegment(..)&lt;br /&gt;
         nan nan nan -inf inf -inf segment ignored..&lt;br /&gt;
 altitude         = -1.18461e-41&lt;br /&gt;
 sea level radius = -4.87596e-42&lt;br /&gt;
 latitude         = 6.98923e-316&lt;br /&gt;
 longitude        = 6.79738e-313&lt;br /&gt;
 Warning: invalid line segment passed to IntersectVisitor::addLineSegment(..)&lt;br /&gt;
         nan nan nan -inf inf -inf segment ignored..&lt;br /&gt;
 altitude         = -1.18461e-41&lt;br /&gt;
 sea level radius = -4.87596e-42&lt;br /&gt;
 latitude         = 6.98923e-316&lt;br /&gt;
 longitude        = 6.79738e-313&lt;br /&gt;
 Warning: invalid line segment passed to IntersectVisitor::addLineSegment(..)&lt;br /&gt;
         nan nan nan -inf inf -inf segment ignored..&lt;br /&gt;
 altitude         = nan&lt;br /&gt;
 sea level radius = nan&lt;br /&gt;
 latitude         = nan&lt;br /&gt;
 longitude        = nan&lt;br /&gt;
&lt;br /&gt;
and so forth.&lt;br /&gt;
&lt;br /&gt;
==== CPU hogging. ====&lt;br /&gt;
&lt;br /&gt;
The fsgs program will happily eat up &amp;gt;98% of the cpu cycles,&lt;br /&gt;
even when the simulator is paused.  That seems excessive,&lt;br /&gt;
particularly during pause.  This is on a 2GHz machine&lt;br /&gt;
with hardware acceleration.  As a point of reference, &lt;br /&gt;
glxgears uses only a fraction of one percent of the cpu.&lt;br /&gt;
&lt;br /&gt;
* This is an effect of the render-as-fast-as-you-can approach taken by FlightGear. Presumably the user still wants to be able to interact with the graphics when the simulator is paused. Activating sync to VBLANK might give the desired result  if the cpu is fast enough to have time over between the frames. (Since most of the work in glxgear is done by the GPU it can much easier saturate the GPU with little CPU effort than FlightGear can.)&lt;br /&gt;
&lt;br /&gt;
==== Misdirected diagnostic in JSBSim.cxx ====&lt;br /&gt;
&lt;br /&gt;
The file JSBSim.cxx contains the following code:&lt;br /&gt;
&lt;br /&gt;
    if (!cache_ok) {&lt;br /&gt;
      SG_LOG(SG_FLIGHT, SG_WARN,&lt;br /&gt;
             &amp;quot;FGInterface is being called without scenery below the aircraft!&amp;quot;);&lt;br /&gt;
      cout &amp;lt;&amp;lt; &amp;quot;altitude         = &amp;quot; &amp;lt;&amp;lt; alt &amp;lt;&amp;lt; endl;&lt;br /&gt;
      cout &amp;lt;&amp;lt; &amp;quot;sea level radius = &amp;quot; &amp;lt;&amp;lt; slr &amp;lt;&amp;lt; endl;&lt;br /&gt;
      cout &amp;lt;&amp;lt; &amp;quot;latitude         = &amp;quot; &amp;lt;&amp;lt; lat &amp;lt;&amp;lt; endl;&lt;br /&gt;
      cout &amp;lt;&amp;lt; &amp;quot;longitude        = &amp;quot; &amp;lt;&amp;lt; lon &amp;lt;&amp;lt; endl;&lt;br /&gt;
      //return;&lt;br /&gt;
    }&lt;br /&gt;
&lt;br /&gt;
Apparently this &amp;quot;ought&amp;quot; to be a five-line diagnostic message.  &lt;br /&gt;
&lt;br /&gt;
In fact, the first line is directed to the SG_LOG at priority SG_WARN, &lt;br /&gt;
while the other four lines are directed to cout regardless of &lt;br /&gt;
priority.  This makes both the log and the console record hard &lt;br /&gt;
to interpret.&lt;br /&gt;
&lt;br /&gt;
This is one of many bugs that have been fixed in the [[http://jsbsim.sourceforge.net/ SF CVS]] version of JSBSim&lt;br /&gt;
but not pulled into the FG version.&lt;br /&gt;
&lt;br /&gt;
==== Out-of-bounds array reference in JSBSim ====&lt;br /&gt;
&lt;br /&gt;
This is in the interpolation table code.&lt;br /&gt;
&lt;br /&gt;
This is one of many bugs that have been fixed in the [[http://jsbsim.sourceforge.net/ SF CVS]] version of JSBSim&lt;br /&gt;
&lt;br /&gt;
==== Memory leak in JSBSim ====&lt;br /&gt;
&lt;br /&gt;
This is in the &amp;quot;message&amp;quot; handling code.&lt;br /&gt;
&lt;br /&gt;
This is one of many bugs that have been fixed in the [[http://jsbsim.sourceforge.net/ SF CVS]] version of JSBSim&lt;br /&gt;
&lt;br /&gt;
==== Glideslope service volume. ====&lt;br /&gt;
&lt;br /&gt;
The code in navradio.cxx appears to assume the glideslope&lt;br /&gt;
service volume is the same as the localizer service&lt;br /&gt;
volume.  This is quite unrealistic.&lt;br /&gt;
&lt;br /&gt;
==== Extended service volume. ====&lt;br /&gt;
&lt;br /&gt;
In some parts of the world, a goodly fraction of the&lt;br /&gt;
localizers have an expanded service volume (ESV),&lt;br /&gt;
often quite a bit larger than the standard service&lt;br /&gt;
volume you see in the AIM.  The code in navradio.cxx&lt;br /&gt;
was ignoring the service volume information in the&lt;br /&gt;
database and wrongly assuming the default values&lt;br /&gt;
applied everywhere.  Code to fix the range-related&lt;br /&gt;
part of the problem has been offered&lt;br /&gt;
but not yet incorporated.&lt;br /&gt;
&lt;br /&gt;
==== Other service volume issues. ====&lt;br /&gt;
&lt;br /&gt;
The code  in navradio.cxx has no understanding of how &lt;br /&gt;
'''azimuth''' affects the&lt;br /&gt;
localizer.  There is more to the story than reception range.&lt;br /&gt;
It is perfectly possible to be outside the LOC service volume &lt;br /&gt;
for reasons having to do with azimuth, not range.  &lt;br /&gt;
&lt;br /&gt;
Good ident will be heard, but false localizer courses will &lt;br /&gt;
cause serious trouble for the unwary pilot.&lt;br /&gt;
&lt;br /&gt;
A patch to fix this (along with the ESV issue) has been &lt;br /&gt;
offered, but ignored.&lt;br /&gt;
&lt;br /&gt;
There are also azimuthal issues with the /glideslope/&lt;br /&gt;
service volume.  This has not yet been patched.&lt;br /&gt;
&lt;br /&gt;
==== Menu buttons having a get-together. ====&lt;br /&gt;
&lt;br /&gt;
This concerns &amp;quot;radio buttons&amp;quot; on menus, such as on the &lt;br /&gt;
location-in-air popup and elsewhere.  By definition, it should be &lt;br /&gt;
impossible to have more than one radio button pushed down at a time.&lt;br /&gt;
However, illegal situations of this sort can be created&lt;br /&gt;
using a click-and-drag gesture.  Aim at&lt;br /&gt;
a radio button, hold the mouse-button down, and drag ...&lt;br /&gt;
as if you wanted to drag the radio button to a new location.&lt;br /&gt;
This allows you to set a radio button without the others&lt;br /&gt;
being unset.  If you persist, you can have every one of&lt;br /&gt;
the buttons in the pushed-down state at the same time.&lt;br /&gt;
&lt;br /&gt;
Before you say, &amp;quot;well, don't do that then&amp;quot; or &amp;quot;garbage in,&lt;br /&gt;
garbage out&amp;quot;, let me point out that it is possible for&lt;br /&gt;
a pilot to inadvertently make a tiny dragging gesture&lt;br /&gt;
when intending only a click.  Also, when the desired&lt;br /&gt;
button is in the pushed-down state, it is easy to not&lt;br /&gt;
notice that other buttons are in the undesired state.&lt;br /&gt;
&lt;br /&gt;
==== Altimeter setting unreadable. ====&lt;br /&gt;
&lt;br /&gt;
The standard altimeter (used by the default c172p aircraft&lt;br /&gt;
and many others) had been using an unhappy hodgepodge of&lt;br /&gt;
layers.  The analog Kollsman window was unusable, because&lt;br /&gt;
it was unlabeled, and the digital altimeter setting was&lt;br /&gt;
unusable, especially at altitudes near 2500 feet, partly &lt;br /&gt;
from being behind the needle.  On a real altimeter, things&lt;br /&gt;
are positioned so that cannot happen.&lt;br /&gt;
&lt;br /&gt;
Fixing this requires using a more suitable font, moving&lt;br /&gt;
the digits over, and getting rid of conflicting extraneous&lt;br /&gt;
markings.&lt;br /&gt;
&lt;br /&gt;
A patch to implement this fix has been offered.&lt;br /&gt;
&lt;br /&gt;
==== Broken startup banner. ====&lt;br /&gt;
&lt;br /&gt;
On startup, the simulator prints Author: Unknown and&lt;br /&gt;
prints a bogus Date, even when an author and a date&lt;br /&gt;
have been specified in the *-set.xml file.  Apparently&lt;br /&gt;
the code is having trouble reading elements from&lt;br /&gt;
the file.  This has been observed on a wide variety &lt;br /&gt;
of aircraft.&lt;br /&gt;
&lt;br /&gt;
==== Memory mismanagement in subsystem_mgr. ====&lt;br /&gt;
&lt;br /&gt;
It is bad luck to apply &amp;quot;delete&amp;quot; to an object that was not&lt;br /&gt;
created with &amp;quot;new&amp;quot; ... as in line 219 of subsystem_mgr.cxx&lt;br /&gt;
&lt;br /&gt;
A patch is available, but has not been incorporated.&lt;br /&gt;
&lt;br /&gt;
==== Yet more memory mismanagement. ====&lt;br /&gt;
&lt;br /&gt;
When FG is trying to exit, it is very likely to abort&lt;br /&gt;
with a message such as&lt;br /&gt;
&lt;br /&gt;
  *** glibc detected *** double free or corruption (!prev): 0x0ad08b88 ***&lt;br /&gt;
&lt;br /&gt;
There are at least three different instances of this bug,&lt;br /&gt;
each producing a different traceback.  Here is one such&lt;br /&gt;
traceback:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&lt;br /&gt;
#0  0xb7573947 in raise () from /lib/tls/libc.so.6&lt;br /&gt;
#1  0xb75750c9 in abort () from /lib/tls/libc.so.6&lt;br /&gt;
#2  0xb75a908a in __libc_message () from /lib/tls/libc.so.6&lt;br /&gt;
#3  0xb75b094f in _int_free () from /lib/tls/libc.so.6&lt;br /&gt;
#4  0xb75b09f2 in free () from /lib/tls/libc.so.6&lt;br /&gt;
#5  0xb77373b1 in operator delete () from /usr/lib/libstdc++.so.6&lt;br /&gt;
#6  0x085455db in ~SGPropertyNode (this=0xad08b88) at props.cxx:766&lt;br /&gt;
#7  0x08545597 in ~SGPropertyNode (this=0xace47e8) at ../../simgear/structure/SGSharedPtr.hxx:93&lt;br /&gt;
#8  0x08545597 in ~SGPropertyNode (this=0x86d7728) at ../../simgear/structure/SGSharedPtr.hxx:93&lt;br /&gt;
#9  0x080821d3 in ~FGGlobals (this=0x86d7598) at globals.cxx:105&lt;br /&gt;
#10 0x0805a969 in fgExitCleanup () at bootstrap.cxx:237&lt;br /&gt;
#11 0xb75764f0 in exit () from /lib/tls/libc.so.6&lt;br /&gt;
#12 0x080919c7 in fgExit (status=0) at util.cxx:120&lt;br /&gt;
#13 0x0806e452 in do_exit (arg=0xf186950) at fg_commands.cxx:224&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
== Missing Features and Traps for the Unwary ==&lt;br /&gt;
&lt;br /&gt;
==== Version number, please. ====&lt;br /&gt;
&lt;br /&gt;
It would be helpful to have an easy, documented way to ascertain the&lt;br /&gt;
version number.  A --version option on the command line would be&lt;br /&gt;
nice.  Maybe also a help::about menu item, for use while fgfs is&lt;br /&gt;
already running.&lt;br /&gt;
&lt;br /&gt;
One could imagine that info about key libraries would also be&lt;br /&gt;
helpful.&lt;br /&gt;
&lt;br /&gt;
==== Rabbits extinct. ====&lt;br /&gt;
&lt;br /&gt;
In the real world, many airports have '''sequenced flashers''' &lt;br /&gt;
(aka the rabbit) as part of the approach-light system.&lt;br /&gt;
&lt;br /&gt;
In the FlightGear world, the sequenced flashers are inoperative&lt;br /&gt;
everywhere.  Grepping through the code suggests that no attempt&lt;br /&gt;
has been made to implement this.&lt;br /&gt;
&lt;br /&gt;
==== No comm volume control. ====&lt;br /&gt;
&lt;br /&gt;
In many aircraft including the default c172p, the comm&lt;br /&gt;
radios have no volume control knob.  In other aircraft&lt;br /&gt;
including the pa24-250, there is such a knob, but it&lt;br /&gt;
apparently isn't clickable and apparently doesn't do &lt;br /&gt;
anything.  &lt;br /&gt;
&lt;br /&gt;
In contrast, the SenecaII exemplifies the ''desired'' behavior: &lt;br /&gt;
the knob rotates when clicked and &lt;br /&gt;
correctly controls the /instrumentation/comm[N]/volume&lt;br /&gt;
property.  (This alas has no effect on the volume of ATIS&lt;br /&gt;
audio, but that must be considered an ATIS bug not a&lt;br /&gt;
Seneca bug.)&lt;br /&gt;
&lt;br /&gt;
==== Incomplete Scenery. ====&lt;br /&gt;
&lt;br /&gt;
Installing scenery from the [http://fgfsdb.stockill.org/ Stockill Database ]  without installing the shared models, will get you messages such as the following:&lt;br /&gt;
&lt;br /&gt;
  Failed to open file .../data/Models/fgfsdb/localizer.xml&lt;br /&gt;
  Failed to open file .../data/Models/fgfsdb/WaterWorks30m.xml&lt;br /&gt;
  Failed to open file .../data/Models/fgfsdb/GenericStorageTank5m.xml&lt;br /&gt;
  Failed to open file .../data/Models/fgfsdb/GenericStorageTank10m.xml&lt;br /&gt;
  Failed to open file .../data/Models/fgfsdb/GenericStorageTank20m.xml&lt;br /&gt;
  Failed to open file .../data/Models/fgfsdb/GenericStorageTank30m.xml&lt;br /&gt;
&lt;br /&gt;
You might get only a few such messages, or you might get &lt;br /&gt;
screenful after screenful.&lt;br /&gt;
&lt;br /&gt;
So, make sure you download all scenery files that are needed for fgfs.&lt;br /&gt;
&lt;br /&gt;
This obviously counts as a trap for the unwary.&lt;br /&gt;
&lt;br /&gt;
- This is patently not a bug and should be moved to a &amp;quot;tips&amp;quot; section or similar.  The need to download the shared models is clearly stated (in big, bold, capitals no less) on the fgfsdb download page in a central position...&lt;br /&gt;
&lt;br /&gt;
==== ASOS and AWOS are AWOL. ====&lt;br /&gt;
&lt;br /&gt;
At many non-tower airports (and even some tower airports) there&lt;br /&gt;
is automatic weather reporting of some kind.&lt;br /&gt;
&lt;br /&gt;
It ought to be straightforward to implement this, as a slight&lt;br /&gt;
variation on the existing ATIS feature.&lt;br /&gt;
&lt;br /&gt;
==== Roundoff problems with textranslate step and scroll. ====&lt;br /&gt;
&lt;br /&gt;
The textranslate animation is delightful for 3D animation&lt;br /&gt;
of mechanical drum-type displays as on old-fashioned&lt;br /&gt;
odometers and Hobbs meters.&lt;br /&gt;
&lt;br /&gt;
It is not, however, a convenient way to implement digital&lt;br /&gt;
readouts.  It works OK for integers, but the code in &lt;br /&gt;
apply_mod() suffers from roundoff errors when dealing with decimal fractions, such as the &amp;quot;.1&amp;quot; in 122.1 MHz, particularly when the scroll-value is zero.&lt;br /&gt;
* One workaround is to stick to integers, e.g. integer kHz &lt;br /&gt;
rather than fractional MHz.&lt;br /&gt;
* Another workaround is to employ a small positive scroll value, step*1e-6 should suffice.&lt;br /&gt;
* A final option (with CVS) is to use the bias tag to let the code know how to&lt;br /&gt;
handle round-off.  Use a bias value of 1/2 your smallest step value, and &lt;br /&gt;
use the same bias value on all digits.&lt;br /&gt;
&lt;br /&gt;
What we really need is a whole new support routine for dealing&lt;br /&gt;
with 3D digital displays, something at least as nice as the&lt;br /&gt;
support for 2D instruments.&lt;br /&gt;
&lt;br /&gt;
== Fixed Bugs ==&lt;br /&gt;
&lt;br /&gt;
If the fix refers to a version number that hasn't been released yet, it means that the fix is in CVS (this makes life easier maintaining the page - status doesn't have to be changed each release).&lt;br /&gt;
&lt;br /&gt;
==== Linux and perhaps Windows crashes when specifiying --lon or --lat ====&lt;br /&gt;
&lt;br /&gt;
The 0.9.8 version of flightgear has an issue with starting coordinates that are lie on the boundary before tiles or coordinates.&lt;br /&gt;
&lt;br /&gt;
Workround: Specify the latitude as a slight offset to what you require. Eg instad of --lon=16 make it --lon=16.0001 The difference visually is next to nothing. :-)&lt;br /&gt;
&lt;br /&gt;
* '''This bug has not been observed in 0.9.10.'''&lt;br /&gt;
&lt;br /&gt;
==== 0.9.5 - 0.9.8 - Windows - Crash on start reporting &amp;quot;Could not gen source&amp;quot; ====&lt;br /&gt;
&lt;br /&gt;
Any further reports or stacktraces on this bug would be appreciated.&lt;br /&gt;
Workround: Launch two copies of FGFS in quick succession: one should work. You may need three.&lt;br /&gt;
Update your sound card drivers.&lt;br /&gt;
&lt;br /&gt;
* '''This bug has been fixed in 0.9.8a'''&lt;br /&gt;
&lt;br /&gt;
==== 0.9.7 - ? Linux - Joystick crash with correct config files ====&lt;br /&gt;
&lt;br /&gt;
Workround: Comment out any unused axes (and, possibly buttons) in the config file - if your joystick has 3 axes, comment out axes 4 through end.&lt;br /&gt;
&lt;br /&gt;
* ''' This bug has been fixed.'''&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
==== Individual Aircraft ====&lt;br /&gt;
&lt;br /&gt;
Bugs associated with a particular aircraft should be listed&lt;br /&gt;
on the aircraft's [[Aircraft_Todo|ToDo]] page, not here.&lt;br /&gt;
&lt;br /&gt;
==== OpenSceneGraph ====&lt;br /&gt;
&lt;br /&gt;
There is a separate page for issues related to [[OpenSceneGraph]].&lt;/div&gt;</summary>
		<author><name>Ajmacleod</name></author>
	</entry>
	<entry>
		<id>https://wiki.flightgear.org/w/index.php?title=Soaring&amp;diff=3264</id>
		<title>Soaring</title>
		<link rel="alternate" type="text/html" href="https://wiki.flightgear.org/w/index.php?title=Soaring&amp;diff=3264"/>
		<updated>2007-01-20T19:46:30Z</updated>

		<summary type="html">&lt;p&gt;Ajmacleod: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;At this time no released version of FlightGear has any glider launching methods.  Working winch launches and even multiplayer aerotows have however been successfully tested, the code is in CVS now (see [[Doing_aerotow_over_the_net]]) and will be included in the next release.  If you cannot use CVS though, to go gliding you must start up in the air.  For an example of how to do this see the related article called [[Starting in the Air]], or see the start file for the Schweizer 2-33 (called sgs233-set.xml).&lt;br /&gt;
&lt;br /&gt;
Thermals and sinks are modeled, but they must be defined individually in a thermal scenario file.  To see how this is done it would be best to examine the file called data/AI/thermal_demo.xml, which sets up 11 thermals and 6 sinks around San Francisco Bay.  To learn more about AI scenarios in general, see the related article called [[AI Systems]].  Note that the thermals and sinks exist independently of FlightGear's weather system, so it's possible to have cloud layers that don't match your thermal heights.  To prevent this you may want to manually set the cloud layers to match your thermals.&lt;br /&gt;
&lt;br /&gt;
A very nice piece of add-on scenery for gliding in the Menden (EDLA) area is available [http://home.arcor.de/vollnhals-bremen/Arnsberg/Arnsberg.html], including the required AI scenario file containing thermals for that area.&lt;br /&gt;
&lt;br /&gt;
If you log on to a multiplayer server (server port 5002 only) while soaring, then your flight will be recorded at the FGTracker site, like this: [http://fgfs.i-net.hu/modules/fgtracker/?FUNCT=FLIGHT&amp;amp;FLIGHTID=1305&amp;amp;PHPSESSID=b3f9752f0f47468b0df49303e806c288], which makes flight review a snap.&lt;/div&gt;</summary>
		<author><name>Ajmacleod</name></author>
	</entry>
</feed>