Meshes, Instances and Optimization

I can program, but I’m not that experienced. As far as I understand Minecraft and its clones, they use procedural geometry to render polygonal blocks. Adjacent blocks have their hidden faces removed and the blocks are connected together. But LEGO bricks have an arbitrary shape that’s mostly not even aligned to a normal grid (particularly in the up direction). Now, I don’t need to have entire worlds rendered out of LEGO, that will take a lot more work. As far as I understand it, theoretically, I would have to remove the occluded triangles when rendering the bricks, on the fly. But that means I’ll have to modify the engine’s rendering system, which I can’t.

What I understand about normal ISMs is that they are all rendered if only one of them is visible and they don’t support LODs, whereas hierarchical ISMs do support LODs and are not all rendered at the same time, but rather only in a single actor/blueprint, is that right? Also, regarding occlusion culling, wouldn’t it help if all the bricks of a single model were separate? That way, only the bricks that were actually visible would be rendered. If the model was a single static mesh, then the whole model would be rendered. And if each copy of a brick was the same static mesh, wouldn’t the engine understand that and load only a single copy of that brick in memory? Or is that really only what an (H)ISM can do?