• Which the release of FS2020 we see an explosition of activity on the forun and of course we are very happy to see this. But having all questions about FS2020 in one forum becomes a bit messy. So therefore we would like to ask you all to use the following guidelines when posting your questions:

    • Tag FS2020 specific questions with the MSFS2020 tag.
    • Questions about making 3D assets can be posted in the 3D asset design forum. Either post them in the subforum of the modelling tool you use or in the general forum if they are general.
    • Questions about aircraft design can be posted in the Aircraft design forum
    • Questions about airport design can be posted in the FS2020 airport design forum. Once airport development tools have been updated for FS2020 you can post tool speciifc questions in the subforums of those tools as well of course.
    • Questions about terrain design can be posted in the FS2020 terrain design forum.
    • Questions about SimConnect can be posted in the SimConnect forum.

    Any other question that is not specific to an aspect of development or tool can be posted in the General chat forum.

    By following these guidelines we make sure that the forums remain easy to read for everybody and also that the right people can find your post to answer it.

scenproc suggestion: AGN vegetation as XML placement

Messages
141
Country
poland
Hi Arno,

In some cases it can be useful to have AGN trees placed as individual XML objects. For example if they need to be placed on top of a 3D platform terrain, which is not possible with AGN objects, while keeping the tree coverage on the platforms visually similar to the surrounding AGN placements.
Example: I placed thousands of cultivation/autogen trees on top of 3D models in Aerofly FS2. While having them shown on top of that 3D model in Aerofly FS2, this is not possible in FSX/P3D where autogen always clings to the "actual ground".

A code example could look like this:
Code:
CreateXMLAgnVeg|filter|GUID|heading|elevation|AGL yes/no|regionletter|season

GUID = e.g. {932fa2ce-a5dc-4db5-8f5f-6e0fa0f8f95a} for "ag forest broadleaf 3-15m short"
-> This is propably the hardest part but also the reason why I think it's a perfect task for scenproc. It would need to iterate though the AutogenDescriptions.xml and lookup the respective tree GUIDs for the season and region identified and by using the weights given in AutogenDescriptions.xml.

I'm aware that seasonal variations will not be possible when placing them as XML objects but there are lots of regions where they aren't need anyway (for a set of various BGL files needs to be supplied to switch manually).

What do you think?

Bests,
Sascha
 
Hi,

scenproc already has a CreateXMLLibObject step just for this. You need to use ExportBGL step to save the bgl file in the end.
 
scenproc already has a CreateXMLLibObject step just for this. You need to use ExportBGL step to save the bgl file in the end.

Right. But as far as I can see it does not support weighted random GUIDs like defined in the AutogenDescriptions.xml.
So all I can do there is insert a large number of GUIDs from the respective AGN classes, from which scenproc randomly chooses the different GUIDs without any random weight. See this example:
Code:
CreateXMLLibObj|(NAME = "var") And FRAND >= 0.0 And FRAND >= 0.7|{d975d894-8c81-4a23-9aec-bb8f5c750d6d};{1F47472E-B577-4837-8219-E20DB97AFA66};{0a9c59f5-d12e-43ed-a5e2-8878ae10eddd};{88A689AE-958F-4588-8805-0C48AE8D923D};{52e7de28-8382-49a8-bd86-76952792784f};{13C6B576-38A1-4DAF-BBFD-99A3DA908A54};{F2489014-5A33-4669-B727-896921D73139};{59E23C21-B597-467F-B58D-DDA497B99804};{1B1DC70D-7671-47E0-9426-47EC582F15F6};{9683c859-7b37-41fb-9d40-828477713f06};{43676740-f544-4e3b-b7fd-f59aca8f8e15};{051D0C5C-ADEC-4609-ADCC-F8BAAC881D4F};{27f9a541-3a7c-4d18-b8fa-afe9f80619a1};{8A5D482C-A4D9-4BAD-8689-D72CA2035141};{d9baace3-bf38-42a7-84fb-9c43230a45bb};{1DB9F900-4EA8-46D1-85DD-5F828824BE46};{9a0f59e6-3692-490c-b182-d54fddc4c39a};{83E91E80-A8A0-4299-AF51-E669AE46EAA5};{E97DA9E1-C84B-44E9-B184-78D48A3FCB4C};{E1C0C31F-7F9C-4515-AE30-F1714DBDCC02};{16F3F05C-6AC9-4866-A331-8342A8501CF8};{ff69a466-e4b5-455b-a37a-73f08dfd0a8d};{f7ca2e7c-d457-4f48-a9ef-174b4396bc21};{7D0DE867-4D92-4187-9224-811086B5A7B0};{f6e29df8-43a2-4be1-9ede-5b5ce08a9681};{FD9E9A87-43A7-4474-B2BB-24142BE2F80E};{1e9f75c7-e329-4785-83fb-35d4c217af12};{BF6775BD-55D5-4094-A7A3-8963FAD6E9E6};{2957bd89-d156-4ccc-9309-d05763580177};{93C83D06-8AFE-4503-A0CE-6994F5787701};{786132EA-95D2-4E03-BA67-53D71FCCB471};{9CBEE9E2-489C-4664-944C-6D7167457E5B};{C9155643-7D88-4AAE-ACFC-B94D367FF7CC};{bee3e08b-2bc2-48ff-9ca5-b84466041030};{2d160a01-352b-4dae-86dd-fb82af9c4ff5};{48FEA7AA-000F-440E-879E-BF01C3558BF4};{c884ffaa-ce25-463b-8bd7-a93147d27002};{46759cc9-612e-4e1c-82dd-229fb183b62d};{D393F866-4A27-4298-ACDD-9861A3FD0FFB};{5b87d25c-f98e-4401-a3f7-ee667749f7c3};{7337B46A-4E7C-4167-85D4-31A08794317D};{544DCF1F-AB95-40C9-AC79-94C3B5AB63B5};{9d2d1501-9135-4b2d-808f-5c6a8d0c3ce7};{2e7ae73f-93df-4a4b-9a8b-2afe23dd2dbf};{801E9DE0-BFC2-4961-8519-4EDACA17C573};{5688ce5c-093c-4946-a52a-d38e46d337cd};{4e21a205-3f56-4374-a97f-19d0651d4060};{494E699D-5F5E-4191-85C9-8ED41B96AA3E};{95dc5b85-13ca-4c36-8c90-1124b71a5769};{323ED66B-AF83-4CFE-98F5-0FC79DF2085A};{BBA06D53-BEC2-4EC4-80C6-3B5C21EFE7D3};{59413a8e-065d-4706-ba20-d1756f0f25e2};{c5fc4075-27d0-485e-a47b-4d1317604bdb};{563AE089-C05B-471E-AFA1-B7D3D58E6A9D};{1332672f-b738-4a6c-b7e1-b6908fa175e7};{41e511ce-f5ce-4d8f-9337-3aa5378b5013};{e258071f-4026-447a-8227-fdd1e16f5097};{08EAFA28-5200-4E5E-AA76-2CBD934108AA};{4CE65783-78FF-4C56-B83F-6FAAD5878DB3};{c4378eea-8d57-4afc-abb6-d63eb6da9c15};{9284ef18-cf49-45fe-9a9d-f9e7af58be45};{c308acb9-05cc-45a4-8eed-840177ef27d3};{EC1D0F7A-9D5B-4811-91FC-EB03F238F2E6};{2957ebf1-5ef6-47ce-aa79-31a3d0fa849a};{D79D32F5-5327-47A7-8B0D-C2666F254D71};{64b9ff09-f918-4e96-9262-57b07629f6c0};{0611E411-ADBF-4D95-B0C0-924FD3C2EBEB};{3daebd73-10e7-41a3-b57a-4bc9e646ac5f};{682717A3-C5E0-44A1-8A37-50D6D185548D};{98c043f3-661a-4ac0-8239-712948a602ec}|0;360|0|elevation|1

AutogenDescriptions.xml however works differently. Let's take above example ({932fa2ce-a5dc-4db5-8f5f-6e0fa0f8f95a} for "ag forest broadleaf 3-15m short") which calls:

Code:
        <Grouping id="{932fa2ce-a5dc-4db5-8f5f-6e0fa0f8f95a}">
            <FriendlyName>ag Forest Broadleaf 3-15m Short</FriendlyName>
            <ReferenceEntry>
                <TargetGuid>{1BFCE8DD-EAB1-4028-A568-C503FCAFF882}</TargetGuid>
                <RelativeWeight>8.000</RelativeWeight>
            </ReferenceEntry>
            <ReferenceEntry>
                <TargetGuid>{D3A99E0B-AB45-42BD-A031-AE36248199A0}</TargetGuid>
                <RelativeWeight>20.000</RelativeWeight>
            </ReferenceEntry>
            <ReferenceEntry>
                <TargetGuid>{74B42D88-FC8B-4556-AF5E-0DB49B377EFD}</TargetGuid>
                <RelativeWeight>20.000</RelativeWeight>
            </ReferenceEntry>
            <ReferenceEntry>
                <TargetGuid>{2CE9EA1E-307E-4E20-B04A-DBCE7DE9157D}</TargetGuid>
                <RelativeWeight>4.000</RelativeWeight>
            </ReferenceEntry>
            <ReferenceEntry>
                <TargetGuid>{DDF4527B-4944-4C62-A8B5-53F7648CE756}</TargetGuid>
                <RelativeWeight>4.000</RelativeWeight>
            </ReferenceEntry>
            <ReferenceEntry>
                <TargetGuid>{5A3E49A9-DEF5-4C97-9015-5AB2B338FF41}</TargetGuid>
                <RelativeWeight>10.000</RelativeWeight>
            </ReferenceEntry>
            <ReferenceEntry>
                <TargetGuid>{E76185CB-ED5F-476A-9027-3FEAEEDBEEAA}</TargetGuid>
                <RelativeWeight>4.000</RelativeWeight>
            </ReferenceEntry>
            <ReferenceEntry>
                <TargetGuid>{0BAF57F5-97F8-4CE2-98DD-18D389AE8559}</TargetGuid>
                <RelativeWeight>4.000</RelativeWeight>
            </ReferenceEntry>
            <ReferenceEntry>
                <TargetGuid>{21485BAA-7829-492F-A8C0-959955F2443D}</TargetGuid>
                <RelativeWeight>20.000</RelativeWeight>
            </ReferenceEntry>
            <ReferenceEntry>
                <TargetGuid>{B366DAD3-A8E7-44AE-9BF3-BB1584E01270}</TargetGuid>
                <RelativeWeight>30.000</RelativeWeight>
            </ReferenceEntry>
            <ReferenceEntry>
                <TargetGuid>{1C724CED-8CC9-4502-8242-B206189B5149}</TargetGuid>
                <RelativeWeight>10.000</RelativeWeight>
            </ReferenceEntry>
            <ReferenceEntry>
                <TargetGuid>{ACD7818E-41E3-45A4-BA4A-B2E8D726215F}</TargetGuid>
                <RelativeWeight>4.000</RelativeWeight>
            </ReferenceEntry>
            <ReferenceEntry>
                <TargetGuid>{C02EC776-83FA-4EEF-9E6D-C31F353ABF3C}</TargetGuid>
                <RelativeWeight>8.000</RelativeWeight>
            </ReferenceEntry>
            <ReferenceEntry>
                <TargetGuid>{75DAC433-835D-42AC-9BCD-614787A3A3C5}</TargetGuid>
                <RelativeWeight>20.000</RelativeWeight>
            </ReferenceEntry>
        </Grouping>

Each of the weighted target GUIDs calls another one like this one:

Code:
        <Grouping id="{1bfce8dd-eab1-4028-a568-c503fcaff882}">
            <FriendlyName>tb Aspen 9-11m Young</FriendlyName>
            <ReferenceEntry>
                <TargetGuid>{D975D894-8C81-4A23-9AEC-BB8F5C750D6D}</TargetGuid>
                <RelativeWeight>6.000</RelativeWeight>
            </ReferenceEntry>
            <ReferenceEntry>
                <TargetGuid>{C884FFAA-CE25-463B-8BD7-A93147D27002}</TargetGuid>
                <RelativeWeight>6.000</RelativeWeight>
            </ReferenceEntry>
            <ReferenceEntry>
                <TargetGuid>{5688CE5C-093C-4946-A52A-D38E46D337CD}</TargetGuid>
                <RelativeWeight>8.000</RelativeWeight>
            </ReferenceEntry>
            <ReferenceEntry>
                <TargetGuid>{1332672F-B738-4A6C-B7E1-B6908FA175E7}</TargetGuid>
                <RelativeWeight>10.000</RelativeWeight>
            </ReferenceEntry>
            <ReferenceEntry>
                <TargetGuid>{C308ACB9-05CC-45A4-8EED-840177EF27D3}</TargetGuid>
                <RelativeWeight>8.000</RelativeWeight>
            </ReferenceEntry>
        </Grouping>

...which again does random weighted calls for the actual models (with the respective season). For example:

Code:
        <ModelEntry id="{d975d894-8c81-4a23-9aec-bb8f5c750d6d}">
            <FriendlyName>veg_tb_Aspen_11m</FriendlyName>
            <MinScale>0.800</MinScale>
            <MaxScale>1.000</MaxScale>
            <SeasonEntry>
                <ModelGuid>{B890862E-434A-4954-AC14-84EC816A8939}</ModelGuid>
            </SeasonEntry>
            <SeasonEntry>
                <Season>FALL</Season>
                <ModelGuid>{AEB9D79C-CAA7-4FDA-8AC3-251BD6FD00D1}</ModelGuid>
            </SeasonEntry>
            <SeasonEntry>
                <Season>MILD_WINTER</Season>
                <ModelGuid>{DB142519-D308-49E0-A337-3E2E7BDE1926}</ModelGuid>
            </SeasonEntry>
            <SeasonEntry>
                <Season>HARD_WINTER</Season>
                <ModelGuid>{DB142519-D308-49E0-A337-3E2E7BDE1926}</ModelGuid>
            </SeasonEntry>
            <SeasonEntry>
                <Season>SPRING</Season>
                <ModelGuid>{B890862E-434A-4954-AC14-84EC816A8939}</ModelGuid>
            </SeasonEntry>
        </ModelEntry>

Other AGN types even have regional variations that play a role there.
You see there's a whole lot of dependencies not easily done with Calc or Excel or inventing an interely new program. That's why I thought scenproc would be perfect.

Bests,
Sascha
 
Hi,

I see what you mean. Some steps do support random selection of GUIDs already, I need to check if that also applies to this one.

Adding support for using the autogendefinition file to make XML sounds like a bit too complex to me for this specific situation.
 
No problem, I will find another way then. Just thought this might be a nice feature in case someone else came up with it before (didn't find anything on that yet). Again: Thanks for such a great tool! My problem however may be indeed a bit too specific.

So random GUID selection by weight factors will not be possible either, right?
 
Random guid selection is on the wishlist (and partly implemented already). I need to check the status for the xml library object step.
 
Back
Top