I am currently working on a custom website project, Vigiwoods Interior Design, and while the website itself is not built with Godot, I have been exploring Godot for creating interactive 3D visualizations and room-design experiences that could potentially be integrated into client websites.
My question is related to performance optimization and scene management in Godot.
Suppose I have a large interior environment containing hundreds of furniture objects, decorative assets, lights, and interactive elements. What would be the recommended approach for maintaining high FPS and low memory usage when users dynamically change room layouts, materials, and furniture configurations?
Specifically:
Is it better to use packed scenes and instantiate objects on demand, or preload everything and toggle visibility?
What are the best practices for managing large numbers of meshes and materials in Godot 4?
Should I rely on MultiMeshInstance3D for repeated assets such as chairs, tables, or decorative objects?
How do experienced developers handle texture streaming and memory management for large interior visualization projects?
Are there any common bottlenecks in Godot’s rendering pipeline that become noticeable when working with detailed architectural scenes?
I am trying to understand the most scalable architecture before investing significant development time into a prototype.
Any advice, benchmarks, or real-world experiences would be greatly appreciated.
Preloading everything will incur higher memory usage and a potentially much longer load time. Better to load things as they are needed
The files themselves, or rendering them? How large? What does managing entail?
If you are having trouble rendering thousands of meshes, you should try MultiMeshes renderers (more on that later), ensuring LOD is properly tuned.
If you have hundreds of the same object in one scene yes you should try to implement MultiMeshInstances, otherwise it’s probably not worth it.
In general try to reduce unique texture count and size, you could render one thousand chairs with the same 4K texture easily, but a thousand 4K textures is not going to fly.
Lighting maybe? Sounds like you can’t bake lighting if you are swapping out objects and lights. We only just got area lights.
Multimeshes are one option but they have their drawback. A simple mesh from a Multimesh will draw the whole Multimesh.
You should try to use a mix of regions, LOD, Imposters and Occlusion Culling added to the multimesh depending on the situation.