Are Frustum and Occlusion Culling enough to navigate in a huge 3D model without experiencing a major performance drop?

Hi,

I am working on a project to recreate a castle with many rooms in it. Each room is quite heavily detailed (between 6 and 10 million polygons), and I would like to be able to go from one room to another with -almost- no loading time.

Each room would be a different Gameobject and will be added one at a time. So we start with one room, and when we finish recreating another room, we add it to the model.

This means the project is going to get bigger after each iteration, and I have to already think about a way to cope with this without losing much performance.

I have imagined a few options, but I don’t know if it is always possible to realize it.

  1. Create one scene per room. But since the doors between each room will remain open, I will need to pre-load the previous and next room considering the one I am in. Is it possible to load multiple scenes and generate them simultaneously? You know, something like juxtaposing the scenes one next to the other.

  2. Put all the rooms in one big scene. Then I would benefit from the Occlusion Culling and the Frustum Culling. Would it really work that way? Is it possible to implement a level of detail for the adjacent rooms to reduce the number of details unless we come closer to them?

It looked at a few topics about open-world games because I thought the problem would be similar (generate only what’s necessary), but since it is based on terrain generation, I don’t know if it can be compared.

Anyway, I’m pretty much stuck here. So if you have an idea about this, or questions if I was unclear about my problem, feel free to let me know!

Thanks in advance for your help!

Yeah, you can call Application.LoadLevelAdditive to add it to the scene, then you’ll just need to reposition it away from the new origin.

I can’t comment on whether the default culling techniques will work. Really, that’s something you just have to try it and optimize where necessary. Complicated pre-optimizations are usually a waste of time, in my opinion.

But I think the real problem you may run in to, depending on the complexity of the scene, is memory management. You’ll need to make sure you unload objects that are not being used.