Let’s say you’ve made a race track with a single InstancedStaticMeshComponent. Due to the nature of the ISMC, it’ll draw all of it in one chunk, and all of it will be on the same LOD level. So if you have 2 LODs, and get close to the track, at all times it’ll draw the highest detailed LOD for the entire track, no matter how small the part you’re seeing.
If you were to make that with HeirarchicalStaticMeshComponent, it’ll transition the parts that are close to you to higher LOD (as per mesh LOD screensize setting*), while keeping the rest of the track in the lowest LOD possible.
Example scenario: You’ve made a race track with 100 parts, highest LOD has 1000 triangles, and lowest poly has 50 triangles. In ISMC, if you get close to the race track, it’ll draw 100x1000=100k triangles at all times. If it were HISMC instead, and you were only close enough to change 5 parts’ LODs, it would draw (5 x 1000) + (95 x 50) = 9750 triangles.
*One other benefit of HISMC is that LOD screensize setting actually works. ISMC treats all of its instances as 1 mesh, so the screensize setting evaluates the entire structure, and you end up having to make another setting for the meshes that you use with ISMC. While HISMC transitions per mesh LODs without treating the entire structure as 1 mesh.
Other than that, both functions exactly the same way. HISMC is a subclass of ISMC. You still use the AddInstance and RemoveInstance on both.