Trying to understand instancing within Unreal


My my name is Chris, and I’m new to unreal, but not new to 3d, just real-time. Much of asset creation is very similar to film asset creation so I’m picking that up easily. But I am struggling a bit to find answers to more advanced under-the-hood workings of Unreal. I’m finding articles and posts that are far more detailed and relating more to C++coding and video card optimizations, or really simplistic workflows that don’t go deep enough. Enough rambling though let me get to my specific questions…

I would like to make a level, I would like to heavily use instancing, making something big and complex but pretty efficient to load and performing to execute. I found this very interesting tutorial on instancing an asteroid field -

The author of that video has a single asteroid asset and he is creating HISMs that are procedurally placed. If one were to manually place that same asteroid in the same configuration it would be far less performant due to the extra data and channels each object contains correct? Which leads me to wonder, when you simply drop in an asset, let’s call it “rock1”, and place 50 of them, does Unreal consider that 50 unique assets it needs to load and render, or does it consider it 50 instances of same rock1 with different placement values? If one were to overwrite the original asset, does it replace each instance with the new one, or do you still have the old asset in the scene?

I’ve noticed that some terminology differs from vfx to real-time, which has made searching a little trick. Any help is great;y appreciated, especially links to good information on this topic.


You are correct, if you manually place 50 asteroid actors (meshes) in the level, the engine has to load every single one of them. If you load them as an HISM, then it loads only one, as the remaining 49 are instances of that one mesh.

If you change the mesh in the HISM component, then in the level (upon loading) it will change the mesh of all instances as well (if the level is reloaded / started again).