Sign in to follow this  
Guest Marky Parky

FS2002 Autogen Annotation Tool

Recommended Posts

Hi all,I would like to know if something exists better than FS2002 Autogen Annotation Tool (annotator.exe) that is, in my opinion, excessively time-consuming because of its limited commands (zoom not powerful, impossibility of rotating buildings, and so on).Thanks all for an answerAlessandro Fantini

Share this post


Link to post
Share on other sites
Help AVSIM continue to serve you!
Please donate today!

Hi Alessandro.I don't believe anyone ever "cracked" the file structure of autogen, so no one was ever able to make a better tool.Dick

Share this post


Link to post
Share on other sites

>Hi Alessandro.>>I don't believe anyone ever "cracked" the file structure of>autogen, so no one was ever able to make a better tool.>>DickOkay Dick,thank you for your answer.I resign myselfAlessandro

Share this post


Link to post
Share on other sites

I cracked FS2002 agn structure and it is very simple ;)), but I have no time for development of such a tool. It is for .agn files that use default textures set only.The Structure is:HeaderHouse records placed one to otherVegetation records placed one to otherHeader:4 bytes int: 1-2 floor house density : value from 00h to 14h4 bytes int: 3-5 floor house density : value from 00h to 14h4 bytes int: 6-8 floor house density : value from 00h to 14h4 bytes int: 9-12 floor house density : value from 00h to 14h4 bytes int: number of houses4 bytes int: number of vegetation squares4 bytes int: don't know yet, but changes does not affact apearance in FS or in annotator tool. It is depending on number of vegetation squares and building somehow. 4 bytes int: 00h4 bytes int: vegetation 1 type : value from 00h to 06h, 00h means default vegetation4 bytes int: vegetation 2 type : value from 00h to 06h, 00h menas no vegetation type 24 bytes int: vegetation 1,2 relative density : value from 00h to 64h, 00h means only vegetation 2, 64h means only vegetation 14 bytes int: vegetation overal density : value from 00h to 64h, 00h means 0, 64h means 1004 bytes float: vegetation 1 min height4 bytes float: vegetation 1 max height4 bytes float: vegetation 2 min height4 bytes float: vegetation 2 max heightHouse record:4 bytes float: X position of first point4 bytes float: Y position of first point4 bytes float: X vector to the second point4 bytes float: Y vector to the second point4 bytes float: X position of third point4 bytes float: Y position of third pointValues of position are -0.5 for left or upper side and 0.5 for bottom or right side. That means that upper left corener has value of [-0.5,-0.5], center has value of [0,0] and upper right has value of [0.5,-0.5].Vectors have values from 0 to 1. Vector [ 1,0 ] means horizontal line, vector [ 0,1 ] vertical line, vector [ 0.5,0.5 ] means line with angle 45 deg from upper left to lower right.Vegetation record:4 bytes float: X position of first point4 bytes float: Y position of first point4 bytes float: X position of third point4 bytes float: Y position of third pointValues of position are the same as with houses, but it is not neccesary to use vectors here, because vegetation square is always oriented the same way.All this aplies to FS2002 .AGN files. I wonder if there is any diference in FS2004 .AGN files that is used to call library objects.If you know of some .AGN file that seems to contain souch a data, please let me know and I'll try to investigate it more

Share this post


Link to post
Share on other sites

Hi MarkyGood work, thanks! Good to see you here contributing to our little band of would-be scenery guru's and hackers.The FS2004 Autogen has two new types of footprint, in addition to the house and vegetation footprints from FS2002. They are (1) the new 'row houses' that use the second set of building texture sheets, and (2) the library objects. I suspect that the library object footprint data will indicate (a) the class GUID (see default.xml), but not the individual object GUID which is probably chosen by the Autogen system on a 'random' basis from all those listed for the class for the current region, (:( (probably) the footprint size - although that is available from default.xml as well, and © a vector for the orientation. If you like to write to me direct at gerrish@flightsims.co.uk I'll discuss this with you in more detail.Kind RegardsGerrish

Share this post


Link to post
Share on other sites

Thanks, this is interesting information :). I tried to investigate them myself some time ago, but I didn't come this far.

Share this post


Link to post
Share on other sites

I slowly continue with hacking and have following results:Header appears to be same for FS2002 and FS2004.Building and vegetation data are also the same.That is enough to have backward compatibility with FS2002 .agn files.After last vegetation record is added a new structure - small header with 8 unknown bytes simmilar to the unknown part of 2004 header, followed by two different collections of records. Each is introduced with number of records and then follow the records itself.First records are 4x4bytes long, second records are 8x4bytes long.First records might be new houses, but I don't see any on the place, so I am testing it now, second records are vector autogen objects, but there is no data like GUI, se they must be assigned some other way.I will continue hacking and report my progress.

Share this post


Link to post
Share on other sites

Oki, I have another part solved.I am now able to place vegetation, houses and vector autogen objects.Here is the file structure:Header ( same as in FS2002 ):4 bytes int: 1-2 floor house density : value from 00h to 14h4 bytes int: 3-5 floor house density : value from 00h to 14h4 bytes int: 6-8 floor house density : value from 00h to 14h4 bytes int: 9-12 floor house density : value from 00h to 14h4 bytes int: number of houses4 bytes int: number of vegetation squares4 bytes int: don't know yet, but changes does not affact apearance in FS or in annotator tool. It is depending on number of vegetation squares and building somehow. 4 bytes int: 00h4 bytes int: vegetation 1 type : value from 00h to 06h, 00h means default vegetation4 bytes int: vegetation 2 type : value from 00h to 06h, 00h menas no vegetation type 24 bytes int: vegetation 1,2 relative density : value from 00h to 64h, 00h means only vegetation 2, 64h means only vegetation 14 bytes int: vegetation overal density : value from 00h to 64h, 00h means 0, 64h means 1004 bytes float: vegetation 1 min height4 bytes float: vegetation 1 max height4 bytes float: vegetation 2 min height4 bytes float: vegetation 2 max heightHouse records follow - number of records is in header.House record ( the same as in FS2002 ):4 bytes float: X position of first point4 bytes float: Y position of first point4 bytes float: X vector to the second point4 bytes float: Y vector to the second point4 bytes float: X position of third point4 bytes float: Y position of third pointVegetation record follow - number of records is in header.Vegetation record:4 bytes float: X position of first point4 bytes float: Y position of first point4 bytes float: X position of third point4 bytes float: Y position of third pointThe new part of file:4 bytes int: don't know yet, simmilar to FS2002 header no effect4 bytes int: 00h4 bytes int: number of new housesNew houses records follow - I didn't hack them yet, I have to find some file with those houses and play a bit with them4 bytes int: number of GUI's : I have found just 00h or 01h but maybe other values are possibleGUI's record follows:4x4 bytes int: GUI of class of object : important is, that these are 4 times 32bit integers and not one 128bit integer4 bytes number of vector autogen objectsVector autogen object records follow:4 bytes float: X position4 bytes float: Y position4 bytes float: X vector of rotation4 bytes float: Y vector of rotation4 bytes float: X size in km4 bytes float: Y size in kmPositions are from -0.5 to 0.5, vectors from -1 to 1 as i described in previous post.File is ending with 24 bytes of value 00h that may be reserved for future or may contain some more data that are not discovered yet.

Share this post


Link to post
Share on other sites

Oki, I have resolved complete FS2004 agn format. Here it is:Header of FS2002 objects:{4 bytes int: 1-2 floor house density : value from 00h to 14h4 bytes int: 3-5 floor house density : value from 00h to 14h4 bytes int: 6-8 floor house density : value from 00h to 14h4 bytes int: 9-12 floor house density : value from 00h to 14h4 bytes int: number of houses, lets call it H4 bytes int: number of vegetation squares, lets call it V4 bytes int: don't know yet, but changes does not affact apearance in FS or in annotator tool. It is depending on number of vegetation squares and building somehow. 4 bytes int: length of texture sheet name, 00h means default texture, lets call it LL bytes char: name of custom texture sheet without extension4 bytes int: vegetation 1 type : value from 00h to 06h, 00h means default vegetation4 bytes int: vegetation 2 type : value from 00h to 06h, 00h menas no vegetation type 24 bytes int: vegetation 1,2 relative density : value from 00h to 64h, 00h means only vegetation 2, 64h means only vegetation 14 bytes int: vegetation overal density : value from 00h to 64h, 00h means 0, 64h means 1004 bytes float: vegetation 1 min height4 bytes float: vegetation 1 max height4 bytes float: vegetation 2 min height4 bytes float: vegetation 2 max height}H-times follows house record:{4 bytes float: X position of first point4 bytes float: Y position of first point4 bytes float: X vector to the second point4 bytes float: Y vector to the second point4 bytes float: X position of third point4 bytes float: Y position of third point}V-times follows vegetation record:{4 bytes float: X position of first point4 bytes float: Y position of first point4 bytes float: X position of third point4 bytes float: Y position of third point}Header of FS2004 objects:{4 bytes int: don't know yet, but changes does not affact apearance in FS or in annotator tool. It is depending on number of vegetation squares and building somehow. 4 bytes int: length of texture sheet name, 00h means default texture, lets call it L2L2 bytes char: name of custom texture sheet withoud extension}4 bytes int: number of row houses, lets call it RR-times follow row-house record:{4 bytes float: X position of first point4 bytes float: Y position of first point4 bytes float: X vector to the second point4 bytes float: Y vector to the second point4 bytes float: X position of third point4 bytes float: Y position of third point}4 bytes int: number of used GUI classes, lets call it GG-times follow GUI-record:{4x4 bytes int GUI: It is neccessary to read as 4 time 32-bit int, not as 128bit int, because of byte order4 bytes int: number of objects placed with this class, lets call it OO-times follow object record:{4 bytes float: X position4 bytes float: Y position4 bytes float: X vector of rotation4 bytes float: Y vector of rotation4 bytes float: X size in km4 bytes float: Y size in km, negative or positive in this selects in which side of vector the building apears}}24bytes int: 00hHope this helps for building some simple autogen placing utility till the SDK will be released.

Share this post


Link to post
Share on other sites

Hi all!I programmed a delphi software that reads an AGN file. When the program reads the vectors to the second point of a house, it gets the value of 0.70710676908 for a 45

Share this post


Link to post
Share on other sites

I couldn't find the piece of text where the 0.5 is mentioned, but 0.707 does not seem strange to me, the sine or the cosine of 45 degrees is 0.707.

Share this post


Link to post
Share on other sites

Thank you for your answer :-)The text that mentions 0.5 value is on the first description of the AGN file format. I report the text: "Vectors have values from 0 to 1. Vector < 1,0 > means horizontal line, vector < 0,1 > vertical line, vector < 0.5,0.5 > means line with angle 45 deg from upper left to lower right."SIN (45

Share this post


Link to post
Share on other sites

The text only says that a vector defined as <0.5,0.5> defines an angle of 45 degrees. And that is logical as in that case both the x and y component of the vector are the same (with results in 45 degree angle). So I guess you should be reading two values, before you can reconstruct the vector.

Share this post


Link to post
Share on other sites

This has been a wonderful reference since I'm working feverishly on a new replacement to the annotator program to save myself from a life of carpal tunnel syndrome pain. In looking over the above format I notice one possible ommission though. In Annotator, one has the ability to, when say placing a house, selecting the house type such as Urban Small, Urban Medium, Rural Large, etc. Nowhere in that format above is that info saved. It certainly seems like choosing the different house types does result in different autogen houses appearing in FS9 so it must be being saved somewhere.Perhaps it's in those 4 byte sections you couldn't resolve. It would seem more logical that, since you can change the house type for each individual house, that the type would be saved in each house record. Seems there's redundant info in the house records anyway. If one knows the first two point locations exactly and the vector from the 1st to the third, why the need for both the X and Y for the third point? You'd simply need to know the distance along the vector. Could that be the case and the last four byte single or integer is the type?I'm going to experiment with this a bit. Hopefully the original authors of this post are still watching.Art Martin

Share this post


Link to post
Share on other sites

Hi Art,I agree this is a great reference. One of the guys on the Visual Flight forums is hoping to do an MSc dissertation on generating autogen from photographic scenery textures.George

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this