AeroScenery Beta - Help With Testing Required

  • Hi Nick


    I think the comment that there is a relationship between FS2 levels and image detail level downloaded is right on the money. There's a clue in the TMC readme where it states level 14 is roughly 1 m pixel.

    I have been doing a bit of testing to understand how the scenery works in FS2. I did this by simply using FS2 with scenery I had created and observing the results of the different methods I had used. I also needed to work out how the tiles work with each other to better understand why my scenery choices worked or didn't and where best to use more detail. Knowing this also helps understand why GeoConvert does what it does. For instance you thought you did everything right, downloaded the highest res imagery, but the scenery looks rubbish in FS2 or Geoconvert simply didn't produce tiles.


    So I think that the download image quality, GeoConvert level used and targeting detail where it is needed are the holy trinity of scenery design for FS2.


    A quick for instance. I had been using Bing maps in FSET and noticed that higher quality downloads sometimes weren't resulting in higher quality when viewed in FS2. I had already created level 14 scenery for a small airport not far from home using Bing map data downloaded at 0.5m pixel quality. So I downloaded the exact same area from Google but at .25m pixel as Google data seems to have higher detail (but pesky watermarks). I then used the same TMC to create my level 14 tiles from the Google imagery as used for Bing data.

    I located an area that contained a house with a oval pool which was easy to find and small enough to show up any quality differences. To my surprise, the 0.25 m pixel Google data gave the same slightly pixelated view of the pool as the 0.5 m pixel Bing data. I then ran the Google data through GeoConvert at level 15. When I looked at the pool again the pixelation was gone and a much more detailed pool had appeared.

    My conclusion is that downloading 0.25m pixel resolution data and then using on a level 14 tile is a total waste time. More bandwidth, more CPU resources, longer processing time were all used for no benefit on a level 14 tile. Perhaps AeroScenery could assist users from making this mistake either by preventing certain combinations or just a popup advising the combination used will not give any benefit. So I think there is some benefit in providing some protection in your program to prevent users from taking actions which would give no benefit or at least some advice. Perhaps the guide could be integrated into the AeroScenery Help button. It might also help reduce support questions and user frustration. eg the guide could advise that they should use 4 m pixel quality on levels 9 and 11 in large areas, but use .25 m pixel and level 14 in small areas around airport or areas of low VFR flying. In some areas you only are doing high level flying, so detailed imagery is wasted in FS2.

    I am reasonably sure I have a handle on how the tile levels, tile sizes, and tile draw distance and viewing altitude all work together to create visually stunning scenery in FS2 with the least possible CPU and GPU load. I though I might document how I thought this all works for the more technically minded users out there as it does aid scenery design. If my assumptions are correct, then in my opinion the scenery rendering method use by IPACS is just plain smart. No wonder it makes FSX performance look like very old technology (which it is).

    Creating the scenery that gives the best visual result for the least possible effort will also have a flow on effect in FS2, as that scenery will use the least possible GPU and CPU resources. This then leaves plenty of resource surplus available for allow users to run future developments such as ATC and AI aircraft. Also if you plan distributing scenery to other users some sort of standard will provide consistent results amongst users, minimise file sizes and maximise scenery quality. The last thing you want to happen is someone to download 0.149 m pixel quality to create level 9 to 15 scenery for the whole country, then blame AeroScenery for poor system performance.

    Sorry its a bit long winded, as is often the case with my posts, but I wanted to cover the whole picture.

    Thanks, Chris

    Win 10 64-bit, 24GB RAM, i5-9400F @ 3.9, 6GB Nvidia RTX-2060

  • Excellent idea Ken. Colours and graphics always triumphs over just words. I think there are enough experienced scenery creators to come up some decent help content, without getting too detailed that it scares people off.

    Thanks, Chris

    Win 10 64-bit, 24GB RAM, i5-9400F @ 3.9, 6GB Nvidia RTX-2060

  • The optimal "Download Resolution" (aka zoom level aka spatial resolution aka many other terms) could be determined pretty precisely by some extra lines of code.


    AFAIK, Each AeroFly tile is a constant fixed size in terms of pixels (I think it was 2048x2048?...) These pixels get stretched over larger and larger geographic areas as you go to a lower-number GeoConvert level. We can calculate the size of the area for any given tile with the lat/long coordinates, and then figure out what the GeoConvert resolution is by dividing that area by the pixel dimensions. This will give us a spatial resolution (e.g. X m/pixel).


    Once you have that, you know the optimal imagery download resolution (it just needs to be at least as good as the resolution it gets re-sampled at to create the AeroFly tiles). For example, if your calculated level 9 AeroFly tile over France is ~1.3m/pixel, then you want to download scenery that is at least as good as 1.3m/pixel also to convert that tile level, but not a whole let better to save on download time and file size.


    The reason we can't just easily provide a single spatial resolution for each GeoConvert Tile Level is that the spatial resolution changes with latitude. Since the tiles themselves are square and uniformly-sized, but are stretched over a flattened projection of the globe, the spatial resolution for any given tile size varies as you move north or south of the equator.


    But, this is where some clever coding could do this calculation for us. Based on the area being converted, you could determine the 'best' spatial resolution over that converted area and report it, which could then be matched to the download resolution (zoom level).


    Side note--in an ideal world where we had unlimited storage and infinite download speeds, we'd just download all of the imagery at max resolution and use it to convert every geoconvert level. The only reason we play the games above is to reduce download times and sizes for the base imagery over large areas. There is no penalty for using base imagery at better resolutions than the GeoConvert tiles we convert it into, other than the huge file size and download time.

  • There is no penalty for using base imagery at better resolutions than the GeoConvert tiles we convert it into, other than the huge file size and download time.

    I am not sure this is correct. Wouldn't it be easier for FS2 to display a large level 9 tile on its own, rather than it is for it to display the the multitude of level 9, 11, 12, 13, 14 and 15 tiles it has to pop in and out depending on your distance from the tile. Deciding when to use a level 12 tile in pace of a level 11 tile and so on must have some impact on performance. A level 15 tile area and level 9 tile area look much the same from FL350 so there is no benefit for areas where you don't come down low. The actual altitude at which the a level 15 tile area looks like a level 9 tile area is much lower than FL350. Also once IPACS create additional enhancements such as ATC, AI aircraft and live weather, scenery performance would become more important. Sigh, well I can dream can't I.

    Thanks, Chris

    Win 10 64-bit, 24GB RAM, i5-9400F @ 3.9, 6GB Nvidia RTX-2060

  • I am not sure this is correct. Wouldn't it be easier for FS2 to display a large level 9 tile on its own, rather than it is for it to display the the multitude of level 9, 11, 12, 13, 14 and 15 tiles it has to pop in and out depending on your distance from the tile. Deciding when to use a level 12 tile in pace of a level 11 tile and so on must have some impact on performance. A level 15 tile area and level 9 tile area look much the same from FL350 so there is no benefit for areas where you don't come down low. The actual altitude at which the a level 15 tile area looks like a level 9 tile area is much lower than FL350. Also once IPACS create additional enhancements such as ATC, AI aircraft and live weather, scenery performance would become more important. Sigh, well I can dream can't I.

    Sorry, I should clarify what I meant by that. Yes, there is probably a performance impact by using levels 9-15 vs just 9-11, for example. (How much though, I'm not sure, it runs so well I've never noticed an issue even with a huge area of level 15 tiles.)


    What I was trying to say was that it's perfectly ok to use downloaded imagery of a very high resolution to create low-resolution tiles from: e.g. use 0.5m/pixel imagery to create level 9 tiles, even though level 9 tiles are *not* 0.5m/pixel, they're more like 16m/pixel IIRC.

    But the opposite is not true: you would not want to use 10m/pixel downloaded imagery to create level 15 tiles, for example. You just need your downloaded imagery to be at least as good as the spatial resolution of the tile level you're converting.


    EDIT: Taking this a step further, I think you could have an option to completely automate all of this with one question in the tool: "Minimum altitude you will be overflying this area?" With that input, you could figure out the range of tile levels that will be needed, and then given their coordinates, calculate what the spatial resolutions will be for those tiles, and then download the scenery at that zoom level. That would make it really simple for basic users and all of the confusion of zoom level, tile levels etc. can operate completely in the background.


    drhotwing1 : can you provide us the distances that tile levels 9-15 appear to the user in the sim? For example, level 9 is shown until we are X meters away, level 10 is shown between Y and Z meters, level 11 between Q and R meters, etc. If we had these numbers for each level, and automated Nick's tool as I suggested above, I think that would be really nice for, heck, everyone!

  • I agree with you qwerty42 on this.

    And once again, after lengthy download and processing, you may want to first geoconvert levels 9 and 11 only to inspect and check that everything is ok before to launch geoconverting up to levels 14 or 15.


    By the way the levels system is quite similar to the mipmap system in FS. The graphic engine is just faster. If you move fast on a scenery with the dev cam you see blurries getting sharp exactly like in FS...

    Cheers

    Antoine

    Config : i7 6900K - 20MB currently set at 4.00GHz, Cooling Noctua NH-U14S, Motherboard ASUS Rampage V Extreme U3.1, RAM HyperX Savage Black Edition 16GB DDR4 3000 MHz, Graphic Card Gigabyte GeForce GTX 1080 8GB, Power supply Corsair RM Series 850W, Windows 10 64 bit.

  • Yep, exactly. And since Nick's tool makes the downloading so easy, I can see even more advanced scenery builders using this option too. You want a high res area for an airport? Tell it your minimum overfly altitude will be 0, and select your area. Then on its own, it would figure out it needed to go to level 15, determine that it also needed 0.25m/pixel imagery, do the downloading, and convert all the necessary tile levels. The way you answer the 'minimum overfly altitude?' question basically determines how detailed the area will be, both in terms of scenery images and tile levels, and the user doesn't have to think about it.

    The trickiest part of this is that it would have to make some assumptions about the areas it converted for the levels above your maximum detail level. For example, if the user only chose an area around an airport and told it that overfly altitude would be 0, then it would get all the necessary imagery at max resolution and convert all the level 15 tiles contained by that area. But to prevent scenery pop-ups, it would also need tiles 9-14. If you had it use masks, you could build all of these other levels for just that small area without downloading any more scenery (I think this is probably a bad idea, because of the issues you create if you have adjoining scenery with masks--unless the tool could find those also and scrub them from the directory with each successive scenery build). But maybe instead, after finishing the level 15 tiles, it could then figure out which level 14 tiles contain the small area, and download the level 14 surrounding area at the optimal resolution for level 14, and then repeat this by expanding the area up to level 9 with a larger download area at each one, but a lower imagery resolution too, which should still keep it speedy.


    In steps, with an example of a max detail area, it would look like this:

    (1) User inputs their minimum overfly altitude will be 0

    (2) Tool figures out which tile levels will be needed up to and including this overfly altitude. In this case, levels 9-15

    (3) Tool looks at user-defined area for scenery creation, calculates the necessary imagery resolution for level 15 tiles, and downloads the required area at that resolution

    (4) Level 15 area is geoconverted (or written into TMC for converting after)

    (5) Tool then determines which level 14 tiles include the chosen area, calculates the necessary imagery resolution for these level 14 tiles, and downloads the required area for the mininum set of level 14 tiles that include the originally chosen area

    (6) Level 14 area is geoconverted (or written into TMC for converting after)

    (7) This process repeats, finding all of the associated *complete* tiles that include the original user-defined area, downloading the imagery at the optimal resolution (to improve speed), and prepare it for geoconverting

    (8) Everything is then geoconverted


    If you wanted to add new high-detailed areas in the future, it could do this same thing. It would just need an additional check after determining the tiles it needed to see if they already exist in the scenery directory, and if so, it could skip converting them and move on to the next.


    I realize this is a lot of added complication in terms of coding, but... it's all do-able! One can dream, right?! ;)


    Another edit: if I knew C/C# better I would definitely love to help with this functionality :\ That 'Excel tool' I made already has a way to figure out the bounding coordinates of any level of a single geoconvert tile if you give it the coordinates of a point anywhere inside that tile. For the upward expansion through the scenery levels I described above, you could just use the coordinates of the 4 outside corners of the previously converted tiles, and use this same method as that Excel doc to get the boundaries of the next level up. For the example I described above, you'd most likely end up with a single level 9 tile, a single level 10, maybe 1-2 level 11's, and so on. This is more or less the same thing we already do manually when building scenery with varying detail levels, except having the tool do it all on its own would really speed up scenery creation for most users.

  • Hello qwerty42,

    you just hit the nail on the spot. Downloading and processing the neighbour tiles with minimum masking to reach the desired sharpness at a given location/flight height is THE solution to get a good result.

    If AeroScenery could help as much as possible with this, it would be best for all: Experienced as also novice scenery builder.


    Cheers,

    Thomas

  • If we can beg/persuade/coerce Nick to consider including the feature I described above, here's one piece that will be needed. It's in Excel again (sorry!) but all the math should be easily ported to C I think. This calculator takes two coordinate pairs as inputs (note: the input coords need to be the corner coordinates of a single AeroFly tile!), and from those determines the required spatial resolution needed for downloaded imagery. The example coordinates I have in the file show that this particular level 14 tile has a minimum spatial resolution of 0.84 m/pixel, if every AeroFly tile is indeed 2048x2048 pixels (still need to confirm that, but I left it as a changeable input field so can easily be modified).


    Editing again so as not to spam Nick's thread with all my posts: here is the range of spatial resolutions for AeroFly tiles at levels 9-15 vs. the latitude of the tile, using that sheet to calculate them. I thought this was pretty interesting because I've never seen it given in an exact way before. Both plots show the same thing, but the second one is zoomed in more to see the range from 0 to 5 meters/pixel more clearly. (If I'm wrong about all of the AeroFly tiles being 2048 x 2048 resolution, then this is no longer correct! ;) )







    Here are the tabulated values from the plots if anyone is interested:


  • Nice Haversine calculation sheet, thanks!


    Cheers

    Antoine

    Config : i7 6900K - 20MB currently set at 4.00GHz, Cooling Noctua NH-U14S, Motherboard ASUS Rampage V Extreme U3.1, RAM HyperX Savage Black Edition 16GB DDR4 3000 MHz, Graphic Card Gigabyte GeForce GTX 1080 8GB, Power supply Corsair RM Series 850W, Windows 10 64 bit.

  • Hi,

    I'd love to give this a go but the Aeroscenery app does not run for me with the latest version - it terminates with an unhandled exception for a Null reference when creating a list using Linq. I've attached the two errors I get in the event viewer. The aeroscenery.txt file in the documents folder doesn't report anything bad :


    2018-07-26 09:27:43 (INFO) AeroScenery - Reading Settings

    2018-07-26 09:27:43 (INFO) AeroScenery - AFS2SDKDirectory:

    2018-07-26 09:27:43 (INFO) AeroScenery - AFS2Directory:

    2018-07-26 09:27:43 (INFO) AeroScenery - WorkingDirectory: D:\Documents\AeroScenery\working\

    2018-07-26 09:27:43 (INFO) AeroScenery - AeroSceneryDBDirectory: D:\Documents\AeroScenery\database\

    2018-07-26 09:27:43 (INFO) AeroScenery - OrthophotoSource: Google

    2018-07-26 09:27:43 (INFO) AeroScenery - ZoomLevel: 17

    2018-07-26 09:27:43 (INFO) AeroScenery - DownloadImageTiles: True

    2018-07-26 09:27:43 (INFO) AeroScenery - StitchImageTiles: False

    2018-07-26 09:27:43 (INFO) AeroScenery - GenerateAIDAndTMCFiles: False

    2018-07-26 09:27:43 (INFO) AeroScenery - RunGeoConvert: False

    2018-07-26 09:27:43 (INFO) AeroScenery - DeleteStitchedImageTiles: False

    2018-07-26 09:27:43 (INFO) AeroScenery - InstallScenery: False

    2018-07-26 09:27:43 (INFO) AeroScenery - ActionSet: Default

    2018-07-26 09:27:43 (INFO) AeroScenery - AFSLevelsToGenerate: 9,11,12,13,14

    2018-07-26 09:27:43 (INFO) AeroScenery - UserAgent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.113 Safari/537.36

    2018-07-26 09:27:43 (INFO) AeroScenery - DownloadWaitMs: 10

    2018-07-26 09:27:43 (INFO) AeroScenery - DownloadWaitRandomMs: 3

    2018-07-26 09:27:43 (INFO) AeroScenery - SimultaneousDownloads: 4

    2018-07-26 09:27:43 (INFO) AeroScenery - MaximumStitchedImageSize: 32

    2018-07-26 09:27:43 (INFO) AeroScenery - GeoConvertWriteImagesWithMask: True

    2018-07-26 09:27:43 (INFO) AeroScenery - GeoConvertWriteRawFiles: True

    2018-07-26 09:27:43 (INFO) AeroScenery - GeoConvertDoMultipleSmallerRuns: False

    2018-07-26 09:27:43 (INFO) AeroScenery - USGSUsername:

    2018-07-26 09:27:43 (INFO) AeroScenery - MapControlLastMapType: GoogleHybridMap

    2018-07-26 09:27:43 (INFO) AeroScenery - ShowAirports: False

    2018-07-26 09:27:43 (INFO) AeroScenery - MapControlLastZoomLevel: 3

    2018-07-26 09:27:43 (INFO) AeroScenery - MapControlLastX: null

    2018-07-26 09:27:43 (INFO) AeroScenery - MapControlLastY: null


    Where my install may be different to others :

    Aeroscenery installed automatically into C:\Program Files (x86)\AeroScenery

    Aeroscenery documents folder : D:\Documents\AeroScenery

    SDK installed into G:\Games\aerofly_fs_2_sdk_tools

    Aerofly folder : G:\Games\SteamLibrary\SteamApps\common\Aerofly FS 2 Flight Simulator

    Aerofly documents folder: D:\Documents\AeroScenery is actually a link to G:\Games\Aerofly Files

    Aerofly Addon folder : G:\Games\SteamLibrary\SteamApps\common\Aerofly FS 2 Flight Simulator AddOns


    Note I also have MS SQL 2008 and 2012 installed (probably not an issue but I noticed the use of SQLLite). This is running on MS Windows 10 (fully updated) 64 bit.


    Any ideas? Thanks, Mark

  • Hi Mark mdowner


    Was this a clean installation or were you using a previous version of AeroScenery? If so, which version was it?


    If you go to Documents\AeroScenery\database and rename aeroscenery.db to _aeroscenery.db the app will / should create a new one on start. Let me know still throws an exception. (You wont lose anything in the underscore db file).


    If you're still having issues you could send me the database that's causing the issue and I'll debug what's going on. PM me for my email if it wont attach here.

  • If we can beg/persuade/coerce Nick to consider including the feature I described above,

    Hi Josh qwerty42


    Thanks for all the input on this, I do like the idea. Also thanks for the process outline you PM'd me.


    To build on what we have now it would definitely need to be a kind of "easy mode" that lets the user enter the minimum altitude for the squares they've selected. Behind the scenes it would use all the same options and folder structure, just doing some logic to decide which options to set for each grid square.


    Selfishly I'm going to prioritise USGS elevation data then USGS images first because those are two things I want to use.


    You'll also notice that there's a "Scenery Editor" button on 0.5. I started thinking that it would be cool to be able to edit airports, xref objects and cultivation data in AeroScenery.


    This thing just grows and grows and sadly I only have a few hours here and there to work on this.


    When we get nearer to the time that I can look at implementing this I'll do a few UI mock ups, outline my logic and see what you folks think.

  • Here you go Nick. Couple of thoughts - I had installed aeroscenery 2 or 3 times until I realised it had installed (The install program for me doesn't do the usual "install complete" - just disappears so I thought it had crashed). Also I had recently manually removed the files for the old Florida scenery which would have happened after the first install - not sure what you have in that database so that may not be relevant, but if it's pointing to objects than no longer exist then that would fit with the NULL error?. Cheers, Mark

  • Here you go Nick.

    Thanks Mark. I can see that it tried to upgrade the database without actually creating the tables first. It would only do that if it found a database file but it was really an empty file.


    Struggling to understand how that could happen but thanks for sending. I'll see if I can make it happen again and also log out more info around this code.


    I'll also see if I can add an success message on the installer.

  • To build on what we have now it would definitely need to be a kind of "easy mode" that lets the user enter the minimum altitude for the squares they've selected. Behind the scenes it would use all the same options and folder structure, just doing some logic to decide which options to set for each grid square.

    Hi Nick, Have been thinking about "easy mode" and how that might work. In order to do that it I tried to come up with a best practice standard that we could then base easy mode on. The attached PDF covers information an average user will need to know to effectively use AeroScenery even in Easy mode. Such things as basic Aerofly grid info, some scenery design examples, and how the users might use that information to use AeroScenery without an easy mode. Lastly it delves into what action an easy mode might require from both a user's perspective and from a programmer's perspective. Spoiler alert - It gets easier for the user and harder for the programmer, but not much harder. By just removing the "Automation Required" column in the easy mode section, we already have a high level user's support guide for AeroScenery. A supporting tutorial could eventually provide a step by step guide for scenery creation. As much of the document relates to Aerofly rather than AeroScenery, it could easily be relevant to how we use FSET now.


    I have made some assumptions as to which map grid tiles to use as well as what image download level is appropriate for each GeoConvert level. I did this based on my own experiences and from comments from other users on the forums, but it might not be the best mix. Users would create scenery for large areas (GeoConvert levels 9 & 11), airport circuit areas or low level VFR areas (level 12 & 13) and close airport proximity areas or high detail VFR areas (level 14 & 15). An easy mode should steer users away from common mistakes that result in GeoConvert producing rubbish or nothing. Even the more experienced might prefer the easy mode but an "expert mode" would allow them to decide how they wish to combine image quality, map grid size and GeoConvert levels. Expert mode is basically AeroScenery as it stands now.


    When thinking about the easy mode I tried to use logic that could be applied to AeroScenery without making too much work for you. As AeroScenery development progresses the scenery design logic in the attached document would need to be tested and tweaked to ensure it all works. Masks would probably be turned off for easy mode and optional for expert mode. If we get the scenery design logic right, masks won't matter for easy mode users anyway. More experienced scenery creators will want to modify stitch images to add transparencies which require masks enabled.


    In easy mode users would only need to select the map Grid level, the desired map grid, quality level and hit start. I am not sure if the various "Actions" should be available in easy mode or not. You'll need to zoom in a bit to see the information in the PDF clearly.


    Edit - new spreadsheet created to correct some scale issues as I had forgotten about level 10. WIll add some expected download sizes once I have done some testing with the next version of AeroScenery.


    Aerofly Scenery Standard.pdf

    Thanks, Chris

    Win 10 64-bit, 24GB RAM, i5-9400F @ 3.9, 6GB Nvidia RTX-2060

    Edited once, last by crispy136 ().