Breaking Instancing


So I’m currently trying to create a fully dynamic environment system that allows trees to grow, have different “states” (dry, wet, burned etc.)

Let’s say I have painted my landscape with instanced static meshes and wanted to add these features, when does instancing actually “break” ? Can I scale them however I want ? Can I change the specularity of the trees in a specific area (where it rains) and still have the benefits of instancing ?

For things like trampling over bushes I just replace the affected foliage types temporarily with blueprints, play the animation and then replace them again with instanced “trampled” versions to save performance. I’m not sure how I would do all that with growing plants since they would change scale every few minutes (Let’s say they grow every 5 minutes by 0.1)

I could just replace a tree with a bigger instances but I was wondering if I can just scale the already created one and still have the instancing benefit (since in the foliage painting tool there is a random scale feature as well)

I’m a bit lost here so maybe someone has some more experience with that ? Thanks a lot in advance! :slight_smile:

So far I’ve figured out that I can’t change the world scale of an instance directly but remove and spawn a new one with a new transform, thus making it slightly bigger. Also the procedural foliage spawner supports “growth”, but I have to look into it a bit further. So since all instances share the same material I’d have to create a “wet” version of each foliage type to simuate rain ?