I planted 150,000 Trees - - - while you blinked.

Collapse
Only viewable if you're a logged in user
X
 
  • Time
  • Show
Clear All
new posts
  • scottb613
    2500 Post Veteran

    • Apr 2003
    • 2682
    • Downeast Maine (soon)
    • ORTS

    #1

    I planted 150,000 Trees - - - while you blinked.

    Hi Folks,





    Mixed assets. Predefined planting patterns. Automatically planted in seconds—creating sweeping, shape-based forests that feel natural, organic, and alive.

    Regards,
    Scott
    <a href=https://www.trainsim.com/forums/filedata/fetch?filedataid=80663&type=full title=thumb_80663.png >thumb_80663.png</a>​ My Blender Models
  • eric
    Owner/Admin


    • Dec 2002
    • 9403
    • NS MP245.4 CNO&TP South District
    • English, SQL
    • General

    #2
    That looks awesome. Any chance of a video to see it in action?
    If you like what you see here at Trainsim.com, be it the discussions and knowledge in the forums, items saved in our library or the ongoing development of our TSRE Fork, I hope you'll consider a paid membership to help support keeping the site operating.... Thanks!

    Comment

    • frliss
      Senior Member

      • Mar 2011
      • 807
      • MP44.2 Worcester, MA
      • General

      #3
      Looking good. It sure beats the rectangle of TSRE.

      Fred

      Flashing Rear End Device

      Comment

      • pgroenbaek
        Member
        • Jan 2024
        • 98
        • Denmark
        • ORTS

        #4
        Very cool Scott! 😀

        Something like this could be a real time-saver compared to doing it by hand.

        I'm curious, how does this actually work? I'm assuming something-something OSM data?

        Would it e.g. be able to do something like making different areas have different tree types? Let's say, sections of pine tree forest vs normal forest?
        - Peter

        Route Projects: DK24
        Utilities and Tools: ShapeIO, ShapeEdit, TrackshapeUtils

        Comment

        • EldoradoRailroad
          Senior Member
          • May 2010
          • 201

          #5
          Wow,

          Not only GenX, but committed to climate change as well.

          Beyond useful and very impressive there Scott, would love to see how/what setup is needed for that to blink into view. Are we on our way to have cubic spline grass planting as well?

          Great update,
          Steve

          Comment

          • scottb613
            2500 Post Veteran

            • Apr 2003
            • 2682
            • Downeast Maine (soon)
            • ORTS

            #6
            Originally posted by eric
            That looks awesome. Any chance of a video to see it in action?
            Hi Eric,

            Hah - a video - it's a bit anticlimactic now - when I first had it setup - you could watch the planter threads doing their work - it was hypnotic, enjoyable, and would only take a couple seconds. The subsequent plants in an area seemed to start getting exponentially longer because for every tree planted the display was refreshing all trees planted - so I froze the display until each planting evolution is complete - I've planted up to 150,000 trees on 4 adjacent tiles - and they all go in at around 2 or 3 secconds.

            I call it "PolyVeg"...

            Originally posted by frliss
            Looking good. It sure beats the rectangle of TSRE.

            Fred
            Hi Fred,

            You have now idea - maybe 6 seconds to plant 150K - it's a brave new world.

            Originally posted by pgroenbaek
            Very cool Scott! 😀

            Something like this could be a real time-saver compared to doing it by hand.

            I'm curious, how does this actually work? I'm assuming something-something OSM data?

            Would it e.g. be able to do something like making different areas have different tree types? Let's say, sections of pine tree forest vs normal forest?
            Hi Peter,

            Yep - I modified LIDEX to parse OSM Data while it works on assembling all the maps for a route - saving derivatives as a stacked layers for processing in TSRE. This is nothing new as "Arno" in the Flight Sim world did something like this 15 years ago to populate autogen scenery. I left all the rural land use polys "plantable" by a flood fill - so when enabled - it populates all the same land use classes at once - you no longer need to hunt down each and every occurance.

            I use a new JSON schema for defining the used vegetation classes - so you can build a class for Forest, Scub, Wetlands, and even Farmland with crop rows (nod to Eric).

            Originally posted by EldoradoRailroad
            Wow,

            Not only GenX, but committed to climate change as well.

            Beyond useful and very impressive there Scott, would love to see how/what setup is needed for that to blink into view. Are we on our way to have cubic spline grass planting as well?

            Great update,
            Steve
            Hi Steve,

            Thanks - it's truly amazing and is working quite well - and right in line with my primary goals - faster more efficient route building and improving the look of routes.

            Did I mention on my Kaby Lake - I've come up with a means, so 150,000 trees have no discernable impact on frame rate. It's an old Kaby-Lake locked a 60 fps via G-Synch - so it's not a modern supercomputer.



            Regards,
            Scott
            <a href=https://www.trainsim.com/forums/filedata/fetch?filedataid=80663&type=full title=thumb_80663.png >thumb_80663.png</a>​ My Blender Models

            Comment

            • eric
              Owner/Admin


              • Dec 2002
              • 9403
              • NS MP245.4 CNO&TP South District
              • English, SQL
              • General

              #7
              Originally posted by scottb613
              Yep - I modified LIDEX to parse OSM Data while it works on assembling all the maps for a route - saving derivatives as a stacked layers for processing in TSRE. This is nothing new as "Arno" in the Flight Sim world did something like this 15 years ago to populate autogen scenery. I left all the rural land use polys "plantable" by a flood fill - so when enabled - it populates all the same land use classes at once - you no longer need to hunt down each and every occurance.
              Interesting. Will be curious to see how it works on an older or abandoned route... OSM is current-day data. Working on an abandoned or vintage route might be problematic if the land use doesn't reflect where the historical ROW was.
              If you like what you see here at Trainsim.com, be it the discussions and knowledge in the forums, items saved in our library or the ongoing development of our TSRE Fork, I hope you'll consider a paid membership to help support keeping the site operating.... Thanks!

              Comment

              • Rick-MONON
                Senior Member
                • Feb 2008
                • 1789
                • Elizabethtown, Ky
                • ORTS

                #8
                Just...WOW
                Rick

                http:\\mononrr.com

                MONON-2

                sigpic

                Comment

                • scottb613
                  2500 Post Veteran

                  • Apr 2003
                  • 2682
                  • Downeast Maine (soon)
                  • ORTS

                  #9
                  Originally posted by eric

                  Interesting. Will be curious to see how it works on an older or abandoned route... OSM is current-day data. Working on an abandoned or vintage route might be problematic if the land use doesn't reflect where the historical ROW was.
                  Hi Eric,

                  When I started this - I did not know that OSM Data was so incomplete. There are vast swaths of the US very sparsely populated. I was thinking about how to address this issue. If this happens in an area where you are building a route - I think the best and most efficient alternative - is just go into the Official OSM Editor and make the edits for your route. It's super easy - basically you just trace out simple land use polys in your area of interest - assign a tag for land use type - and upload - they should be available the next day when you download fresh data. I did a couple dozen as a test and it works well - still providing a real-world randomness that is VERY HARD to match by hand placing trees in TSRE. Plus, you help the OSM community at the same time.

                  Secondly - I added a new ruler tool that can use the same fill methods as OSM data - that you can make a linked path with a user defined width - or another option where the ruler forms polys automatically connecting back to the first point.

                  It seems to be working EXTREMELY well - I am stopping at this point to get back to 4m terrain tiles - as you mentioned - if the textures are not being applied correctly on 4m in ORTS - I think that is an issue James needs to address - I will start making sure all the other tools in TSRE work for 4m as well.

                  Regards,
                  Scott
                  <a href=https://www.trainsim.com/forums/filedata/fetch?filedataid=80663&type=full title=thumb_80663.png >thumb_80663.png</a>​ My Blender Models

                  Comment

                  • scottb613
                    2500 Post Veteran

                    • Apr 2003
                    • 2682
                    • Downeast Maine (soon)
                    • ORTS

                    #10
                    Originally posted by Rick-MONON
                    Just...WOW
                    Hi Rick,

                    I impressed the master - hah - that means a lot.


                    Regards,
                    Scott
                    <a href=https://www.trainsim.com/forums/filedata/fetch?filedataid=80663&type=full title=thumb_80663.png >thumb_80663.png</a>​ My Blender Models

                    Comment

                    • scottb613
                      2500 Post Veteran

                      • Apr 2003
                      • 2682
                      • Downeast Maine (soon)
                      • ORTS

                      #11
                      Hi Folks,

                      Oh - and the tree planting honors exclusions for urban areas, road, track, and water in OSM - - - and TDB and RDB entries as well.

                      And ski slopes too.


                      Regards,
                      Scott
                      <a href=https://www.trainsim.com/forums/filedata/fetch?filedataid=80663&type=full title=thumb_80663.png >thumb_80663.png</a>​ My Blender Models

                      Comment

                      • scottb613
                        2500 Post Veteran

                        • Apr 2003
                        • 2682
                        • Downeast Maine (soon)
                        • ORTS

                        #12
                        Hi Folks,

                        Schema used to define the planting in the image above.

                        Code:
                        {
                            "schemaVersion":  1,
                            "polyVeg":  [
                                            {
                                                "id":  "sco-northeastern-mixed-woodland",
                                                "name":  "SCO Northeastern Mixed Woodland",
                                                "description":  "Mixed Appalachian and northeastern woodland using the SCO cruciform vegetation set.",
                                                "defaults":  {
                                                                 "widthMetres":  100.0,
                                                                 "densityPerSquareKilometre":  18000,
                                                                 "terrainDepthMetres":  0.15,
                                                                 "variationScale":  1.0,
                                                                 "trackClearanceMetres":  8.0,
                                                                 "roadClearanceMetres":  4.0,
                                                                 "maximumTrees":  60000
                                                             },
                                                "limits":  {
                                                               "widthMetres":  [
                                                                                   10.0,
                                                                                   500.0
                                                                               ],
                                                               "densityPerSquareKilometre":  [
                                                                                                 2000,
                                                                                                 60000
                                                                                             ],
                                                               "maximumTrees":  [
                                                                                    1000,
                                                                                    250000
                                                                                ]
                                                           },
                                                "distribution":  {
                                                                     "maximumSlopeDegrees":  38.0,
                                                                     "edgeFeatherMetres":  4.0,
                                                                     "minimumSeparationMetres":  0.5,
                                                                     "preventFootprintOverlap":  true
                                                                 },
                                                "osm":  {
                                                            "priority":  100,
                                                            "matchAny":  [
                                                                             {
                                                                                 "natural":  [
                                                                                                 "wood"
                                                                                             ]
                                                                             },
                                                                             {
                                                                                 "landuse":  [
                                                                                                 "forest"
                                                                                             ]
                                                                             }
                                                                         ],
                                                            "categories":  [
                                                                               "woodland"
                                                                           ]
                                                        },
                                                "vegetation":  [
                                                                   {
                                                                       "id":  "red-maple",
                                                                       "name":  "Red maple",
                                                                       "shape":  "SCOredMaple.s",
                                                                       "stratum":  "canopy",
                                                                       "proportion":  18.0,
                                                                       "yawDegrees":  [
                                                                                          0.0,
                                                                                          360.0
                                                                                      ],
                                                                       "uniformScale":  [
                                                                                            0.75,
                                                                                            1.35
                                                                                        ],
                                                                       "footprintRadiusMetres":  0.8
                                                                   },
                                                                   {
                                                                       "id":  "sugar-maple",
                                                                       "name":  "Sugar maple",
                                                                       "shape":  "SCOsugarMaple.s",
                                                                       "stratum":  "canopy",
                                                                       "proportion":  14.0,
                                                                       "yawDegrees":  [
                                                                                          0.0,
                                                                                          360.0
                                                                                      ],
                                                                       "uniformScale":  [
                                                                                            0.8,
                                                                                            1.4
                                                                                        ],
                                                                       "footprintRadiusMetres":  0.85
                                                                   },
                                                                   {
                                                                       "id":  "northern-red-oak",
                                                                       "name":  "Northern red oak",
                                                                       "shape":  "SCOnorthernRedOak.s",
                                                                       "stratum":  "canopy",
                                                                       "proportion":  13.0,
                                                                       "yawDegrees":  [
                                                                                          0.0,
                                                                                          360.0
                                                                                      ],
                                                                       "uniformScale":  [
                                                                                            0.85,
                                                                                            1.5
                                                                                        ],
                                                                       "footprintRadiusMetres":  0.95
                                                                   },
                                                                   {
                                                                       "id":  "white-oak",
                                                                       "name":  "White oak",
                                                                       "shape":  "SCOwhiteOak.s",
                                                                       "stratum":  "canopy",
                                                                       "proportion":  9.0,
                                                                       "yawDegrees":  [
                                                                                          0.0,
                                                                                          360.0
                                                                                      ],
                                                                       "uniformScale":  [
                                                                                            0.85,
                                                                                            1.5
                                                                                        ],
                                                                       "footprintRadiusMetres":  0.95
                                                                   },
                                                                   {
                                                                       "id":  "american-beech",
                                                                       "name":  "American beech",
                                                                       "shape":  "SCOamericanBeech.s",
                                                                       "stratum":  "canopy",
                                                                       "proportion":  10.0,
                                                                       "yawDegrees":  [
                                                                                          0.0,
                                                                                          360.0
                                                                                      ],
                                                                       "uniformScale":  [
                                                                                            0.8,
                                                                                            1.4
                                                                                        ],
                                                                       "footprintRadiusMetres":  0.9
                                                                   },
                                                                   {
                                                                       "id":  "eastern-white-pine",
                                                                       "name":  "Eastern white pine",
                                                                       "shape":  "SCOeasternWhitePine.s",
                                                                       "stratum":  "canopy",
                                                                       "proportion":  12.0,
                                                                       "yawDegrees":  [
                                                                                          0.0,
                                                                                          360.0
                                                                                      ],
                                                                       "uniformScale":  [
                                                                                            0.65,
                                                                                            1.55
                                                                                        ],
                                                                       "footprintRadiusMetres":  0.75
                                                                   },
                                                                   {
                                                                       "id":  "eastern-hemlock",
                                                                       "name":  "Eastern hemlock",
                                                                       "shape":  "SCOeasternHemlock.s",
                                                                       "stratum":  "canopy",
                                                                       "proportion":  8.0,
                                                                       "yawDegrees":  [
                                                                                          0.0,
                                                                                          360.0
                                                                                      ],
                                                                       "uniformScale":  [
                                                                                            0.7,
                                                                                            1.4
                                                                                        ],
                                                                       "footprintRadiusMetres":  0.75
                                                                   },
                                                                   {
                                                                       "id":  "black-cherry",
                                                                       "name":  "Black cherry",
                                                                       "shape":  "SCOblackCherry.s",
                                                                       "stratum":  "understory",
                                                                       "proportion":  6.0,
                                                                       "yawDegrees":  [
                                                                                          0.0,
                                                                                          360.0
                                                                                      ],
                                                                       "uniformScale":  [
                                                                                            0.65,
                                                                                            1.15
                                                                                        ],
                                                                       "footprintRadiusMetres":  0.65
                                                                   },
                                                                   {
                                                                       "id":  "witch-hazel",
                                                                       "name":  "Witch hazel",
                                                                       "shape":  "SCOwitchHazel.s",
                                                                       "stratum":  "understory",
                                                                       "proportion":  5.0,
                                                                       "yawDegrees":  [
                                                                                          0.0,
                                                                                          360.0
                                                                                      ],
                                                                       "uniformScale":  [
                                                                                            0.55,
                                                                                            1.0
                                                                                        ],
                                                                       "plantingDepthMetres":  0.1,
                                                                       "footprintRadiusMetres":  0.5
                                                                   },
                                                                   {
                                                                       "id":  "mountain-laurel",
                                                                       "name":  "Mountain laurel",
                                                                       "shape":  "SCOmountainLaurel.s",
                                                                       "stratum":  "understory",
                                                                       "proportion":  5.0,
                                                                       "yawDegrees":  [
                                                                                          0.0,
                                                                                          360.0
                                                                                      ],
                                                                       "uniformScale":  [
                                                                                            0.45,
                                                                                            0.9
                                                                                        ],
                                                                       "plantingDepthMetres":  0.1,
                                                                       "footprintRadiusMetres":  0.45
                                                                   }
                                                               ]
                                            }
                                        ]
                        }
                        Regards,
                        Scott
                        Last edited by scottb613; 08-17-2026, 07:43.
                        <a href=https://www.trainsim.com/forums/filedata/fetch?filedataid=80663&type=full title=thumb_80663.png >thumb_80663.png</a>​ My Blender Models

                        Comment

                        • rrdiesel87
                          Senior Member

                          • Mar 2007
                          • 347
                          • Hanover, PA
                          • General

                          #13
                          Man, what an incredible concept coming to life!
                          Andrew Collins

                          CSX Sand Patch Grade for ORTS (65%)

                          www.youtube.com/@rrdiesel87
                          www.trainsimulations.net

                          Comment

                          • scottb613
                            2500 Post Veteran

                            • Apr 2003
                            • 2682
                            • Downeast Maine (soon)
                            • ORTS

                            #14
                            Originally posted by rrdiesel87
                            Man, what an incredible concept coming to life!
                            Hi Andrew,

                            Hence the segue I was looking for in your pix post.


                            I still need to build a controlled form to build the schema from within TSRE - as there are far too many "[ ] { }" to expect a user to do correctly.

                            Regards,
                            Scott
                            <a href=https://www.trainsim.com/forums/filedata/fetch?filedataid=80663&type=full title=thumb_80663.png >thumb_80663.png</a>​ My Blender Models

                            Comment

                            • scottb613
                              2500 Post Veteran

                              • Apr 2003
                              • 2682
                              • Downeast Maine (soon)
                              • ORTS

                              #15
                              Hi Folks,

                              The control panel.


                              TSRE GenX "PolyVeg":






                              Regards,
                              Scott
                              Last edited by scottb613; 08-18-2026, 07:42.
                              <a href=https://www.trainsim.com/forums/filedata/fetch?filedataid=80663&type=full title=thumb_80663.png >thumb_80663.png</a>​ My Blender Models

                              Comment

                              Working...