Randomly choose a mesh upon spawning foliage type?

I have some experience manipulating the foliage placed with the foliage tool at run-time. I can tell you that if all else fails, you can do a trick at BeginPlay where you read all foliage instance data, remove those instances and reinsert the instance info in another instanced static mesh component.

Foliage placed by the foliage tool is stored as, not surprisingly, instanced static mesh components. All those ISMs are kept in a InstancedFoliageActor. So if you find the InstancedFoliageActor at run-time using an TActorIterator, you can read each foliage instance’s transform. You could reuse those transforms as instances in different ISMs, for example randomly select one of your three types. Then remove them from the original foliage ISM et voila. Hope that helps.