I really love this plane, and the F-14 in FlightGear is quite good, but I wasn't satisfied with its HUD. I think it is incomplete, too little information. My aim was to do a more complete HUD, with the information I like to see, even if it isn't realistic (not similar to the original). My inspiration are the real HUDs of F-14B and F-14D, but on internet I could find only few information about them. Furthermore, from what I learnt about the XML HUD in FlightGear, it obviously has only preset instuments, and it's not possible to do everything (for example the circular gauges of F-14B).
So, this is my HUD (two images were better, but I hadn't where to share them now):
- In TO (Take Off) and LDG (Landing) modes it shows the same information; in CRUISE, A/A (Air to Air) and A/G (Air to Ground) modes it shows the same information
- In TO and LDG modes it shows: on the left hand side the vertical speed tape (1000ft/min, bullet style), and the air speed box (KIAS) on the top; on the right hand side the radar altitude tape (bullet style, marked with a "R"), and the altitude box (indacated altitude) on the top.
- In CRUISE, AA, AG modes it shows: on the left hand side the airspeed tape (line style); on the right hand side the altitude tape (line style), and at the bottom the radar altitude box (marked with a "R").
In all modes:
- - AoA (Angle of Attack, marked with "a", it seems that FlightGear doesn't support unicode in HUD, I wasn't able to show the Alpha symbol 03B1)
- Mach Number ("M")
- G Load ("G")
In the bottom line, left:
- - G: Gear
- F1/F10: Flaps level
- A1/A10: Airbrakes level
- H: Hook
- - A: APC activated (Approach Power Compensator = Auto Throttle)
- D0/D10: DLC activated, and its level (Direct Lift Control)
- S: Ground Spoilers armed
- HUD MODE: {"to", "cr", "aa", "ag", "ld"}
The radar altimeter stops working at 5,000 ft.
This is the code for the new "f-14b\Hud\F-14.xml" file:
- Code: Select all
<?xml version="1.0"?>
<PropertyList>
<enable3d>true</enable3d>
<!--Central cross-->
<label>
<name>Central cross</name>
<x>0</x>
<y>-45</y>
<height>10</height>
<format>+</format>
</label>
<!--Pitch Ladder-->
<ladder>
<name>Pitch Ladder</name>
<type>pitch</type>
<x>-10</x>
<y>-25</y>
<width>20</width>
<height>50</height>
<roll-input>
<property>/orientation/roll-deg</property>
</roll-input>
<pitch-input>
<property>/orientation/pitch-deg</property>
</pitch-input>
<compression-factor>11.375</compression-factor>
<display-span>14.0</display-span>
<divisions>5.0</divisions>
<screen-hole>0</screen-hole>
<lbl-pos>0</lbl-pos>
<enable-fuselage-ref-line>false</enable-fuselage-ref-line>
<enable-target-spot>false</enable-target-spot>
<enable-velocity-vector>true</enable-velocity-vector>
<enable-drift-marker>false</enable-drift-marker>
<enable-alpha-bracket>true</enable-alpha-bracket>
<enable-energy-marker>false</enable-energy-marker>
<enable-climb-dive-marker>false</enable-climb-dive-marker>
<enable-glide-slope-marker>false</enable-glide-slope-marker>
<glide-slope>0.0</glide-slope>
<enable-energy-worm>false</enable-energy-worm>
<enable-waypoint-marker>true</enable-waypoint-marker>
<zero-bar-overlength>150</zero-bar-overlength>
<enable-zenith>true</enable-zenith>
<enable-nadir>true</enable-nadir>
</ladder>
<!--Heading-->
<tape>
<name>Heading</name>
<x>-70</x>
<y>30</y>
<width>140</width>
<height>-7</height>
<input>
<property>orientation/heading-magnetic-deg</property>
</input>
<modulo>360</modulo>
<major-divisions>10</major-divisions>
<minor-divisions>5</minor-divisions>
<display-span>40</display-span>
<option>top</option>
<label-gap-width>16</label-gap-width>
<tick-bottom>false</tick-bottom>
<tick-top>false</tick-top>
<tick-right>false</tick-right>
<tick-left>false</tick-left>
<cap-bottom>false</cap-bottom>
<cap-top>false</cap-top>
<cap-right>false</cap-right>
<cap-left>false</cap-left>
<marker-offset>-5</marker-offset>
<enable-pointer>true</enable-pointer>
<pointer-type>fixed</pointer-type>
<tick-type>line</tick-type>
<tick-length>variable</tick-length>
<format>%1.0f</format>
</tape>
<!--Heading number -->
<label>
<name>Heading number</name>
<x>-9</x>
<y>11</y>
<width>18</width>
<height>10</height>
<input>
<property>orientation/heading-magnetic-deg</property>
</input>
<box>true</box>
<option>center</option>
<format>%3.0f</format>
</label>
<!--Altitude tape (cruise, aa, ag)-->
<tape>
<name>Altitude (cruise, aa, ag)</name>
<condition>
<or>
<property>sim/model/f-14b/controls/pilots-displays/mode/cruise-bt</property>
<property>sim/model/f-14b/controls/pilots-displays/mode/aa-bt</property>
<property>sim/model/f-14b/controls/pilots-displays/mode/ag-bt</property>
</or>
</condition>
<input>
<property>/instrumentation/altimeter/indicated-altitude-ft</property>
<min>0</min>
<factor>0.001</factor>
</input>
<x>44</x>
<y>-85</y>
<width>10</width>
<height>90</height>
<option>vertical</option>
<option>right</option>
<label-gap-width>7</label-gap-width>
<major-divisions>0.500</major-divisions>
<minor-divisions>0.100</minor-divisions>
<display-span>2.500</display-span>
<format>%0.1f</format>
<tick-bottom>false</tick-bottom>
<tick-top>false</tick-top>
<tick-right>false</tick-right>
<tick-left>false</tick-left>
<cap-bottom>false</cap-bottom>
<cap-top>false</cap-top>
<cap-right>false</cap-right>
<cap-left>false</cap-left>
<marker-offset>4</marker-offset>
<enable-pointer>true</enable-pointer>
<pointer-type>fixed</pointer-type>
<tick-type>line</tick-type>
<tick-length>variable</tick-length>
</tape>
<!--Altitude (cruise, aa, ag)-->
<label>
<name>Altitude (cruise, aa, ag)</name>
<condition>
<or>
<property>sim/model/f-14b/controls/pilots-displays/mode/cruise-bt</property>
<property>sim/model/f-14b/controls/pilots-displays/mode/aa-bt</property>
<property>sim/model/f-14b/controls/pilots-displays/mode/ag-bt</property>
</or>
</condition>
<input>
<property>/instrumentation/altimeter/indicated-altitude-ft</property>
<factor>0.1</factor>
</input>
<x>50</x>
<y>-45</y>
<width>28</width>
<height>10</height>
<halign>left</halign>
<format>%.0f0</format>
<box>true</box>
<option>left</option>
<pointer-width>10</pointer-width>
<pointer-length>5</pointer-length>
</label>
<!--Altitude, top (to, ldg)-->
<label>
<name>Altitude, top (to, ldg)</name>
<condition>
<or>
<property>sim/model/f-14b/controls/pilots-displays/mode/to-bt</property>
<property>sim/model/f-14b/controls/pilots-displays/mode/ldg-bt</property>
</or>
</condition>
<input>
<property>/instrumentation/altimeter/indicated-altitude-ft</property>
<factor>0.1</factor>
</input>
<x>50</x>
<y>-2</y>
<width>28</width>
<height>10</height>
<halign>left</halign>
<format>%.0f0</format>
<box>true</box>
</label>
<!--Radar Altitude, bottom (cruise, aa, ag)-->
<label>
<name>Radar Altitude, bottom (cruise, aa, ag)</name>
<condition>
<and>
<or>
<property>sim/model/f-14b/controls/pilots-displays/mode/cruise-bt</property>
<property>sim/model/f-14b/controls/pilots-displays/mode/aa-bt</property>
<property>sim/model/f-14b/controls/pilots-displays/mode/ag-bt</property>
</or>
<less-than>
<property>/position/altitude-agl-ft</property>
<value>5000</value>
</less-than>
</and>
</condition>
<input>
<property>/position/altitude-agl-ft</property>
<factor>0.1</factor>
</input>
<x>50</x>
<y>-95</y>
<width>28</width>
<height>10</height>
<halign>left</halign>
<format>%.0f0</format>
<box>true</box>
<enable-pointer>false</enable-pointer>
</label>
<!--Radar Altitude label 'R', bottom (cruise, aa, ag)-->
<label>
<name>Radar Altitude label 'R', bottom (cruise, aa, ag)</name>
<condition>
<and>
<or>
<property>sim/model/f-14b/controls/pilots-displays/mode/cruise-bt</property>
<property>sim/model/f-14b/controls/pilots-displays/mode/aa-bt</property>
<property>sim/model/f-14b/controls/pilots-displays/mode/ag-bt</property>
</or>
<less-than>
<property>/position/altitude-agl-ft</property>
<value>5000</value>
</less-than>
</and>
</condition>
<x>42</x>
<y>-95</y>
<width>1</width>
<height>10</height>
<halign>left</halign>
<format>R</format>
<box>false</box>
<option>left</option>
</label>
<!--Radar Altitude tape (to, ldg)-->
<tape>
<name>Radar Altitude tape (to, ldg)</name>
<condition>
<and>
<or>
<property>sim/model/f-14b/controls/pilots-displays/mode/to-bt</property>
<property>sim/model/f-14b/controls/pilots-displays/mode/ldg-bt</property>
</or>
<less-than>
<property>/position/altitude-agl-ft</property>
<value>5000</value>
</less-than>
</and>
</condition>
<input>
<property>/position/altitude-agl-ft</property>
<factor>0.001</factor>
<max>5</max>
<min>0.0</min>
</input>
<x>44</x>
<y>-75</y>
<width>10</width>
<height>70</height>
<option>vertical</option>
<option>right</option>
<label-gap-width>8</label-gap-width>
<major-divisions>1.0</major-divisions>
<minor-divisions>0.2</minor-divisions>
<display-span>2.5</display-span>
<format>%1.0f</format>
<tick-bottom>false</tick-bottom>
<tick-top>false</tick-top>
<tick-right>false</tick-right>
<tick-left>false</tick-left>
<cap-bottom>false</cap-bottom>
<cap-top>false</cap-top>
<cap-right>false</cap-right>
<cap-left>false</cap-left>
<marker-offset>4</marker-offset>
<enable-pointer>true</enable-pointer>
<pointer-type>fixed</pointer-type>
<tick-type>bullet</tick-type>
</tape>
<!--Radar Altitude (to, ldg)-->
<label>
<name>Radar Altitude (to, ldg)</name>
<condition>
<and>
<or>
<property>sim/model/f-14b/controls/pilots-displays/mode/to-bt</property>
<property>sim/model/f-14b/controls/pilots-displays/mode/ldg-bt</property>
</or>
<less-than>
<property>/position/altitude-agl-ft</property>
<value>5000</value>
</less-than>
</and>
</condition>
<input>
<property>/position/altitude-agl-ft</property>
<factor>0.1</factor>
</input>
<x>50</x>
<y>-45</y>
<width>28</width>
<height>10</height>
<halign>left</halign>
<format>%.0f0</format>
<box>true</box>
<enable-pointer>true</enable-pointer>
<option>left</option>
<pointer-width>10</pointer-width>
<pointer-length>5</pointer-length>
</label>
<!--Radar Altitude label 'R' (to, ldg)-->
<label>
<name>Radar Altitude label 'R' (to, ldg)</name>
<condition>
<or>
<property>sim/model/f-14b/controls/pilots-displays/mode/to-bt</property>
<property>sim/model/f-14b/controls/pilots-displays/mode/ldg-bt</property>
</or>
</condition>
<x>32</x>
<y>-45</y>
<width>1</width>
<height>10</height>
<halign>left</halign>
<format>R</format>
<box>false</box>
<option>left</option>
</label>
<!--KIAS tape (cruise, aa, ag)-->
<tape>
<name>KIAS tape (cruise, aa, ag)</name>
<condition>
<or>
<property>sim/model/f-14b/controls/pilots-displays/mode/cruise-bt</property>
<property>sim/model/f-14b/controls/pilots-displays/mode/aa-bt</property>
<property>sim/model/f-14b/controls/pilots-displays/mode/ag-bt</property>
</or>
</condition>
<input>
<property>/velocities/airspeed-kt</property>
<min>0.0</min>
<factor>1</factor>
</input>
<x>-56</x>
<y>-85</y>
<width>10</width>
<height>90</height>
<option>vertical</option>
<option>left</option>
<label-gap-width>7</label-gap-width>
<major-divisions>50</major-divisions>
<minor-divisions>10</minor-divisions>
<display-span>250</display-span>
<tick-bottom>false</tick-bottom>
<tick-top>false</tick-top>
<tick-right>false</tick-right>
<tick-left>false</tick-left>
<cap-bottom>false</cap-bottom>
<cap-top>false</cap-top>
<cap-right>false</cap-right>
<cap-left>false</cap-left>
<marker-offset>4</marker-offset>
<enable-pointer>true</enable-pointer>
<pointer-type>fixed</pointer-type>
<tick-type>line</tick-type>
<tick-length>variable</tick-length>
</tape>
<!--KIAS speed (cruise, aa, ag)-->
<label>
<name>KIAS speed (cruise, aa, ag)</name>
<condition>
<or>
<property>sim/model/f-14b/controls/pilots-displays/mode/cruise-bt</property>
<property>sim/model/f-14b/controls/pilots-displays/mode/aa-bt</property>
<property>sim/model/f-14b/controls/pilots-displays/mode/ag-bt</property>
</or>
</condition>
<x>-75</x>
<y>-45</y>
<width>22</width>
<height>10</height>
<halign>right</halign>
<format>%4.0f</format>
<box>true</box>
<option>right</option>
<pointer-width>10</pointer-width>
<pointer-length>5</pointer-length>
<input>
<property>/velocities/airspeed-kt</property>
</input>
</label>
<!--KIAS speed, top (to, ldg)-->
<label>
<name>KIAS speed, top (to, ldg)</name>
<condition>
<or>
<property>sim/model/f-14b/controls/pilots-displays/mode/to-bt</property>
<property>sim/model/f-14b/controls/pilots-displays/mode/ldg-bt</property>
</or>
</condition>
<x>-75</x>
<y>-2</y>
<width>22</width>
<height>10</height>
<halign>right</halign>
<format>%4.0f</format>
<box>true</box>
<input>
<property>/velocities/airspeed-kt</property>
</input>
</label>
<!--Vertical speed (1000 ft per minute) (to, ldg)-->
<tape>
<name>Vertical speed (1000 ft per minute) (to, ldg)</name>
<condition>
<or>
<property>sim/model/f-14b/controls/pilots-displays/mode/to-bt</property>
<property>sim/model/f-14b/controls/pilots-displays/mode/ldg-bt</property>
</or>
</condition>
<input>
<property>velocities/vertical-speed-fps</property>
<factor>0.06</factor>
</input>
<x>-70</x>
<y>-75</y>
<width>10</width>
<height>70</height>
<option>vertical</option>
<option>left</option>
<label-gap-width>0</label-gap-width>
<major-divisions>1.0</major-divisions>
<minor-divisions>0.5</minor-divisions>
<display-span>4.0</display-span>
<format>%1.0f</format>
<tick-bottom>false</tick-bottom>
<tick-top>false</tick-top>
<tick-right>false</tick-right>
<tick-left>false</tick-left>
<cap-bottom>false</cap-bottom>
<cap-top>false</cap-top>
<cap-right>false</cap-right>
<cap-left>false</cap-left>
<marker-offset>10</marker-offset>
<enable-pointer>true</enable-pointer>
<pointer-type>fixed</pointer-type>
<tick-type>bullet</tick-type>
</tape>
<!--Turn Bank Indicator-->
<turn-bank-indicator>
<name>Turn Bank Indicator</name>
<x>-40</x>
<y>-80</y>
<width>80</width>
<height>80</height>
<bank-input>
<property>/orientation/roll-deg</property>
</bank-input>
<sideslip-input>
<property>/orientation/side-slip-deg</property>
</sideslip-input>
<bank-scale>true</bank-scale>
<option>bottom</option>
</turn-bank-indicator>
<!--AoA-->
<label>
<name>AoA lbl</name>
<x>-70</x>
<y>-90</y>
<format>a</format>
<halign>left</halign>
</label>
<label>
<name>AoA</name>
<x>-40</x>
<y>-90</y>
<width>1</width>
<height>1</height>
<halign>right</halign>
<format>%3.1f</format>
<input>
<property>orientation/alpha-deg</property>
</input>
</label>
<!--MACH Number-->
<label>
<name>MACH Number lbl</name>
<x>-70</x>
<y>-100</y>
<format>M</format>
<halign>left</halign>
</label>
<label>
<name>MACH Number</name>
<x>-40</x>
<y>-100</y>
<width>1</width>
<height>1</height>
<input>
<property>/velocities/mach</property>
</input>
<format>%4.2f</format>
<halign>right</halign>
</label>
<!--G Load-->
<label>
<name>G Load</name>
<x>-70</x>
<y>-110</y>
<format>G</format>
<halign>left</halign>
</label>
<label>
<name>G Load</name>
<x>-40</x>
<y>-110</y>
<width>1</width>
<height>1</height>
<input>
<property>/accelerations/pilot/z-accel-fps_sec</property>
<factor>-0.03108095</factor>
<damp>1.0</damp>
</input>
<format>%2.1f</format>
<halign>right</halign>
</label>
<!--Gear-->
<label>
<name>Gear</name>
<condition>
<equals>
<property>/controls/gear/gear-down</property>
<value>true</value>
</equals>
</condition>
<x>-70</x>
<y>-125</y>
<format>G</format>
<halign>left</halign>
</label>
<!--Flaps-->
<label>
<name>Flaps</name>
<condition>
<not-equals>
<property>/surface-positions/flap-pos-norm</property>
<value>0</value>
</not-equals>
</condition>
<input>
<property>/surface-positions/flap-pos-norm</property>
<factor>10</factor>
</input>
<x>-60</x>
<y>-125</y>
<format>F%1.0f</format>
<halign>left</halign>
</label>
<!--Airbrake-->
<label>
<name>Airbrake</name>
<condition>
<not-equals>
<property>/surface-positions/speedbrake-pos-norm</property>
<value>0</value>
</not-equals>
</condition>
<input>
<property>/surface-positions/speedbrake-pos-norm</property>
<factor>10</factor>
</input>
<x>-40</x>
<y>-125</y>
<format>A%1.0f</format>
<halign>left</halign>
</label>
<!--Hook-->
<label>
<name>Hook</name>
<condition>
<greater-than>
<property>/gear/tailhook/position-norm</property>
<value>0.1</value>
</greater-than>
</condition>
<x>-20</x>
<y>-125</y>
<format>H</format>
<halign>left</halign>
</label>
<!-- F-14 specific information -->
<!--APC - Approach Power Compensator (Auto Throttle)-->
<label>
<name>APC - Approach Power Compensator (Auto Throttle)</name>
<condition>
<equals>
<property>sim/model/f-14b/systems/apc/engaged</property>
<value>true</value>
</equals>
</condition>
<x>20</x>
<y>-125</y>
<format>A</format>
<halign>left</halign>
</label>
<!--DLC - Direct Lift Control-->
<label>
<name>DLC - Direct Lift Control</name>
<condition>
<equals>
<property>/controls/flight/DLC-engaged</property>
<value>true</value>
</equals>
</condition>
<input>
<property>/controls/flight/DLC</property>
<factor>10</factor>
</input>
<x>30</x>
<y>-125</y>
<format>D%1.0f</format>
<halign>left</halign>
</label>
<!--Ground Spoilers-->
<label>
<name>Ground Spoilers</name>
<condition>
<equals>
<property>/controls/flight/ground-spoilers-armed</property>
<value>true</value>
</equals>
</condition>
<x>50</x>
<y>-125</y>
<format>S</format>
<halign>left</halign>
</label>
<!--Hud mode: to,cr,aa,ag,ld-->
<label>
<name>Hud mode to</name>
<condition>
<property>sim/model/f-14b/controls/pilots-displays/mode/to-bt</property>
</condition>
<x>70</x>
<y>-125</y>
<halign>left</halign>
<format>to</format>
</label>
<label>
<name>Hud mode cr</name>
<condition>
<property>sim/model/f-14b/controls/pilots-displays/mode/cruise-bt</property>
</condition>
<x>70</x>
<y>-125</y>
<halign>left</halign>
<format>cr</format>
</label>
<label>
<name>Hud mode aa</name>
<condition>
<property>sim/model/f-14b/controls/pilots-displays/mode/aa-bt</property>
</condition>
<x>70</x>
<y>-125</y>
<halign>left</halign>
<format>aa</format>
</label>
<label>
<name>Hud mode ag</name>
<condition>
<property>sim/model/f-14b/controls/pilots-displays/mode/ag-bt</property>
</condition>
<x>70</x>
<y>-125</y>
<halign>left</halign>
<format>ag</format>
</label>
<label>
<name>Hud mode ld</name>
<condition>
<property>sim/model/f-14b/controls/pilots-displays/mode/ldg-bt</property>
</condition>
<x>70</x>
<y>-125</y>
<halign>left</halign>
<format>ld</format>
</label>
</PropertyList>
I also added the "m" key to cycle through the HUD Modes. To activate it you need to:
- add this code inside the section <input><keyboard> ... </input></keyboard> in "f-14b\f-14b-set.xml":
- Code: Select all
<key n="109">
<name>m</name>
<desc>Cycle hud mode</desc>
<binding>
<command>nasal</command>
<script>f14_hud.cycle_hud_mode();</script>
</binding>
</key>
- and add this code at the end of "f-14b\Nasal\hud.nas":
- Code: Select all
var cycle_hud_mode = func() {
var hud_to = getprop("/sim/model/f-14b/controls/pilots-displays/mode/to-bt");
var hud_cr = getprop("/sim/model/f-14b/controls/pilots-displays/mode/cruise-bt");
var hud_aa = getprop("/sim/model/f-14b/controls/pilots-displays/mode/aa-bt");
var hud_ag = getprop("/sim/model/f-14b/controls/pilots-displays/mode/ag-bt");
var hud_ld = getprop("/sim/model/f-14b/controls/pilots-displays/mode/ldg-bt");
if (hud_to) {
setprop("/sim/model/f-14b/controls/pilots-displays/mode/to-bt", "false");
setprop("/sim/model/f-14b/controls/pilots-displays/mode/cruise-bt", "true");
} else if (hud_cr) {
setprop("/sim/model/f-14b/controls/pilots-displays/mode/cruise-bt", "false");
setprop("/sim/model/f-14b/controls/pilots-displays/mode/aa-bt", "true");
} else if (hud_aa) {
setprop("/sim/model/f-14b/controls/pilots-displays/mode/aa-bt", "false");
setprop("/sim/model/f-14b/controls/pilots-displays/mode/ag-bt", "true");
} else if (hud_ag) {
setprop("/sim/model/f-14b/controls/pilots-displays/mode/ag-bt", "false");
setprop("/sim/model/f-14b/controls/pilots-displays/mode/ldg-bt", "true");
} else if (hud_ld) {
setprop("/sim/model/f-14b/controls/pilots-displays/mode/ldg-bt", "false");
setprop("/sim/model/f-14b/controls/pilots-displays/mode/to-bt", "true");
}
}
The code is free for any use. Any feedback is appreciated. If you improve it, let me know, please
Claudio "Cody"
[EDITED: 29/03/2014]
Finally, a few screenshots
Take Off mode:
Cruise mode:
Cruise mode, over 5000 ft:
Landing mode: