FlightGear Newsletter September 2010
We would like to emphasize that the monthly newsletter can not live without the contributions of FlightGear users and developers. Everyone with a wiki account (free to register) can edit the newsletter and every contribution is welcome. So if you know about any FlightGear related projects such as for example updated scenery or aircraft, please do feel invited to add such news to the newsletter.
With lots of interesting developments going on, from sun-reflecting water, to an AI-route creator and from moveable heli pads to several new wiki articles, there was plenty to write about. I am proud to welcome you to the largest edition so far of the monthly FlightGear newsletter!
Local Weather v0.85
The version 0.85 (also on Git) of the Local Weather package is out - with new cloud types and textures and most importantly a significant performance gain over previous versions. There is a new menu to allow the user at runtime to specify cloud visual ranges, so that the impact on framerate can be adjusted to the situation.
The increased performance means that 3d clouds on fast systems can be rendered out to 45 km, and high altitude 2d cloud sheets sometimes up to 80 km - vastly improving the visual impression of the sky from airliner altitudes.
In addition, some bugs in the wind modelling and long-range weather patterns have been ironed out - with Flightgear 2.0.0, the package performs good in tests.
In the works:
- better hard-coded support for e.g. terrain sampling
- a METAR interface to use real-time weather and wind data
- full dynamics of the life cycle of convective clouds as they drift over the terrain
- and as always - improvements to cloud placement algorithms and cloud textures
A small feature gallery:
Weather supporting core code
The weather supporting core of FlightGear has been modified during the last weeks to better support new weather models like the above mentioned Local Weather system. Data flow between environment systems is now defined in XML config files using well known syntax and elements from the autopilot. Complex rules using predefined filters and arbitrary expressions can be defined without the need for C++ or Nasal coding. Along with this patch comes a unified weather settings dialog, combining previous dialogs for weather conditions, scenario, clouds and precipitation. Further plans are to integrate a new real world data source NWX, providing METAR, aloft and temperature at altitude.
Download & Compile script
For the Debian/Ubuntu users, an improvement to the download and compile. If svn/git compilation fails from latest revisions (generally caused by sources among different softwares not in sync) you can still compile and obtain the latest known compiling version using the -s switch.
Beware that this feature is under testing, but should work fine.
Some of the AI code has been revisited and tidied up, in a somewhat vain attempt to reduce the impact on frame rate. The facilities in Slaved Ballistic Objects, Wingmen, Ground Vehicles, and Escorts have been generalized. Now, any of these types can be subordinated, or parented, on any AI object which has a <name> tag. Thus, a wingman can be formated on a an AI Tanker, and can have a slaved droptank.
A Wingman can be formated on a Wingman to build larger formations, of which an example is shown by this video.
With careful choice of options and locations frame rates can be kept at a reasonable level. Analysis has shown that the tall pole in the tent is the code which measures Altitude Above Ground Level. This is known to be code that is heavy on framerate and which is used extensively in the AI code. It might be possible to get a cheaper, simpler version of this function which would improve the impact on framerate. Hopefully, this will be the next stage of development.
Further development of the Wingman concept will allow formations to break and reform as shown in this video. Subject to further testing and tuning this code should be available in Gitorious by early October.
AI FlightPlan Generator
This web-based tool lets you create the waypoint scripts for AI Traffic. In stead of looking up coordinates for every waypoint to add in a flightplan, you can scroll around the earth (Google Maps interface) and add waypoints from there. Every waypoint added will appear in a list of waypoints at the bottom of the screen, where the altitude, speed, on-ground, gear-down and flaps-down properties can be changed.
When the waypoint is finished, it can be exported to an XML code which then can be used in an AI Scenario.
The AI FlightPlan Generator can be found at this link.
Water shader improvements
Our all-time favourite shader-artist, Gral, picked up yet another project. This time it is something that covers over 70% of the entire scenery and is thus of great importance in a flight simulator: water. The new shader includes more realistic wave movements and much nicer sun "reflections". The extreme goal is to have real-time reflective water, which is still a long way to go, but with Gral's latest improvements we've at least made a step into the right direction. Transatlantic or Carribean flights have never been so exiting in FlightGear!
Based on Vivian Meazza's reflection shader and the bumpmap shader, Frederic Bouvier created a new shader, which merge both shader effects together. That means that we can have now bumpy surfaces which has reflections. The specular effect can be also controlled so that will gives us effects which has been used in commercial sims like MSFS since a while.
Improvements on the Urban Shader
The urban shader has been improved as well- building sides are now vertical. Thanks to Stuart for this improvement!
FlightGear, JSBSim, and SciCos/SciLab
James Goppert (an Aero Engineering graduate student at Purdue) has been doing some fascinating work using JSBSim integrated with SciCos, along with having added some new trimming algorithms and code to JSBSim. The Purdue Flight Dynamics and Control / Hybrid Systems Lab web page features an interesting demo video. You can also see the video directly on YouTube.
And here’s another video from James, ArduPilotMega Hardware in the Loop with SciCos/SciLab.
New MIL-STD Turbulence Model for JSBSim
Andreas Gaeb has added to JSBSim an initial release of the turbulence models from MILSTD-1797A and MIL-F-8785C as described in NASA Contractor Report NASA CR-1998-206937. Both the MILSTD and the Tustin transform versions are included.
To do a quick test, set the following properties:
which should give moderate turbulence conditions. Further options can be found in the documentation in the header file (FGAtmosphere.h) in the JSBSim source code distribution.
In early tests of the code, both turbulence versions were seen to give reasonable results for large aircraft. For RC model size aircraft, the MIL-STD version is reasonable as well, while the Tustin version tends to diverge.
JSBSim, and Matlab
Brian Mills and Agostino De Marco have been working at preparing a new release of a Matlab SFunction that wraps JSBSim.
Where the project is now:
- New release ready to compile and test for 32-bit Windows.
- Some bugs have been fixed (with a couple more to squash).
- Finally have some user documentation.
- The GUI and trim feature are now nicely integrated and the user experience is much better.
- The GUI is now tabbed/multi-paned and much more powerful.
- The project size is pared down considerably and the file duplication is gone.
- The Visual Studio project files have been fixed for better portability.
Where the project is going:
- FlightViz visualization tool is currently in work.
- Environmental parameters (winds, wind-shear etc) controlled by the GUI.
- Data plotting and initial trimmed control inputs prediction.
- Closed-loop PID stabilization for finding trim points.
- Improvements to trim function.
- Flight profile scripting controllable from the GUI.
- Linux compiled version.
- Improve the documentation.
- Author a white paper.
This gives an overall picture of the current and future scope of the project. The JSBSim SFunction should become a very useful tool for flight model development and research. Agostino is also working an a MEX file (Matlab Executable) that wraps JSBSim.
Nasal syntax highlighting file for Notepad++ users
In the hangar
"Pilot Penguin" and "nickyivyca" have begun work on the BAe-146. Pilot Penguin will be doing mostly 3D work, and nick will be doing mostly FDM and systems work.
Launch Vehicles: Jupiter J-246, and NASA Ares-1
Gérard has taken some NASA 3D models and prepared them for use with FlightGear. The historic Kennedy Space Center Launch Complex 39 3D model has been prepared, as well as the Ares-1 launch vehicle 3D model. Jon Berndt (JSBSim Project Development Coordinator) has built an approximate Ares-1 flight model based on publicly available information. Resting on the launch pad.]] Work is progressing on getting that flight model integrated with the 3D model.
Gérard has also fabricated a model of the notional DIRECT launch vehicle variant known as the "Jupiter" J-246, shown in this informational flyer. Jon has created an approximate flight model for this vehicle, as well.
Livery hangar reaches 300
Early September, the FlightGear Livery Database welcomed its 300th livery! It is a livery of the Polish Air Force's Lockheed C130, created by Maciej Zgódka, one of the latest additions to the painters-team. In the same time, the database was upgraded with a couple of new "features":
- thumbnails of liveries pop up when you hover over a link.
- a contact page was added, to ease contacting the database maintainer.
- each livery has a "Report this livery" button, through which visitors can notify the maintainer of a broken download, incorrect or unknown author, licensing issues etc.
I would like to emphasize that lots of liveries are not yet assigned an author. Please check for yourself if there is any unknown-author-livery of which you known/are the author. Lots of liveries are still in the need for a thumbnail, so those are welcome as well.
Historic Nike Hercules Missile Sites
Jack Mermod has begun modeling Historical Nike Hercules Missile Sites. They will all be in the Bay Area. These sites were the last stand of defense in the event of a Soviet bombing. You can still find evidence of these sites today, and they are a important part of history. Each site has a helipad, in hopes of attracting helicopter pilots to come and explore the sights. So far there are three sites that have been made and placed into FlightGear, and the plan is to make 12. The sites will hopefully be available through TerraSync soon, but for now you can to see updates for the sites and download them.
Liverpool John Lennon Airport
Andyramone has begun modeling Liverpool Airport (EGGP) in the UK. The terminal is completed and will be submitted to the database this month. Work has already begun on the control tower.
KSFO Terminal 2
San Francisco International Airport's Terminal 2 has been fully remodelled by Karla in Blender 2.49b, using handmade textures in Gimp 2.46. New additions include: linking wings, antennae, railings, supports, ground floors interiors, ATC equipment, vigilant controller, architecture, light masts and night textures.
It has been released and is available via TerraSync.
After improving the terminal, Karla wrote a howto on how to create realistic textures for buildings. More on that in the Wiki updates section of this newsletter.
UK football stadiums
Andyramone has completed and submitted three football stadiums to the scenery database. These include Carrow Road (Norwich), Emirates Stadium (Arsenal) and Stamford Bridge (Chelsea.) Portman Road (Ipswich) and White Hart Lane (Tottenham) are complete and will be submitted to the scenery database this month. The project will continue later this year with more London stadiums including Wembley on the to do list.
"eag1e" (on the forum, D-ELLE callsign) is working on the buildings of Dublin Airport (EIDW). The airport seems quite well advanced, it has been submitted to the model repository and it is available for direct download at knatterkasten.de.
Innsbruck ÖAMTC helicopter base
The ÖAMTC and Flugpolizei (police) Helicopter base at Innsbruck airport (LOWI) is currently under development by ot-666. Most likely it will be outfitted with moving helipads that are under development by HHS.
Power plants, with their red and white striped tall stacks, are outstanding visual aids for VFR flying.
Scighera has modeled two Italian power plants in Blender :
- "ENEL Piombino 4x330 MW Power Plant", located in Piombino, right in front of the Isola d'Elba (Tuscany, Italy). It represent the standard Italian heavy fuel oil fired 330 MW unit of the early 70ies, with 220 m high stacks provided with red obstruction lights. The model includes a Fuel oil unloading pier, with a mooring tankership
- "a2a 1000 MW Combined Cycle Power Plant" located in Cassano d'Adda (Lombardy, Italy, 30 km away from Milano Linate (LIME)). The plant is provided with 3 Turbogas, 3 Heat Recovery Steam Generators feeding the pre-existing steam turbines. There is a 220 m high red & white striped stack and a lower 80 m stack.
scighera is also working on the Poolbeg Power Plant, on the Dublin peninsula, very close to Dublin Airport (EIDW); the plant has two outstanding 208 m high stacks ...
Estonia kicked off
Alexander Raldugin started modeling the cities and airports of Tallinn and Tartu, Estenia in northeastern Europe. Most models include night lighting. Buildings are available from the regular places.
Harbors, with their huge cranes and long peers, may be as well noticeable landmarks for VFR flying. Scighera is presently working on the model of Vado Ligure Harbor, having completed the Container unloading pier.
Ted Stevens Anchorage International
Skyop has modeled the terminals and control tower at Ted Stevens Anchorage International Airport (PANC). He has also redone the taxiway layout and created a new AI ground network. The airport features night lighting and a variety of scenery on the ground. Although the taxiway layout will not be available until the next release of FlightGear World Scenery, the new models and AI ground network can be obtained through TerraSync.
HHS is working on moveable helipads, also known as dollys. For this purpose, an AIship is abused and replaced with an invisible, solid plane as platform. With some nasal-magic called from a STATIC-Object the AIship aka Platform is set at the new coordinates and a custom model is used as avatar. It can be controlled in many ways: back, forward, speed, up, down, direction.... The only limitation is that it can't follow ground elevation- the ground surface should be even.
This AI-scenario can be selected by the user or automatically with defining it in the -set.xml of any aircraft/ helicopter.
Theoretically with this a physically accurate working pushback over mp, independant of the aircraft's FDM and settings, would be possible. First experiments have been quite successful, but need further investigations.
Nasal for newbies: OOP
OOP is all about creating "things" (i.e. a cloud) with "actions" (transform,draw,update) (or "messages"). Where a class (or hash in Nasal) is the "template" for a "thing" containing a number of member fields. So the class only describes the "layout" or properties of objects that can be created. To actually use a class, it has to be "instantiated" which means creating an object using a specific "template class" (or even several different classes).
These member fields can be variables (e.g. lat, lon, alt) or functions (setAlt, setPos). And the actual instance (cloud[n] in the property tree) of such a thing is then called an "object". Functions that work with instance specific state are called "methods", they may refer to instance specific state using a "self reference" (me) in Nasal, that ensures that access to a field or method is using the right instance specific data.
In OOP, internal state is managed by wrapping everything in a class using accessor functions for modifying and getting internal values. So internal state would in turn only be modified by an abstract interface: class "methods", instead of directly accessing class-internal fields.
This provides a way for managing access to a member variable (field), such an abstract interface is also useful for keeping logics private, and internal. For example, the name of a variable "altitude" can be easily changed internally to "altitude_ft", without having to rename all users of the class - simply because all other code will refer to the methods providing access to the field.
For example, instead of doing something like cloud.lat=10.22; cloud.lon=43.22; you would have a method accepting lat/lon variables: cloud.setPos(lat, lon);
That means that the actual variables containing the values for lat/lon are not exposed or used outside the actual object. This is called encapsulation and provides you with a way to manage state and ensure that internal state is valid at all times, because other code may only use the external interface.
This allows you for example to simply rename a class variable, without having to change any of the code that uses the object, because other code only uses class methods.
Another important thing in OOP is separation of concerns, i.e. you don't want to end up with huge bloated "super classes" that manage all sorts of different state, but instead use different classes where appropriate to split code into abstract "modules" with well defined responsibilities.
So, one of the very first steps to convert procedural code to OOP code would be to group your code into a number of logical "classes" (e.g. cloud, cloud field ).
Classes may be composed of other classes, i.e. a "cloud field" class would in turn contain "cloud" classes. This is then called "composition".
Another way is inheritance, where a type may inherit properties (fields:variables and methods) from a "parent" class. Imagine it like taking a "template" for the class and then saying "make a new class using this template".
Inheritance has the added advantage of providing a means to customize class behavior without having to modify the actual class, because all member fields can be parametrized.
For example, a "cumulus" cloud class could be derived from the "cloud" class, just by parametrizing it (different cloud model, different texture, different transformations), without touching anything in the actual "cloud" class.
This is basically how OOP may be understood: things are classified according to "is a" or "has a" relationship.
Of course, one may still use objects like conventional variables for passing and returning parameters.
Video of the month
Inspired by an idea posted by Mogthor, redneck has turned a part of the "Getting started" manual into a series of youtube videos, please see: https://forum.flightgear.org/viewtopic.php?p=96015#p96015
Do you use TerraSync? If so, try a flight around Hawaii! Take off from PHNL in a light aircraft and head west until you hit Pearl Harbor; a right turn north will take you post the USS Arizona Memorial, and the Punchbowl Crater will be to your right. Or, fly east from PHNL past volcanic craters Diamond Head and Koko Head. If you follow the O'ahu coastline north from Koko Head, you can land at either old World War II airbase Bellows Field (now a wildlife reserve in real life) or at Keahole MCAS.
For a potentially more scenic route, fly east toward Molokai, and stay to the north (left) of the island. The northern part of Molokai features huge sea cliffs and a tiny airstrip on the Kalaupapa peninsula - the peninsula being the only respite from the cliffs. A former leper colony existed near the airstrip!
Also of interest are the volcanoes on Maui and the 'Big Island' of Hawai'i - flying VFR in a small plane from PHTO to PHKO over the plateau between Mauna Kea and Mauna Loa can be a challenge, as you have to take off from sea level, fly through a pass of 6500 feet, and then drop back down to sea level to land! The Hana coast of northern Maui is also a nice flight - a circumnavigation of Haleakala, starting and ending at PHOG, is quite a nice flight.
The islands will be available through the download center with the next major scenery release, but for now, fire up TerraSync and your favorite VFR aircraft and have a blast.
Creating realistic textures for buildings
Texture and modelling artist karla, who recently remodeled terminal 2 of KSFO, wrote a nice article on how to create (photo) realistic textures for buildings. The article explains the texturing process from start to end. Several techniques for creating light-effects, non-repeating surfaces and making faces look weathered are discussed and explained step by step.
Read the howto at Howto: Texture a building and provide the FlightGear community with some nice scenery additions!
Creating cumulus cloud textures for the weather system
WooT has provided a short tutorial on extracting cumulus cloud textures from images. This will be useful for providing improved textures for the local weather system. Read the howto at Howto:Cumulus cloud texture extraction.
Running FlightGear on less modern hardware
A number of recent forum discussions were about running FlightGear on older hardware, we have now created a new article that focuses on just that: Howto: Build a cheap FlightGear box.
FlightGear on youtube
- Ten students at NASA's LARSS (Langley Aerospace Research Summer Scholars), put together an autonomous robotics lab, using mostly open source tools. One of which is a FlightGear Multiplayer Server.
Watch the FlightGear PlayList for a collection of all (somewhat) quality FlightGear videos ever uploaded to YouTube.
Thanks to moderator Gijs, we have now a new sub forum for all issues related to building FlightGear from source. Hopefully, this will make it easier for new users (and developers!) to get support for compiling FlightGear. So if you are having problems building FlightGear from source, please check out https://forum.flightgear.org/viewforum.php?f=45
New Spanish-Latin American FG community website
NiTuS and El Flauta have created Vive FG! (translation: Live FG!), a new version of the Spanish-Latin American FG community website. Powered by Joomla!, it's now much more dynamic and clearer than the previous one, including many FG tutorials about aircraft, scenery and FG-itself-related how-to, as well as additional aircraft and sceneries created by the community, and much more. We encourage everyone to come in, regardless the language you speak!
FGCom server down
The FGCom server is temporarily down. Please refer to for the latest news.
And finally ...
One of the regular thoughts expressed on the FlightGear forums is "I'd like to contribute but I don't know how to program, and I don't have the time". Unfortunately, there is a common mis-conception that contributing requires programming and lots of free time. In fact, there are a huge range of ways to contribute to the project without needing to write code or spending days working on something.
For ideas on starting to contribute to FlightGear, you may want to check out: Volunteer.
With just two months togo, the largest flight simulator event in the world (the FSweekend at Lelystad Airport, the Netherlands) is coming close. Make sure to mark the weekend of 6&7 November in your agenda as "occupied". A team of FlightGear developers will be present in Lelystad to promote FlightGear to the public. They highly appreciate it if you are able to stop over at the airport!
Last year we organised a multiplayer event in which FlightGear users from all over the world could virtually visit Lelystad. Something similar for this year is currently being discussed. More information can be found at the event's wiki page: FSweekend 2010.
Reminder: Google's Summer of Code 2011
We would like to remind all readers that the FlightGear project is planning to participate in GSoC 2011. However, doing that really requires a fair amount of work, planning and organizing. This is not something that can be done by a single person. It really needs a coordinated team effort, or otherwise FlightGear won't be able to apply/participate at all.