【培训课件】游戏中的场景管理技术(共99张).pptx
《【培训课件】游戏中的场景管理技术(共99张).pptx》由会员分享,可在线阅读,更多相关《【培训课件】游戏中的场景管理技术(共99张).pptx(99页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 对游戏的评价(每个人) 10% 小组游戏proposal (每组) 10% 对其他小组游戏proposal的评价(每组)10% 请用OGRE实现任意一项 10% 三维光照 场景组织 光影特效(包括阴影) 大程作业 40% 平时点名 20%三维游戏中的图形技术可分为三个方面 场景的几何组织与优化 着重于提高绘制效率 场景的画面真实度,采用一系列特效生成技术 包括高级纹理映射,过程式建模等 基于真实物理定律的游戏效果模拟 主要是阴影模拟和碰撞检测本次课程将着重讲解三维游戏场景的几何组织,优化管理以及在此基础上的OGRE中的复杂场景的管理三维场景的组织和管理游戏场景的几何优化三维场景的快速可见性判
2、断与消隐地形场景的绘制与漫游碰撞检测简介第一步 根据游戏的需要更新场景图必要的部分 这种更新是部分的,不需要从根节点遍历第二步 场景图的剔除和绘制太阳系的场景图把场景物体按照绘制状态分类绘制状态集合A 砖块纹理 细节纹理 红色材质 无融合模式绘制状态集合B 砖块纹理 细节纹理 灰色材质 无融合模式绘制状态集合C 砖块纹理 凹凸纹理 红色材质 无融合模式绘制状态集合D 立方体纹理 无纹理 单色材质 加法融合模式 绘制状态集合实例 砖块纹理 细节纹理 红色材质 无融合模式 灰色材质 无融合模式 凹凸纹理 红色材质 无融合模式 立方体纹理 无纹理 单色材质 加法融合模式 加速判断场景物体之间的空间关
3、系,主要有两种方法 对单个物体建立包围体,在包围体的基础上建立包围盒层次树 场景剖分 (1)包围球 (2)AABB 包围盒 (3)OBB 包围盒 (4)平行六面包围体 (5)k 对平行面包围体 球的体积比立方体大球的体积比立方体大常用的类型 增量式(incremental) 礼包式(gift-wrapping) 分治式(divide-and-conquer) 快速凸包算法(quick-hull) k-dop(discreted orientation polytope,离散有向多面体) 比上述的包围体更紧密地包围原物体,创建的层次树节点更少将场景中的几何物体通过层次性机制组织起来 优点 使用灵
4、活,能快速剔除层次树的整个分枝注意注意 要保持树的平衡要保持树的平衡!BSP树 (左)场景的BSP树剖分;(右)BSP树结构示意图 (左)一次剖分后的场景平面图;(右)一次剖分后的BSP树 (左)两次剖分后的场景平面图;(右)两次剖分后的BSP树 用画家算法无法处理四个嵌套遮挡的多边形情形 (a)场景多边形; (b)第一次剖分; (c)第二次剖分 (a) (b) (c)(a)初始节点; (b)第一次剖分; (c)第二次剖分(左)场景包围体技术(右)场景剖分技术 技 术 名 称适 用 场 景构建复杂度实 用 性二叉树尺寸不是特别大的室内建筑场景复杂大部分三维游戏引擎四叉树室外基于高度场的地形一般
5、仅用于地形绘制八叉树大规模三维室内、外空间场景一般复杂三维游戏引擎均匀八叉树体素表示场景、分布均匀的三维场景简单少量三维游戏引擎场景包围体技术场景剖分技术表 示 方 式层次物体表示层次空间表示剖 分 方 式物体剖分场景剖分聚 类 方 式物体的层次聚类空间的层次聚类层 次 细 节物体层次细节空间层次细节主 要 作 用围绕物体将空间区域区分开来围绕区域将物体区分开来代 表 方 法包围球树OBB-树、AABB树、k-DOPS二叉树、四叉树、八叉树、均匀三维网格、kD树简单取舍型LOD平滑过渡型LOD静态LOD动态LOD顶点删除边删除 最有效!面删除基于边删除的顶点简化 对于数据量庞大的复杂模型 LO
6、D模型只能预先产生多个间断的简化模型 引起实时绘制时图形画面的跳跃为克服LOD的缺点,Huppe等人于1995年提出 渐进网格技术(Progressive Mesh) 预计算简化过程中原顶点和新顶点的关系 由基本网格模型逐步恢复模型细节Demo适用于人造建筑物少的室外场景代表性算法:基于阴影体技术(左)遮挡剔除之前;(右)基于阴影体的遮挡剔除 (左)球A 至少在一个平面之外,球B在所有平面之内,但其半径大于球心到其中一个平面的距离,球C在所有平面之后且到所有平面的距离足够大。(右)一种包围球没有被完全遮挡但包围盒被完全遮挡的情形,故物体不应被绘制 可见性(Visibility)算法用于决定场景
7、中可能可见的物体 一般的:保守地指定这些物体并将他们发送到图形绘制引擎 确切的可见性决定对于游戏而言是可能的,但是代价太大 因此,存在平衡:在软件中进行可见性判断的时间和在硬件中绘制多余的不可见物体的代价最简单的就是绘制引擎本身自带的视域裁剪算法 但是这个算法对于高度复杂性的场景并不合适,特别当很多物体位于单个象素之后 比如,第一人称视角游戏中常见的建筑物具有高度的深度复杂性。Cell-to-Cell 可见性 告知在一个cell中的某点处是否可以看到其他的房间 但是无法知道每个房间的那个部分可能是可见的,也无法知道观察者在这个房间的哪个地方可以见到另外的房间Cell-to-Region 可见性
8、 可以知道某点处,其他房间的哪些部分是可见的 Cell-To-Object: 对于某给定的房间,告知哪些物体是可见的。Eye-To-Region 可见性 记录当前视点处的哪些房间的哪些部分是可见的 同理,Eye-to-Cell 以及 Eye-To-Objecto 根据单元与单元之间的邻接图,通过深度遍历建立起单元与单元的入口序列分为两类 精细型入口绘制方式 粗略型入口绘制技术优点 方便定义场景 快速绘制缺点 消耗大量的内存,换取效率的提高 不适合室外渲染许多可见性算法假设单元和入口的数据结构 数据结构类似于一个图:节点是房间,边是入口 Portals本质的意思是两个房间的墙之间存在洞 Port
9、al 形状一般是多边形 两个房间之间也可有多个Portals如何建立这个数据图? Kd-trees 或者BSP树用于生成cell结构以及寻找与之相关的 portals 自动或者手工生成建筑物最合适这种情况Portals 可以是房间的边缘(即墙壁)Graph一般保存相邻信息 每个房间保留其外向的边(即portals)ABCDEFABCDEF跟踪观察者所在的房间然后遍历graph穷举所有可见的区域 可以预处理,对每一个房间计算可能可见集合potentially visible set (PVS) Cell-to-region 可见性,或者 cell-to-object 可见性 也可以在运行之间更进
10、一步地精确获得可见集合 从已知观察者的位置出发 Eye-to-region 或者 Eye-to-cell 可见性 平衡:节省下列的时间 vs. 计算小的可能可见集合的代价 与所在环境有关,如房间的尺寸、房间物体的个数PVS: 对于某个特定的房间,可能可以看到的房间/区域/物体/多边形 一般地,保存可以看见的物体的标识号 也要考虑内存的因素预处理的计算过程 应该能良好地管理动态变化的物体列表用法: 可见性确定 对于当前房间,绘制所有PVS中的多边形 做为第一步:获得可能相关的区域,并做进一步处理Cell A 在 B的 PVS中,当且仅当存在一根线,从B出发射到A,并且在途中与任何物体不相交 隔壁
11、房间理所当然在PVS之中IJHGACBEFDI 的PVS 包括:B, C, E, F, H, J这个树状结构表示: 当前房间的PVS 一个串着的相关的portal序列在进一步的可见性处理中 可以减少需要检查处理的cells/portals 数目ACDEA/CC/D1C/D2C/EABCDEFDFD/F大多数算法比cell-to-cell可见性算法更复杂 因为它过估计 当实际上99.6%的模型应该是不可见的时候,仅排除了大约90%的模型, 而更好的算法可以排除98%但是,保持cell-to-cell可见性有利于动态物体 当房间中有一个移动的物体 并且房间是静态的存在的问题: 将一个房间中的所有物
12、体都标记为可能可见,尽管只有一小部分是可能可见 如果我们要列出可能可见集意味着我们要将这个房间中的所有物体都列出来。 并没有考虑到观察者的位置,无法报告观察者可能看不到的物体进一步处理可以解决这个问题记录房间中某点处可能可见的某个房间的某个区域 因此,只绘制这个区域中的物体关键想法视设置隔离平面(对于二维,就是隔离线):如果将左边的portal视为光源PVS 完全是一个预处理过程 在运行时刻,只需要绘制PVS即可更进一步的优化是做进一步处理 有时候由PVS指导 大多数游戏不这么做一个可能的办法是观察者的位置已知,因此可以使用 Eye-to-Region的可见性View很多场景并没有好的cell
13、和portal结构 场景中没有大的共面多边形去做为遮挡器或者房间的墙 例如森林-你无法看到后面的场景,但是总不能设置叶子为Cell解决方案? 定义一些遮挡物体,称为occluders并利用他们来剔除几何物体若 occluder是一个多边形 否则,使用物体的侧影轮廓线从视点和多边形的边构成裁剪平面 也叫支撑平面:Supporting planes所有在支撑平面内部的是不可见的 Occluder自身是一个裁剪平面 位于其外部的是可见的eyeoccludersupporting planesOccluders 一般在预处理阶段获得选择的标准? 如果它遮挡了很多物体如果大的多边形与视点很近,该方法很有
14、效场景中的一些物体也可以融合起来形成大的occluders 例如,将很多树的billboards融合 occluding 多边形可以任意指定,但是,每一occluder 只对某一些视点区域有效问题:如果一个物体被某个occluder部分遮挡,又被另外一个部分遮挡, 那么很难决定是否该物体被全部遮挡用多个occluders来隐藏一个物体是一个很有趣的问题 Hierarchical Z-Buffer 方法在图像(屏幕)空间建立遮挡子 需要特殊的图形硬件与软件实现 张寒松的Hierarchical Occlusion Maps(层次遮挡图) 将遮挡子绘制到一个纹理图中,然后将物体与纹理比较 Scha
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 培训课件 培训 课件 游戏 中的 场景 管理 技术 99
限制150内