Roblox:构建庞大3D虚拟世界——无烘焙、多尺度voxel地形技术

需积分: 5 0 下载量 195 浏览量 更新于2024-07-14 收藏 48.56MB PDF 举报
Roblox是一个在线多人游戏创作平台,其特点是所有内容都由用户自创,拥有超过1亿的活跃用户(MAU)和500万的月活跃玩家(CCU)。该平台支持多平台,包括Windows、macOS、iOS、Android、Xbox One等,并采用高级图形技术,如Direct3D9/11、OpenGL2/3、OpenGLES2/3、Metal和Vulkan,以实现丰富的视觉体验。 在Roblox的地形系统设计中,一个重要的目标是无需烘焙,允许任何区域在任何时候发生变化,保持了高度的灵活性。地形完全三维化,能够处理复杂的结构,如洞穴、悬空结构和桥梁,同时支持大规模景观建模,最大可达10平方公里以上,甚至能适应非常小的设备,如iPad 2。 地形是由voxels(体素)构成的,这是一种稀疏且多分辨率的数据结构。每个voxel都有自己的材质和占用状态,所有的控制都是针对每个材料进行的,这使得设计更加精细和高效。早期尝试过不同的数据表示方法,最终选择占用作为主要代表形式,以保持简单性。 在存储方面,Roblox采用了网格为基础的voxel存储方式,通过固定大小的区块(chunk)来管理空间,每个chunk包含一个金字塔形状的数据结构,可以跳过顶层以节省存储。内存压力下,会根据需要动态地进行纹理级别的流进流出。对于voxel存储的压缩,有空闲/满值(1字节)、压缩行(每行1字节的材质信息)和未压缩行(每voxel 2字节,包括材质和占用)三种格式,并且会在写入voxel后动态地重新打包。 至于地形生成算法,Roblox可能采用了类似于Marching Cubes的算法,这种算法能根据高度场数据生成连续而光滑的表面,确保了在保持细节的同时,也实现了高效的内存管理和渲染性能。 Roblox的大型体素景观系统不仅强调用户生成内容的创新性,还注重性能优化和跨平台兼容,提供了一套强大的工具和API,使得开发者能够轻松创建和管理复杂且逼真的三维世界。