So there is an Experimental feature call Procedural Foliage
https://docs.unrealengine.com/en-us/Engine/OpenWorldTools/ProceduralFoliage/QuickStart
Even thou the tutorial is on landscape if you are in latest engine(I’ve tested it in 4.20.x+) you will see more options to spawn on static meshes even BSP
thou its not on material, its the only way I’ve found to spawn grass on static mesh, I have a CL that lets you spawn on specific material but its changing the Engine Code