Large Scale Environments Large Scale Environments

Large Scale Environments

Global Scale, VR Performance, Real Data

A large project at work required the ability to go from ground level to an altitude of 20,000ft. in an instant while remaining performant enough for VR headsets. While there existed some solutions out there to manage larger worlds within Unity, none of them met the project’s requirements. I set out to create a system that treated the real-world terrain data as a nested subdivision tree. Each layer of subdivision can have multiple LODs for better performance and each cell of the layer can be comprised of an arbitrary whole number of divisions of the next greatest resolution. Since every cell is loaded asynchronously the system ensures that there is never a gap in the ground by only switching out cells when all are ready (does not apply to very first load). What makes this solution novel is that there is support for more than one effector on the structure of the grid and how each effector influences the grid can adjust dynamically over time. The system regularly calculates what shape satisfies all conditions and dynamically loads tiles of various resolutions that are stored as Unity scenes. The system also integrates an origin-shifting solution to manage areas far larger than the physics system will typically allow. The system similarly maintains a cache of recently processed tiles to accelerate hops to and from a distant area. The video below shows how the system can manage a large area (over six hundred square kilometers) with ease. Even in the editor the system can help maintain over 350fps for an area this size.

Robert Plante
Robert Plante
Research Scientist at the Georgia Tech Research Institute

Thinker, tinkerer, problem solver.