游戏中的场景管理技术浙江大学软件学院梁秀波Email:liangxb@cst.zju.edu.cn游戏Quake3的场景三维游戏场景的组织和绘制•三维游戏中的图形技术可分为三个层面–场景的几何组织与优化•着重于提高绘制效率–场景的画面真实度,采用一系列特效生成技术•包括高级纹理映射,过程式建模等–基于真实物理定律的游戏效果模拟•主要是阴影模拟和碰撞检测•本次课程将着重讲解三维游戏场景的几何组织,优化管理以及在此基础上的OGRE中的复杂场景的管理三维游戏场景的组织和绘制•三维场景的组织和管理•游戏场景的几何优化•三维场景的快速可见性判断与消隐•地形场景的绘制与漫游•碰撞检测简介基于场景图(Scenegraph)的表达和管理•第一步–根据游戏的需要更新场景图必要的部分–这种更新是部分的,不需要从根节点遍历•第二步–场景图的剔除和绘制星旋转行星A旋转卫星A卫星B行星B旋转卫星C卫星D太阳系的场景图太阳系场景图绘制伪代码绘制太阳将当前矩阵压入矩阵堆栈设置第一个旋转矩阵绘制行星A将当前矩阵压入矩阵堆栈设置第二个旋转矩阵绘制卫星A绘制卫星B从矩阵堆栈弹出顶部矩阵绘制行星B将当前矩阵压入矩阵堆栈设置第三个旋转矩阵绘制卫星C绘制卫星D从矩阵堆栈弹出顶部矩阵从矩阵堆栈弹出顶部矩阵改进后的太阳系场景图绘制伪代码绘制太阳将当前矩阵压入矩阵堆栈将当前矩阵压入矩阵堆栈设置第一个旋转矩阵绘制行星A将当前矩阵压入矩阵堆栈设置第二个旋转矩阵绘制卫星A绘制卫星B从矩阵堆栈弹出顶部矩阵从矩阵堆栈弹出顶部矩阵将当前矩阵压入矩阵堆栈设置第三个旋转矩阵绘制行星B将当前矩阵压入矩阵堆栈设置第四个旋转矩阵绘制卫星C绘制卫星D从矩阵堆栈弹出顶部矩阵从矩阵堆栈弹出顶部矩阵从矩阵堆栈弹出顶部矩阵基于绘制状态的场景管理•把场景物体按照绘制状态分类绘制状态集合A●砖块纹理●细节纹理●红色材质●无融合模式绘制状态集合B●砖块纹理●细节纹理●灰色材质●无融合模式绘制状态集合C●砖块纹理●凹凸纹理●红色材质●无融合模式绘制状态集合D●立方体纹理●无纹理●单色材质●加法融合模式绘制状态集合实例绘制状态树实例砖块纹理细节纹理红色材质无融合模式灰色材质无融合模式凹凸纹理红色材质无融合模式立方体纹理无纹理单色材质加法融合模式基于场景包围体的场景组织•加速判断场景物体之间的空间关系,主要有两种方法–对单个物体建立包围体,在包围体的基础上建立包围盒层次树–场景剖分常用的包围体技术(1)包围球(2)AABB包围盒(3)OBB包围盒(4)平行六面包围体(5)k对平行面包围体包围体和包围球示例球的体积比立方体大OBB树的构造示意图物体的凸包围体•常用的类型–增量式(incremental)–礼包式(gift-wrapping)–分治式(divide-and-conquer)–快速凸包算法(quick-hull)–k-dop(discretedorientationpolytope,离散有向多面体)•比上述的包围体更紧密地包围原物体,创建的层次树节点更少8-dop结构场景绘制的几何剖分•将场景中的几何物体通过层次性机制组织起来–优点–使用灵活,能快速剔除层次树的整个分枝•注意–要保持树的平衡!包围树常用的几何剖分技术•BSP树ABCDEFP1P2P3P4P5P1P2P5AP3FEDP4CB(左)场景的BSP树剖分;(右)BSP树结构示意图BSP树的构造过程(左)一次剖分后的场景平面图;(右)一次剖分后的BSP树(左)两次剖分后的场景平面图;(右)两次剖分后的BSP树BSP算法处理四个嵌套遮挡的多边形•用画家算法无法处理四个嵌套遮挡的多边形情形四叉树(a)场景多边形;(b)第一次剖分;(c)第二次剖分八叉树(a)(b)(c)(a)初始节点;(b)第一次剖分;(c)第二次剖分景物包围体和场景剖分技术比较技术名称适用场景构建复杂度实用性二叉树尺寸不是特别大的室内建筑场景复杂大部分三维游戏引擎四叉树室外基于高度场的地形一般仅用于地形绘制八叉树大规模三维室内、外空间场景一般复杂三维游戏引擎均匀八叉树体素表示场景、分布均匀的三维场景简单少量三维游戏引擎景物包围体和场景剖分技术比较场景包围体技术场景剖分技术表示方式层次物体表示层次空间表示剖分方式物体剖分场景剖分聚类方式物体的层次聚类空间的层次聚类层次细节物体层次细节...