Howto:Animated jetways: Difference between revisions

First set of restyling modifications
(First set of restyling modifications)
Line 1: Line 1:
'''Animated jetways''' are dynamic {{Wikipedia|jetway|noicon=1}} models that connect to your aircraft when you are pulled up at a gate. [[FlightGear]] boasts the most advanced animated jetways in the flight simulator market, beating those of Microsoft Flight Simulator and X-plane in features — a testament to the flexibility of FlightGear. This article describes how to obtain and use the jetways and interface them with aircraft and scenery.
'''Animated jetways''' are dynamic {{Wikipedia|jetway}} models that connect to your aircraft when you are pulled up at a gate. [[FlightGear]] boasts the most advanced animated jetways in the flight simulator market, beating those of Microsoft Flight Simulator and X-Plane in features — a testament to the flexibility of FlightGear. This article describes how to obtain and use the jetways and interface them with aircraft and scenery.


== Current state (09/2015) ==
== Current state ==
At the moment only KSFO has this kind of jetways. see <code>Airports/K/S/F/KSFO.jetways.xml</code> using {{fgdata file|Models/Airport/Jetway/generic.xml|t=$FG_ROOT/Models/Airport/Jetway/generic.xml}}
As of September 2015, only the following airports have animated jetways.
 
generic.xml in fgdata is still broken, but there is a repaired Version in terrrasync: http://scenemodels.flightgear.org/app.php?c=Models&a=view&id=2211
 
== Future Development ==
{{FGCquote
|1= I don't know if anyone remembers the Nasal-based animated jetway code I wrote a few years ago, but I'd like to rewrite it as a clean-sheet C++ subsystem. I want to eliminate the truly atrocious Nasal hacks I used in the initial implementation and make the whole thing faster and more reliable. My objectives as of now are, 1) Implement a new FGJetwayManager subsystem to replace the existing code in jetways.nas. (I have not yet decided what to do with jetways_edit.nas - it might be fixed up instead of outright replaced.) 2) Streamline the jetway model files in fgdata. I want to do away with the generic.airline.<XYZ>.xml files because they're unnecessary clutter. The C++ code can deal with these cases. 3) As for the jetway definition files themselves (<airport>.jetways.xml), the only change I'd like to make is deprecating the "elevation-m" property for each jetway, which is currently relative to the surrounding scenery, including buildings and AI craft (due to the Nasal API). Instead, I propose fixing all jetways to the ground. Rationale: The current method is unreliable (see sunken jetways at KSFO) and I can't imagine a situation when you would need a floating jetway. 4) Performance optimiations - much of this would come from plain superior code, but I also plan to introduce a user preference for "jetway density." That is, you can choose to spawn between 0 to 100% of all jetways defined for an airport. This allows the user to reduce the overhead from rendering and animating all those jetway objects (which is probably the biggest bottleneck besides the current Nasal implementation). This is what FSX does. 5) Potential idea - integration with AI traffic. So that when AI airliners park at their gates, jetways will extend to meet them. The current Nasal code makes an attempt at this, but it's very hacky and unreliable. While I think this is a cool idea, I don't want to interfere with anyone's work on the AI subsystem. I would greatly appreciate any ideas and comments on my proposal, as well as some pointers and tips on getting started with core development. :-)
|2= {{cite web
  | url    = http://sourceforge.net/p/flightgear/mailman/message/34725917/
  | title  = <nowiki>[Flightgear-devel] Animated jet bridges redux</nowiki>
  | author = <nowiki>Ryan A Young</nowiki>
  | date  = Dec 29th, 2015
  }}
}}
 
== Obtaining and installing ==
 
Versions of FlightGear later than June 17, 2011 (so 2.4.0 and onwards) include the animated jetway system. Nothing extra has to be installed.
 
== Using the jetways ==
 
Start FlightGear in any animated jetway-compatible aircraft. Currently, these include the following:
* [[Boeing 717]] (separate download) (support available in Git)
* [[Boeing 747-8i]]
* [[Boeing 757-200]] and -300
* [[Boeing 767-300]]/ER
* [[Boeing 777-200ER]] (separate download)
* [[Bombardier CRJ700]]
 
Fly (or spawn) to any airport equipped with animated jetways. Ensure you have the latest scenery from [[TerraSync]], so you don't get conflicts between animated and static jetways! At the moment, the following airports are animated jetway-compatible:
* [[London Gatwick Airport]] (EGKK)*
* [[London Gatwick Airport]] (EGKK)*
* [[Amsterdam Airport Schiphol]] (EHAM)
* [[Amsterdam Airport Schiphol]] (EHAM)
Line 38: Line 9:
* [[San Francisco International Airport]] (KSFO)
* [[San Francisco International Airport]] (KSFO)
* Ted Stevens Anchorage International Airport (PANC)*
* Ted Stevens Anchorage International Airport (PANC)*
''<nowiki>*</nowiki> - Indicates the jetways for this airport were auto-converted and do not have gate numbers''
''<nowiki>*</nowiki> indicates the jetways for this airport were auto-converted and do not have gate numbers.''


You can tell if a jetway is animated by pressing Ctrl-C. If the polygons are highlighted in yellow, then it's animated.
The {{fgdata file|Models/Airport/Jetway/generic.xml|t=generic jetway model}} in FGData is broken, but there is [http://scenemodels.flightgear.org/app.php?c=Models&a=view&id=2211 a repaired version in the TerraSync scenery repository].


Taxi up to an animated jetway and park near it. Click it, and if your aircraft is supported and parked well enough, the jetway will extend, rotate, and connect.
== Obtaining and installing ==
FlightGear 2.4.0 and later include the animated jetway system. Nothing extra has to be installed.
 
== Using the jetways ==
# Start FlightGear in any animated jetway-compatible aircraft. As of May 2016, these include the following:
#* [[Boeing 717]]
#* [[Boeing 747-8i]]
#* [[Boeing 757-200]] and -300
#* [[Boeing 767-300]]/ER
#* [[Boeing 777-200ER]]
#* [[Bombardier CRJ700]]
# Fly (or spawn) to any airport equipped with animated jetways. You can tell if a jetway is animated by pressing {{key press|Ctrl|C}}; if the polygons are highlighted in yellow, then it is animated.
{{note|Ensure you have the latest scenery from [[TerraSync]] so you do not get conflicts between animated and static jetways.}}
<ol start="3">
<li>Taxi up to an animated jetway and park near it, then click it. If your aircraft is supported and parked well enough, the jetway will extend, rotate, and connect.</li>
</ol>


== Adding support in aircraft ==
== Adding support in aircraft ==
 
# Open up the main model of your aircraft in your favorite 3D modeling software (such as [[Blender]]).
Open up your aircraft's main model in your favorite 3d modeling software (the author prefers [[Blender]]). Move the model around to account for any offsets you have in the main model file. Then get the coordinates of the door.
# Move the model around to account for any offsets you have in the main model file, then get the coordinates of the door.
 
[[File:Animated-jetway-tutorial.jpg]]
[[File:Animated-jetway-tutorial.jpg]]
 
# Add the following code in your aircraft's -set.xml (remember to merge the tags properly):
Now add the following code in your aircraft's -set.xml (remember to merge the tags properly):
 
<syntaxhighlight language="xml">
<syntaxhighlight language="xml">
<sim>
<sim>
  <model>
<model>
  <door>
  <door>
    <position-x-m type="float">X-M</position-x-m>
  <position-x-m type="float">X-M</position-x-m>
    <position-y-m type="float">Y-M</position-y-m>
  <position-y-m type="float">Y-M</position-y-m>
    <position-z-m type="float">Z-M</position-z-m>
  <position-z-m type="float">Z-M</position-z-m>
    <jetway-hood-deg type="float">HOOD-DEG</jetway-hood-deg>
  <jetway-hood-deg type="float">HOOD-DEG</jetway-hood-deg>
  </door>
  </door>
  </model>
</model>
</sim>
</sim>
</syntaxhighlight>
</syntaxhighlight>
 
: where <tt>X-M</tt>, <tt>Y-M</tt>, and <tt>Z-M</tt> are the X/Y/Z coordinates of the door in meters and <tt>HOOD-DEG</tt> is the jetway hood rotation amount. To specify more doors, just add more door elements.
Where '''X-M''', '''Y-M''', and '''Z-M''' are the X/Y/Z coordinates of the door in meters and '''HOOD-DEG''' is the jetway hood rotation amount. To specify more doors, just add more door elements.
<ol start="4">
 
<li>Add the following code into your XML model file to enable the jetways to connect to your aircraft over the [[multiplayer]] network:</li>
Finally, add the following code into your XML model file. It enables the jetways to connect to your aircraft over the [[multiplayer]] network.
</ol>
 
<syntaxhighlight language="xml">
  <nasal>
  <nasal>
   <load>
   <load>
Line 78: Line 61:
   </load>
   </load>
  </nasal>
  </nasal>
 
</syntaxhighlight>
Again, replace '''X-M''', '''Y-M''', '''Z-M''', and '''HOOD-DEG''' with their respective values. To add more doors, duplicate the last 4 lines of [[Nasal]] code and replace <tt>[0]</tt> with <tt>[1]</tt> or <tt>[2]</tt>.
: Again, replace <tt>X-M</tt>, <tt>Y-M</tt>, <tt>Z-M</tt> and <tt>HOOD-DEG</tt> with their respective values. To add more doors, duplicate the last four lines of [[Nasal]] code and replace <tt>[0]</tt> with <tt>[1]</tt> or <tt>[2]</tt>.


=== Adding support in AI aircraft ===
=== Adding support in AI aircraft ===
Follow the steps for regular aircraft above, but only add in the Nasal code.
Follow the steps for regular aircraft above, but only add in the Nasal code.


Line 117: Line 99:


{{WIP}}
{{WIP}}
== Future Development ==
{{FGCquote
|1= I don't know if anyone remembers the Nasal-based animated jetway code I wrote a few years ago, but I'd like to rewrite it as a clean-sheet C++ subsystem. I want to eliminate the truly atrocious Nasal hacks I used in the initial implementation and make the whole thing faster and more reliable. My objectives as of now are, 1) Implement a new FGJetwayManager subsystem to replace the existing code in jetways.nas. (I have not yet decided what to do with jetways_edit.nas - it might be fixed up instead of outright replaced.) 2) Streamline the jetway model files in fgdata. I want to do away with the generic.airline.<XYZ>.xml files because they're unnecessary clutter. The C++ code can deal with these cases. 3) As for the jetway definition files themselves (<airport>.jetways.xml), the only change I'd like to make is deprecating the "elevation-m" property for each jetway, which is currently relative to the surrounding scenery, including buildings and AI craft (due to the Nasal API). Instead, I propose fixing all jetways to the ground. Rationale: The current method is unreliable (see sunken jetways at KSFO) and I can't imagine a situation when you would need a floating jetway. 4) Performance optimiations - much of this would come from plain superior code, but I also plan to introduce a user preference for "jetway density." That is, you can choose to spawn between 0 to 100% of all jetways defined for an airport. This allows the user to reduce the overhead from rendering and animating all those jetway objects (which is probably the biggest bottleneck besides the current Nasal implementation). This is what FSX does. 5) Potential idea - integration with AI traffic. So that when AI airliners park at their gates, jetways will extend to meet them. The current Nasal code makes an attempt at this, but it's very hacky and unreliable. While I think this is a cool idea, I don't want to interfere with anyone's work on the AI subsystem. I would greatly appreciate any ideas and comments on my proposal, as well as some pointers and tips on getting started with core development. :-)
|2= {{cite web
  | url    = http://sourceforge.net/p/flightgear/mailman/message/34725917/
  | title  = <nowiki>[Flightgear-devel] Animated jet bridges redux</nowiki>
  | author = <nowiki>Ryan A Young</nowiki>
  | date  = Dec 29th, 2015
  }}
}}


== Related content ==
== Related content ==
329

edits