After debugging this for a while now, I’d say that the overlap functions are currently bugged, at least for landscape grass HISMs. The landscape is partitioned into cells and each cell has its own HISM components, but most of them have either no instances or instances with nonsense transform caches.
I’ve also tried debugging this (see image) in LandscapeGrassType:
![]()
which seems to allow for CPU access on the instance buffers, but no instances are ever cached on the CPU from those buffers.
If you’re willing to modify engine code you could theoretically extract these yourself, UGrassInstancedStaticMeshComponent::AcceptPrebuiltTree is a decent starting point (FStaticMeshInstanceData* InSharedInstanceBufferData is the instance buffer). However, I wouldn’t exactly recommend this because this could just be the top of the iceberg, some other parts of CPU instance handling might’ve been removed as well.
In conclusion, this currently doesn’t work, sorry. If this is vital I’d suggest querying Epic directly on when/if this is getting fixed.