What I did was I used only 2 meshes per tree. The meshes are FileMeshes (not mesh parts) and have an anchored, no collide part as their parent. All the leaves are 1 decal per tree that’s been mapped out all around that tree to spread the image. I also was really lightweight on collisions, using a brick with a filemesh in it as the trunk and its collision. I don’t think it gets much more optimized than that!
Also, I used a ParticleEmitter to drop leaves (roblox engine manages those so too many can’t exist at once) and the terrain material that includes leaves on the ground so ground foliage is built into the terrain with specular maps. That’ll also become LOD when the player’s far away. So will the file meshes
One last thing, all the meshes were decimated & solidified in Blender before they were imported. Some of the larger meshes were scaled down so they weren’t so heavy on the render engine