Download

Hierchical Instanced Static Meshes NOT occluding properly! What am I doing wrong?

Per title, I am creating a very simple blueprint that spawns an HISM in a cubic array. From my testing it appears that I can stand in the center of the cube and ALL meshes are rendered no matter if I am looking at a single pixel of this group of HISM. The distance culling is working, why would frustum culling not work? I can’ even find any frustum or occlusion culling settings.

I can create multiple chunks of cubes and those chunks will individually cull when not in view, but it is extremely slow because there is a copy of the hism component, mesh, and array on each chunk.

I was looking at Unity to see if the instancing behaves the same way and it does not. It culls as expected.

There is even a marketplace item that does this in GPU. This is what I expect HISM culling to be; https://www.youtube.com/watch?v=VqH8kcmD-HI

I feel like I’m missing something obvious?

I find it hard to believe that no one has experience with this, and there is no documentation on this.

@HeyMufti do you found a solution for this? Still getting no proper culling with Unreal 4.25 in 2020 :confused:

Okay, I think I found the problem why the culling is not working “correctly”. The issue is that Unreal is grouping hierarchical instances to make it more performant. Those groups are splitted based on the distance of those assets. This works for most cases but fails when you have a bigger map with uneven asset-placement.

I created a quick example for this:

There is the following situation. We have one big HISM for one big map but there is a lot of empty space between the instances

With distance culling enabled, you can see the problem that the grouping algorithm sometimes has. Everything is culled exept a single instance group of objects. This happens because the group is strechted over the entire map.

it probably is clearer when you see it from a differenct perspective. In the image below everything is culled by distacne, except this one group which centerpoint has not reachted the culling distance.

I hope this explains why culling sometimes fails. Culling is not really the problem, it is the grouping that make things problematic.

It would be great if some Unreal Developers would address this issue and may allow an input for maximum radius that the group can have.

All best