3D游戏图形游戏中的场景管理技术

2020-03-01 130浏览

  • 1.关于课程设计     多在网上查阅资料,重点查阅 Ogre 和其他 引擎的如何融合 组内 成 组组要合理分工 组 组 组 组 组组同工作 组组 要有耐心,要迎难而上,在编译、运行阶段 遇到各种各样的问题都是很正常的,努力去 解决,千万别放弃!! 一个组组组 程、 组 组组 游组组 开组组 有组组 情的人通常都通宵 组组组组组组组 达旦地去解决一个组 组 组 。
  • 2.关于课程设计   每周上课时,各组用 ppt 汇报下本组进展情 况,遇到了什么组 组 组 ,组 组 如何解决, 组组组组组组组 都 做了哪些工作(每组 5 分钟) 下周开始,下周汇报内容可把前面的游戏开 发建议书汇报下,同时汇报别的组对你的建 组。
  • 3.游戏中的场景管理技术
  • 4.游戏 Quake3 的场景
  • 5.三维游戏场景的组织和绘制  三维游戏中的图形技术可分为三个方面     场景的几何组织与优化  着重于提高绘制效率 , 建立优化的场景表达模型 场景的画面真实度 , 采用一系列特效生成技术  包括高级纹理映射 , 过程式建模等 基于真实物理定律的游戏效果模拟  主要是阴影模拟和碰撞检测 本次课程将着重讲解三维游戏场景的几何组织 , 优 化管理以及在此基础上的 OGRE 中的复杂场景的管 理
  • 6.三维游戏场景的组织和绘制      三组 组 组 景的 组组组组 和管理 组组 游戏场景的几何优化 三维场景的快速可见性判断与消隐 地形场景的绘制与漫游 碰撞检测简介
  • 7.基于场景图 (Scenegraph) 的表达和管 理    场景图是一种将场景中的各种数据以图的形式组织在一 起的场景数据管理方式。 场景图是一个树状结构,根结点是整个场景,树中的每 个节点可以有任意多的子节点,每个节点存储场景集成 的数据结构,包括几何物体、光源、相机、声音、物体 包围盒、变换和其他属性。 基于场景图表示场景绘制分两步进行:
  • 8.基于场景图 (Scenegraph) 的表达和管 理  第一步    根据游戏的需 要更新场景图 必要的部分 这种更新是部 分的 , 不需要 从根节点遍历 第二步  场景图的剔除 和绘制 . 首先 剔除不可见部 分,并保存上 一节点绘制状 态 太阳系的场景图
  • 9.基于绘制状态的场景管理    基本思路:把场景物体按照绘制状态分类 , 对于相同状态的物体只设置一次状态并始终保存当前状态列表。 状态切换是指任意影响画面生成的函数调用,包括纹理、材质、光照、融合等函数。 由于状态切换是一个非常耗时的操作,在实际的绘制操作中应避免频繁的状态切换 . 绘制状态集合 A ● 砖块纹理 ● 细节纹理 ● 红色材质 ● 无融合模式 绘制状态集合 B ● 砖块纹理 ● 细节纹理 ● 灰色材质 ● 无融合模式 绘制状态集合 C ● 砖块纹理 ● 凹凸纹理 ● 红色材质 ● 无融合模式 绘制状态集合实例 绘制状态集合 D ● 立方体纹理 ● 无纹理 ● 单色材质 ● 加法融合模 式
  • 10.绘制状态树实例 砖块纹 理 组 组 组 理 红色材质 无融合模 式 灰色材质 无融合模 式 凹凸组 理 组 红色材质 无融合模 式 立方体纹 理 无纹 理 单色材质 加法融合模 式
  • 11.基于场景包围体的场景组织  加速判断场景物体之间的空间关系 , 主要有 两种方法   对单个物体建立包围体 , 在包围体的基础上建立 包围盒层次树 场景剖分
  • 12.常用的包围体技术 (1)包围球 (2)AABB 包围盒 (3)OBB 包围盒 (4)平行六面包围体 (5)k 对平行面包围体
  • 13.包围体和包围球示例 球的体积比立方体大
  • 14.OBB 树的构造示意图 OBB (有向包围盒)本质上是一个最近贴近物体的长方体 比包围球和 AABB 更加逼近物体,能显著减少包围体的个数 通常进行两个回合的碰撞 / 相交检测时,用包围球进行第一回合的 快速测试,用 OBB 进行第 2 回合的测试 构造方式如下:
  • 15.物体的凸包围体  常用的类型      增量式 (incremental) 礼包式 (gift-wrapping) 分治式 (divide-and-conquer) 快速凸包算法 (quick-hull) k-dop(discreted orientation polytope, 离散有向多 面体 )  是指由 k/2 对平行平面包围而成的凸多面体,其中 k 为法向量的个数。其优点是比上述的包围体更紧 密地包围原物体 , 创建的层次树节点更少
  • 16.8-dop 结构
  • 17.场景绘制的几何剖分  将场景中的几何物体通过层次性机制组织起来  优点   使用灵活 , 能快速剔除层次树的整个分枝 , 并加速碰撞检测 过程 . 注意  要保持树的平衡 !
  • 18.包围树
  • 19.常用的几何剖分技术  BSP( 空间二叉剖分 ) 树 (左)场景的 BSP 树剖分;(右) BSP 树结构示意图
  • 20.BSP 树的构造过程 (左)一次剖分后的场景平面图;(右)一次剖分后的 BSP 树 (左)两次剖分后的场景平面图;(右)两次剖分后的 BSP 树
  • 21.BSP 算法处理四个嵌套遮挡的多边形   BSP 树是一个预处理的排序算法,因此 BSP 树本质上可看作画家 算法的扩展。 用画家算法无法处理四个嵌套遮挡的多边形情形
  • 22.BSP 树的缺点     尽管已被已被广泛使用在三维游戏引擎中, 但存在一些问题: 不太适合动态场景 构造时间长,只能以预处理方式进行 通常可以结合 PVS( 潜在可见集 ) 减少实时 漫游时 BSP 树遍历的复杂度
  • 23.四叉树 ( a )场景多边形; ( b )第一次剖分; ( c )第二次剖分
  • 24.八叉树 (a) ( a )初始节点; (b) ( b )第一次剖分; (c) ( c )第二次剖分
  • 25.八叉树与 BSP 树比较   八叉树易于构造和使用,而且在视域裁剪和 碰撞检测过程中,八叉树要优于 BSP 树 . BSP 树的长处在于能进行深度排序,方便处 理透明度和可见性计算
  • 26.景物包围体和场景剖分技术比较 (左)场景包围体技术(右)场景剖分技术 场景包围体技术紧密包围物体,不同的包围体可能有重合 场景剖分技术紧密贴合空间,一个物体可能会跨越几个子空间
  • 27.场景剖分技术比较 技 术 名 称 适 用 场 景 构建复杂度 实 用 性 二叉树 尺寸不是特别大的室内建筑场景 复杂 大部分三维游戏引擎 四叉树 室外基于高度场的地形 一般 仅用于地形绘制 八叉树 大规模三维室内、外空间场景 一般 复杂三维游戏引擎 均匀八叉树 体素表示场景、分布均匀的三维 场景 简单 少量三维游戏引擎
  • 28.景物包围体和场景剖分技术比较 场景包围体技术 场景剖分技术 表 示 方 式 层次物体表示 层次空间表示 剖 分 方 式 物体剖分 场景剖分 聚 类 方 式 物体的层次聚类 空间的层次聚类 层 次 细 节 物体层次细节 空间层次细节 主 要 作 用 围围物 体将空 围围 区域区分开来 围 围 围 围 围 围绕区域将物体区分开来 代 表 方 法 包围球树 OBB- 树、 AABB 树、 k-DOP 二叉树、四叉树、八叉树、均匀三维网 格
  • 29.层次细节 (LOD) 技术     简单取舍型 LOD 平滑过渡型 LOD 静态 LOD 动态 LOD
  • 30.LOD
  • 31.经典的简化算法  顶点删除  边删除   最有效 ! 面删除 基于边删除的顶点简化
  • 32.兔子模型的四个层次
  • 33.LOD Models
  • 34.渐进网格和连续多分辨率绘制技术  对于数据量庞大的复杂模型    LOD 模型只能预先产生多个间断的简化模型 引起实时绘制时图形画面的跳跃 为克服 LOD 的缺点 ,Huppe 等人于 1995 年 提出  渐进网格技术 (Progressive Mesh)   预计算简化过程中原顶点和新顶点的关系 由基本网格模型逐步恢复模型细节
  • 35.示例 : SpeedTree 的 LOD 过渡
  • 36.示例 : SpeedTree 的 LOD 过渡
  • 37.示例 :SpeedTree 的 LOD 过渡
  • 38.
  • 39.组 景 的可 组组组 性判断 组
  • 40.可见性判断算法分类
  • 41.遮挡面剔除技术
  • 42.遮挡面剔除技术   适用于人造建筑物少的室外组组 景 代表性算法 : 基于组组 影体技 组组组 (左)遮挡剔除之前;(右)基于阴影体的遮挡剔除
  • 43.包围球加速 在实际绘制时遮挡应先被处理。处理遮挡时先进行遮挡测试, 一般采用包围体加速技术 (左)球 A 至少在一个平面之外,球 B 在所有平面之内,但其半径大 于球心到其中一个平面的距离,球 C 在所有平面之后且到所有平面的距 离足够大。(右)一种包围球没有被完全遮挡但包围盒被完全遮挡的情形 ,故物体不应被绘制
  • 44.可见性计算(适用于室内场景)  可见性( Visibility )算法用于决定场景中可能可见的 物体     一般的:保守地指定这些物体并将他们发送到图形绘制引擎 确切的可见性决定对于游戏而言是可能的,但是代价太大 因此,存在平衡:在软件中进行可见性判断的时间和在硬件 中绘制多余的不可见物体的代价 最简单的就是绘制引擎本身自带的视域裁剪算法  但是这个算法对于高度复杂性的场景并不合适,特别当很多 物体位于单个象素之后  比如,第一人称组 角游 组组 组组 中常 组组组 的建筑物具有高 组组 组组组 组 度的深度复杂性。
  • 45.区分可见性信息  Cell-to-Cell 可见性    Cell-to-Region 可见性    告知在一个 cell 中的某点处是否可以看到其他的房间 但是无法知道每个房组 的那个部分可能是可 组组组组组组组组组组组 的,也无法知道 组组组组组组 观察者在这个房间的哪个地方可以见到另外的房间 可以知道某点处,其他房间的哪些部分是可见的Cell-To-Object:对于某给定的房间,告知哪些物体是可见的。 Eye-To-Region 可见性   记录当前视点处的哪些房间的哪些部分是可见的 同理, Eye-to-Cell 以及 Eye-To-Object
  • 46.基于入口 (Portal) 技术的可见性判断  根据单元与单元之间的邻接图 , 通过深度遍 历建立起单元与单元的入口序列
  • 47.基于入口结构的绘制技术  分为两类    优点    精细型入口绘制方式 粗略型入口绘制技术 方便定义场景 快速绘制 缺点   消耗大量的内存 , 组取 效率的提高 不适合室外渲染
  • 48.Cell-Portal 结构  许多可见性算法假设单元和入口的数据结构   数据结构类似于一个图:节点是房间,边是入口 Portals 本质的意思是两个房间的墙之间存在洞 Portal 形状一般是多边形  两个房间之间也可有多个 Portals   如何建立这个数据图?    Kd-trees 或者 BSP 树用于生成 cell 结构以及寻找与之相关的 portals 自动或者手工生成 建筑物最合适这种情况
  • 49.Cell Portal 实例  A B A B  C D C D E F E F Portals 可以是 房间的边缘 (即墙壁) Graph 一般保 存相邻信息  每个房间保 留其外向的 边(即 portal s)
  • 50.Cell-Portal 可见性   跟踪观察者所在的房间 然后遍历 graph 穷举所有可见的区域  可以预处理,对每一个房间计算可能可见集合 potentially visible set (PVS)   Cell-to-region 可见性,或者 cell-to-object 可见性 也可以在运行之间更进一步地精确获得可见集合 从已知观察者的位置出发  Eye-to-region 或者 Eye-to-cell 可见性   平衡:节省下列的时间 vs. 计算小的可能可见集合的代价  与所在环境有关,如房间的尺寸、房间物体的个数…
  • 51.PVS:'>PVS: