November 5, 200322 yr 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
November 6, 200322 yr 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
November 7, 200322 yr >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
November 9, 200322 yr 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
November 10, 200322 yr 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 [email protected] I'll discuss this with you in more detail.Kind RegardsGerrish
November 10, 200322 yr Commercial Member Thanks, this is interesting information :). I tried to investigate them myself some time ago, but I didn't come this far. Arno If the world should blow itself up, the last audible voice would be that of an expert saying it can't be done. FSDeveloper.com | Former Microsoft FS MVP | Blog
November 10, 200322 yr 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.
November 10, 200322 yr 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.
November 14, 200322 yr 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.
July 22, 200421 yr 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
July 22, 200421 yr Commercial Member 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. Arno If the world should blow itself up, the last audible voice would be that of an expert saying it can't be done. FSDeveloper.com | Former Microsoft FS MVP | Blog
July 22, 200421 yr 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
July 22, 200421 yr Commercial Member 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. Arno If the world should blow itself up, the last audible voice would be that of an expert saying it can't be done. FSDeveloper.com | Former Microsoft FS MVP | Blog
March 9, 200521 yr 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
March 9, 200521 yr 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
Create an account or sign in to comment