Having fun with projections

Using GIS data to create your scenery has become a lot more common in FsX. Vector data can for example converted from shapefiles and for new version of resample can process GeoTIFF images as well. If you have access to this kind of GIS data or can create it yourself, this makes creating the scenery a lot easier (and more fun as well).

But there are also aspects of working with GIS data that are hard to get for people not used to this. One of these is the use of projections. All FsX scenery design tools expect the data in the WGS84 projection. This means that you can usually not use any scanned map.

Today at work we came across a similar problem with the use of projections and I want to talk about it here as well, because it illustrates very nicely what a big influence a wrong projection can have.

For the flight simulator we have a visual database that contains the airport of Paris CDG and Sion, plus some terrain between these two airports. So the projection used for this database has been optimized for the area it covers, we are using a Lambert Conformal Conic (LCC) projection for this database. A few days ago they asked us if we can add an airport in Africa (Mali to be more specific) as well, because they wanted to fly from there to Paris for an experiment.

So our first thought was let’s try to add the additional airport to the same database (which also means using the same projection). So we downloaded some Landsat images of Mali and started adding them to the database. But to our suprise (or maybe not really), the results were not very good. Below you can see a screenshot of the airport in the LCC projection of our Paris database (left) and a screenshot of the same airport when we use a UTM projection chosen for Mali (right). 

As you can see, the heading of the runway differs something like 60 degrees. Which is of course much to much (how to explain the pilot that runway 06-24 is actually facing North). To be honest we already expect some trouble with the projection system, but we just want to try and see how worse it was. And it was much worse than we ever expected.

But I think this nicely shows that you can not ignore the projection you are using when working with GIS data. To prevent problems like the one we had, MS has chosen to use WGS84 for all scenery elements. So to get the correct placement, all you have to do as a scenery design is to make sure your data is in WGS84 or else convert it.
 

Slooooooooow compilation

In my last blog post I mentioned that the new [FwTools] version had solved most of the problems I had with my markings compiler. That is true, but it also turned out that the speed of the compiler had not improved.

Let me take the center lines of Schiphol airport as an example. I finally figure out how to compile them without errors into a good looking scenery. But I should mention that there are about 13000 line segments that make up the marking on the entire airport. The tool I wrote combines these segments into LOD grids and also gives the lines a width. So in the end that gives me one complex polygon for all the markings in a certain LOD grid.

This technique has a few advantages. For example I can draw all lines in that grid in a single reference point. This is important for the performance, because if I would draw them all with their own reference point it would bring down the frame rate too much. On the other hand if I draw all markings of the entire airport in one single reference point, the performance also suffers as markings are drawn on the other end of the airport (miles away) that you can’t even see. So dividing it into tiles gives me the advantage of limiting the display of segments, but still with a good performance. Another advantage of combining the lines is that it allows me to make smoother connections between the different lines. This look much more realistic.

So, did I mention the word slow in the title of this post? I found out that when I performed all operations in the correct order, it takes something like 24 hours to compile the center lines of Schiphol. And of course there are a lot more lines to draw, like roadmarkings, parking lots, safety lines, etc. So you can figure out how much work my PC has to do.

But as the pictures below show, the end result looks very nice. So I guess it is worth the effort. And the good news is that I have a Core2Duo CPU, so that means I can run the compilation tool twice at the same time.

New FwTools version solves some of my trouble

In the past I have already written about the markings I was working on for the Schiphol scenery and at the moment I am finalizing them. The tool I made to convert the lines of these markings into polygons uses [OGR] as I wrote about in that earlier post as well.

This week I updated to the latest version of [FwTools] and to my pleasant surprise it has become a lot more stable. In that past my tool sometimes choked on the amount of line segments I was feeding it, but now they are processed fine (although it still takes some time to work through them all).

The OGR library provides some nice functionalty to for example combine, subtract or clip elements in shapefiles. These are the kind of operations I do on my line segments as well, to give them a width and chop them into LOD grids. But now that shapefiles are also used for the terrain tools, this library might also become useful for people working on tools for the mesh scenery. So check it out.

Of course there are always some trouble left. Now that my markings tool can process them correctly, the triangulate algorithm I use when writing the SCASM source files crashes on me. I guess I have to look a bit more into triangulation now… 

Europa Universalis

As a little exception, this blog post has nothing to do with Flight Simulator. Sometimes, when I am not designing scenery or developing new tools, I like to play a computer game as well. Ever since I picked up a copy of the game Europa Universalis II from a bargain bin, I have been a great fan of the strategy games made by the Swedish company Paradox Interactive.

In these games you start with a country in a historical setting and then you can try all sort of what-if scenarios to see if you can alter history a little bit. You could for example try to prevent Germany from taking the Netherlands in World War II (I never really succeeded in that) or try to battle with France and the UK in the colonization of the world during the 19th century.

And this week there was a little surprise in my mailbox, my copy of the new game Europa Universalis III had arrived. I haven’t had that much time yet to play it, but it looks like great fun again. The only problem with these games is that they are quite addictive, so that will probably mean a little bit lack of sleep again…

The forgotten Douglas

Those who visited the SceneryDesign.org forums in the past might recognise my old avatar in the picture on the left. This aircraft is (one of) my favorite aircraft and as it is a little unknown I was thinking about writing a blog post about it for a while already. So here is that blog post.

For those that have not yet recognised hte aircraft from this little avatar, I am talking about the Douglas DC-5. Ever since I once borrowed the book “De Douglas DC-5” from Piet Kok from the library, I have liked this aircraft a lot. Currently I own the book as well, but I think it is only available in Dutch.

Why has such an book been published in Dutch? This is probably best explained by the fact that only 12 DC-5 aircraft have been build, of which 4 have been used the the KLM, the Dutch airline. Due to the outbrake of the second world war these aircraft have never been used in the Netherlands itself, they have been used in the Dutch West Indies (Curacao) and the Dutch East Indies (Java, Indonesia). The other 8 have been used by the US Navy as R3D. A funny note is that one of the aircraft has been the personal aircraft of William Boeing for a while, before it went to the US Navy as well. At that moment William Boeing was no longer working for the Boeing Company though.

Unlike most other civil Douglas aircraft of that time, the DC-5 was designed by the El Sequndo division of Douglas (this division also build the SBD Dauntless for example). For its time the DC-5 was a quite advanced aircraft, having a nose landing gear for example. It still had a tailwheel as well, but that was mainly mounted to prevent damage in case the pilot was not really used to flying with a nosewheel. The aircraft has been designed as a feeder aircraft to be used on smaller lines, it could carry a maximum of 22 passengers.

So what went wrong for this aircraft? It must be called the forgotten Douglas now because it never really became a success. This is mainly due to the outbrake of the second world war. At the time the DC-5 was still a very new aircraft (first flight 20 february 1939) and some time would be needed to perfect the design. Due to the war this time was not there and it was decided that the DC-3 would become the standard transport aircraft. Besides that the El Sequndo division needed to be produce the Dauntless as well. So after only 12 aircraft had been build, the program was cancelled.

A last funny fact is that the DC-5 flew before the DC-4 as we know it know flew. This is because before the current design of the DC-4, Douglas was also working on a DC-4E. But as this aircraft proved to be too complex, it never went into production.
 

 

Am I a data junkie?

At work my collegue and I, we are the ones working on the visual databases for the simulators, are quite well known for our excessive harddisk usage on our development systems. When we are using satelite images in these visual database, it is not that weird to have a few GB of images that we need to process. For example to cover the Balkan area or the entire country of the Netherlands. And then I am not even talking about high resolution images (that would increase the amount of diskspace used even more).

During the processing of these images into the actual databsae, we usually have to reproject them a little or apply some other tweaks on them and of course the final tool creating the database also generates some  temp files worth a few more GB of data. So I guess you can imagine that we have to clean our harddisk quite often to keep the system running (from experience I know that 0 kB left of harddisk space does not really work well). And I guess the system administrator of our department has already gotten used to our questions for more diskspace.

And now the same seems the be happening at home with FsX. With the increased resolution of the terrain system in FsX the amount of data to process also goes up of course. I did a little test with high resolution images around Schiphol airport (16 cm resolution). Those photo alone were already a few GB worth of data, but when I added some intermediate files due to the conversion from the Dutch RD coordinate system to WGS84 and mosaicing of the different images into a few larger ones, the harddisk usage for this little test went up already. Now, after compiling the BGL files for FsX as well, the entire test project uses about 50 GB of diskspace (of which the final BGL files are only about 6 GB). Luckily my new PC at home has a big enough harddisk (for the moment).

With the changes to the FsX terrain system, I find it interesting to see that the process of scenery creation comes a step closer to the GIS data I have become familiar with at work already. The new shp2vec tool makes use of shapefiles and resample can process GeoTIFFs. Quite interesting developments and it shows that the difference between “professional” visual database and the FsX “entertainment” world is not that big.
 

The FsX MDL format

On the FsDeveloper Wiki I have added a page that describes (part of) the FsX MDL format. At the moment mainly the sections involved in a simple scenery object are covered, as that is the part I mainly looked at for the ModelConverterX tool until now. Hopefully this page is useful to other programmers as well, when they want to read information from FsX MDL files.

But in this blog post I want to try to explain some of the changes in less technical terms, so that also “normal” scenery designers can understand what effects the new MDL format might have on their scenery. To do that, I will start with a short description of the Fs2004 MDL format.

The Fs2004 MDL format contains lists of the vertices, textures and materials used in the object. And there is one big section that determines what is actually drawn. In that section triangles are defined using the vertices for example. When drawing the object the scenery engine has to read this entire section from start to end, as conditions and jumps can be just in it to control what is actually drawn. Besides this there are also some sections for animations, attachpoints, etc but I will not consider these in detail here.

In the new FsX format still has lists of vertices, materials and textures. But there is no longer one big section that draws the object. It has been replaced by a couple of sections that for example defined a list of triangles and a list of object parts. So each object part uses a certain material and has a number of triangles related to it. These triangles are linked to the vertices that define them.

As you might already understand now, this structure is less flexible. The part lists are part of the LOD section, so you can define different parts for different LOD levels. But it seems no longer possible to add other conditions or jumps, to for example only show your objects during winter. I can understand that MS has chosen this new structure, as the more rigid structure makes it a lot easier to optimize the scenery engine to draw them. There are no surprises anymore because a designer has added a weird jump or complex condition somewhere.

The downside of this seems to be that we have lost the ability to make objects like docking systems that require conditions and jumps for the correct display or the ability to show different textures for each seasons.

As FsX is still very new, we might find a way to get past these problems later on. But for the moment it seems we are limited to making less complex objects (feature wise of course, I am not talking about the amount of polygons here).
 

Library Creator XML 2.0 alpha

I have made an alpha version of the new Library Creator XML version 2.0 available at the FsDeveloper forums. So if you want a GUI to create your FsX object libraries, give it a try! And as it still is an alpha version I can’t promise that it will be bug free.