James Turner schreef:
> <snipped>
> - My plan would be to build some generic classes which can be extended  
> or configured to support Boeing or Airbus displays, or other similar  
> systems (including the G1000). My current perception is that this  
> would be pretty doable - sizes / colours / iconography / positions of  
> elements change, but the fundamental concepts are pretty consistent.  
> Does this seem reasonable? Obviously supporting all the features of  
> each system is an immense amount of work, but I think getting the  
> common features up and running is doable in the medium term.
>
>   - Any other feedback? I'm interested in docs on the G1000 and Airbus  
> displays / FMS in particular, to see how they differ from what i know  
> about the Boeing ones. I don't know anything about military  
> equivalents, but maybe they are also similar enough to share a C++ core.
>
> My initial hack would be to get a NAV display running showing the  
> current route segments and navaids overlays in a specified radius,  
> working as a custom panel instrument. That would be enough to get the  
> FPL/WPT/APT/FIX/NAV/etc buttons in various cockpits working, as well  
> as the NAV display modes (compass, enroute, approach if I recall  
> correctly).
>
> Regards,
> James
>   
I've been a lurker on this list for quite a while, and some of the FG 
development crew know me personally.
I would be interested in helping out with this, since I am a sim builder 
and I think the interface for cockpit displays is probably one of the 
most important things missing in FG at the current time, in terms of the 
usability for sim building. After all, the flight dynamics and system 
logic of FG are far better than its Microsoft cousin.

Remember, in real-world aircraft, cockpit displays are vector devices. 
In most sim packages, including FG and FS200x, panels are built by 
stacking bitmaps on top of each other, according to a specific 
transformation (fx. the attitude indicator consists of a static mask 
bitmap and an attitude card which is translated and rotated according to 
the aircraft's pitch/roll). Although this works very well for 'classic' 
mechanical gauges, it loses its function when simulating glass displays 
as it primarily compromises the readability of text. (this isn't a huge 
issue in mechanical gauges, since they have big numbers and mostly 
static text number plates. Glass decks, on the other hand, have a lot of 
transformed text)
My suggestion would be to look into the option of making a vector 
framework, which has all the basic widgets for a glass deck implemented 
in C++ code. I'm guessing it would be somewhat similar to ARINC661, and 
the actual arrangement of these widgets could be marked up in an XML 
file. The framework could render to a texture (for display in a 3D 
virtual cockpit), a memory buffer (for direct blitting onto the screen) 
or to a separate device context altogether (for an external display). 
Network support on this would be a really interesting feature -- 
allowing outboard 'dumb' cockpit displays to be run off a diskless thin 
client.

I have done some preliminary research on this and some bits of code. I 
currently have a working example of the Primus 1000 avionics set as seen 
in the Embraer ERJ-145, but it currently only connects to MSFS. Here's a 
pic:
http://www.stoneynet.nl/openrj/openrj_screenshot.png

And here's a ZIP containing the binaries, for the people interested in 
playing with it (Windows only):
http://www.stoneynet.nl/openrj/openrj-0.9.7rc1.zip

All the individual displays are plug-in files (Windows DLL files), but 
for the 2.0 version of the framework I'm trying to stick with UNIX 
support as much as I can.

Most of the code inside the plugin file is just plain OpenGL commands 
and some math, though, and I reckon this could be easily translated into 
geometry files (XML or binary for embedded purposes), containing only 
the display engine in code.

Making a moving map (NAV) display is pretty easy, BTW. The simplest, but 
least accurate way of doing it is to use a rectangular mapping -- 
mapping latitude and longitude to the X and Y axes directly. Remember 
that 1 minute of lat/longitude corresponds to 1 nautical mile by 
definition, and calculating distances is a snap (using the Pythagorean 
theorem). Define the clipping region of the map using glOrtho in 
nautical miles around the aircraft (the aircraft is positioned at the 
origin) and scale the coordinates up 60 times to obtain the easiest 
mapping. A more accurate mapping can be achieved by drawing the map in 
3D, this also solves wrap-around problems, but it is (marginally) slower 
because of the large number of rotations involved.

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Flightgear-devel mailing list
Flightgear-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/flightgear-devel

Reply via email to