文章目录
考试内容
一、填空题(每空1分,共16分)
二、名词解释(每题3分,共18分)
三、简答题(每题4分,共16分)
四.设计题(10分)
1 三维场景的组织和管理
- 在实时绘制的前提下,控制每帧画面绘制的多边形数目、检查游戏中的物理特性及管理网络吞吐量等
- 利用遮挡剔除技术减少场景复杂度(例如背面剔除算法,法线向量与视线向量的数量积正负判断正反面)
场景图的表达和管理
第一步:
根据游戏的需要更新场景图必要的部分
这种更新是部分的,不需要从根节点遍历
第二步:
场景图的剔除和绘制
矩阵堆栈
矩阵堆栈的顶部矩阵就是当前的ModelView 矩阵 ©.
矩阵堆栈的好处:允许一系列位置(代表了坐标系统)保留下来,并在需要的时候使用它们。
绘制状态的场景管理
状态切换是指任意影响画面生成的函数调用,包括纹理、材质、光照、融合等。
切换状态很耗时。
思路:将场景按绘制状态分类,相同状态的物体只设置一次状态,并始终保存当前状态列表。
按各种状态的耗时进行排序
- 树的顶层表示最耗时的状态改变
- 叶节点表示代价最小的状态改变
景物包围体的场景组织
加速判断场景物体之间的空间关系,主要有两种方法
- 对单个物体建立包围体,在包围体的基础上建立包围盒层次树
- 场景剖分
优化场景绘制的几何剖分
将场景中的几何物体通过层次性机制组织起来
优点:使用灵活,能快速剔除层次树的整个分枝
注意:注意保持树的平衡
BSP树
类型:
均匀剖分
平行坐标轴剖分
任意平面剖分
构建:
基于场景几何
基于分割平面
BSP算法:
遍历树,判断视点位于分割面的哪一侧。
BSP为预处理的排序算法,本质上可看成画家算法的扩展。
BSP树的缺点:
- 当多边形与分割面相交时,必须将多边形沿分割面分隔,产生过多的多边形。
- 较难根据场景几何自动选取分割面。
四叉树
八叉树
几种技术比较
八叉树与BSP的比较
景物包围体和场景剖分技术比较
2 游戏场景的几何优化
本质:在不影响画面视觉效果的条件下,逐次简化景物的表面细节来减少场景的几何复杂度,从而提高绘制效率
简单取舍型LOD
计算每个物体(一般采用物体包围盒)投影在屏幕的像素数,如果小于给定阈值,不绘制物体。
缺点:
- 没有减少模型细节
- 当相机运动时,造成跳跃,从而产生视觉失真。
平滑过渡型LOD
与简单取舍型LOD相比,对于不应绘制的物体,将物体淡出视野
适用于模拟小的植被,装饰物等。
静态LOD
减少物体多边形数目
核心思想:预计算同一物体的多个不同精度的版本,精度情况参考屏幕投影尺寸
动态LOD
根据相机位置和物体的重要性动态简化网格
经典的简化算法:
- 顶点删除
- 边删除
- 面删除
3 三维场景的快速可见性判断与消隐
3.1 可见性判断算法分类
3.2 遮挡面剔除技术
适用于人造建筑物少的室外场景
代表性算法:基于阴影体技术
包围球加速
遮挡体设置的两种途径:
- 利用建模软件包编辑遮挡体
- 集成遮挡体功能到游戏编辑器(如Unity里的Occlusion Culling)
3.3 可见性计算
作用:用于决定场景中可能可见的物体
- 视域裁剪算法(绘制引擎本身自带的)
- Z-buffer算法(帧缓存+深度缓存 易于在图形硬件上实现,并演化成标准的硬件消隐技术。缺点:需要将齐次坐标转换为三维坐标)
- 基于入口技术的可见性判断(适于室内游戏的场景管理,根据单元与单元之间的邻接图,通过深度遍历建立起单元与单元的入口序列)
- 基于入口结构的绘制技术(精细型、粗略型 优点:方便定义场景、快速绘制 缺点:消耗大量的内存、不适合室外渲染)
3.4 PVS:潜在可见集
在入口技术中,有n个单元,每个单元设置一个n位组成的标志位。第i个单元相对于当前单元如可见,那么设置第i位为1。
某个单元可见的单元数目>特定视点的可见单元数。
PVS是一种预处理技术。
PSV与遮挡面剔除技术
- 遮挡面剔除技术预先剔除肯定不可见的面
- PVS提取那些潜在可见面