{企业通用培训}培训讲义游戏中的场景管理技术

上传人:精****库 文档编号:140792484 上传时间:2020-08-01 格式:PPTX 页数:98 大小:4.97MB
返回 下载 相关 举报
{企业通用培训}培训讲义游戏中的场景管理技术_第1页
第1页 / 共98页
{企业通用培训}培训讲义游戏中的场景管理技术_第2页
第2页 / 共98页
{企业通用培训}培训讲义游戏中的场景管理技术_第3页
第3页 / 共98页
{企业通用培训}培训讲义游戏中的场景管理技术_第4页
第4页 / 共98页
{企业通用培训}培训讲义游戏中的场景管理技术_第5页
第5页 / 共98页
点击查看更多>>
资源描述

《{企业通用培训}培训讲义游戏中的场景管理技术》由会员分享,可在线阅读,更多相关《{企业通用培训}培训讲义游戏中的场景管理技术(98页珍藏版)》请在金锄头文库上搜索。

1、游戏中的场景管理技术,作业,对游戏的评价(每个人) 10% 小组游戏proposal (每组) 10% 对其他小组游戏proposal的评价(每组)10% 请用OGRE实现任意一项 10% 三维光照 场景组织 光影特效(包括阴影) 大程作业 40% 平时点名 20%,游戏Quake3的场景,三维游戏场景的组织和绘制,三维游戏中的图形技术可分为三个方面 场景的几何组织与优化 着重于提高绘制效率 场景的画面真实度,采用一系列特效生成技术 包括高级纹理映射,过程式建模等 基于真实物理定律的游戏效果模拟 主要是阴影模拟和碰撞检测 本次课程将着重讲解三维游戏场景的几何组织,优化管理以及在此基础上的OGR

2、E中的复杂场景的管理,三维游戏场景的组织和绘制,三维场景的组织和管理 游戏场景的几何优化 三维场景的快速可见性判断与消隐 地形场景的绘制与漫游 碰撞检测简介,基于场景图(Scenegraph)的表达和管理,第一步 根据游戏的需要更新场景图必要的部分 这种更新是部分的,不需要从根节点遍历 第二步 场景图的剔除和绘制,太阳系的场景图,基于绘制状态的场景管理,把场景物体按照绘制状态分类,绘制状态集合实例,绘制状态树实例,基于场景包围体的场景组织,加速判断场景物体之间的空间关系,主要有两种方法 对单个物体建立包围体,在包围体的基础上建立包围盒层次树 场景剖分,常用的包围体技术,包围体和包围球示例,球的

3、体积比立方体大,OBB树的构造示意图,物体的凸包围体,常用的类型 增量式(incremental) 礼包式(gift-wrapping) 分治式(divide-and-conquer) 快速凸包算法(quick-hull) k-dop(discreted orientation polytope,离散有向多面体) 比上述的包围体更紧密地包围原物体,创建的层次树节点更少,8-dop结构,场景绘制的几何剖分,将场景中的几何物体通过层次性机制组织起来 优点 使用灵活,能快速剔除层次树的整个分枝 注意 要保持树的平衡!,包围树,常用的几何剖分技术,BSP树,(左)场景的BSP树剖分;(右)BSP树结构

4、示意图,BSP树的构造过程,(左)一次剖分后的场景平面图;(右)一次剖分后的BSP树,(左)两次剖分后的场景平面图;(右)两次剖分后的BSP树,BSP算法处理四个嵌套遮挡的多边形,用画家算法无法处理四个嵌套遮挡的多边形情形,四叉树,(a)场景多边形; (b)第一次剖分; (c)第二次剖分,八叉树,(a) (b) (c),(a)初始节点; (b)第一次剖分; (c)第二次剖分,景物包围体和场景剖分技术比较,(左)场景包围体技术(右)场景剖分技术,景物包围体和场景剖分技术比较,景物包围体和场景剖分技术比较,层次细节(LOD)技术,简单取舍型LOD 平滑过渡型LOD 静态LOD 动态LOD,LOD,

5、经典的简化算法,顶点删除 边删除 最有效! 面删除,基于边删除的顶点简化,兔子模型的四个层次,LOD Models,渐进网格和连续多分辨率绘制技术,对于数据量庞大的复杂模型 LOD模型只能预先产生多个间断的简化模型 引起实时绘制时图形画面的跳跃 为克服LOD的缺点,Huppe等人于1995年提出 渐进网格技术(Progressive Mesh) 预计算简化过程中原顶点和新顶点的关系 由基本网格模型逐步恢复模型细节,示例: SpeedTree的LOD过渡,示例: SpeedTree的LOD过渡,示例:SpeedTree的LOD过渡,Demo,场景的可见性判断,可见性判断算法分类,遮挡面剔除技术,

6、遮挡面剔除技术,适用于人造建筑物少的室外场景 代表性算法:基于阴影体技术,(左)遮挡剔除之前;(右)基于阴影体的遮挡剔除,包围球加速,(左)球A 至少在一个平面之外,球B在所有平面之内,但其半径大于球心到其中一个平面的距离,球C在所有平面之后且到所有平面的距离足够大。(右)一种包围球没有被完全遮挡但包围盒被完全遮挡的情形,故物体不应被绘制,可见性计算(适用于室内场景),可见性(Visibility)算法用于决定场景中可能可见的物体 一般的:保守地指定这些物体并将他们发送到图形绘制引擎 确切的可见性决定对于游戏而言是可能的,但是代价太大 因此,存在平衡:在软件中进行可见性判断的时间和在硬件中绘制

7、多余的不可见物体的代价 最简单的就是绘制引擎本身自带的视域裁剪算法 但是这个算法对于高度复杂性的场景并不合适,特别当很多物体位于单个象素之后 比如,第一人称视角游戏中常见的建筑物具有高度的深度复杂性。,区分可见性信息,Cell-to-Cell 可见性 告知在一个cell中的某点处是否可以看到其他的房间 但是无法知道每个房间的那个部分可能是可见的,也无法知道观察者在这个房间的哪个地方可以见到另外的房间 Cell-to-Region 可见性 可以知道某点处,其他房间的哪些部分是可见的 Cell-To-Object: 对于某给定的房间,告知哪些物体是可见的。 Eye-To-Region 可见性 记录

8、当前视点处的哪些房间的哪些部分是可见的 同理,Eye-to-Cell 以及 Eye-To-Object,基于入口(Portal)技术的可见性判断,根据单元与单元之间的邻接图,通过深度遍历建立起单元与单元的入口序列,基于入口结构的绘制技术,分为两类 精细型入口绘制方式 粗略型入口绘制技术 优点 方便定义场景 快速绘制 缺点 消耗大量的内存,换取效率的提高 不适合室外渲染,Cell-Portal 结构,许多可见性算法假设单元和入口的数据结构 数据结构类似于一个图:节点是房间,边是入口 Portals本质的意思是两个房间的墙之间存在洞 Portal 形状一般是多边形 两个房间之间也可有多个Porta

9、ls 如何建立这个数据图? Kd-trees 或者BSP树用于生成cell结构以及寻找与之相关的 portals 自动或者手工生成 建筑物最合适这种情况,Cell Portal 实例,Portals 可以是房间的边缘(即墙壁) Graph一般保存相邻信息 每个房间保留其外向的边(即portals),A,B,C,D,E,F,A,B,C,D,E,F,Cell-Portal 可见性,跟踪观察者所在的房间 然后遍历graph穷举所有可见的区域 可以预处理,对每一个房间计算可能可见集合potentially visible set (PVS) Cell-to-region 可见性,或者 cell-to-

10、object 可见性 也可以在运行之间更进一步地精确获得可见集合 从已知观察者的位置出发 Eye-to-region 或者 Eye-to-cell 可见性 平衡:节省下列的时间 vs. 计算小的可能可见集合的代价 与所在环境有关,如房间的尺寸、房间物体的个数,PVS:可能可见集,PVS: 对于某个特定的房间,可能可以看到的房间/区域/物体/多边形 一般地,保存可以看见的物体的标识号 也要考虑内存的因素 预处理的计算过程 应该能良好地管理动态变化的物体列表 用法: 可见性确定 对于当前房间,绘制所有PVS中的多边形 做为第一步:获得可能相关的区域,并做进一步处理,Cell-to-Cell PVS

11、,Cell A 在 B的 PVS中,当且仅当存在一根线,从B出发射到A,并且在途中与任何物体不相交 隔壁房间理所当然在PVS之中,I 的PVS 包括: B, C, E, F, H, J,Stab 树,这个树状结构表示: 当前房间的PVS 一个串着的相关的portal序列 在进一步的可见性处理中 可以减少需要检查处理的cells/portals 数目,A,C,D,E,A/C,C/D1,C/D2,C/E,A,B,C,D,E,F,D,F,D/F,Cell-to-Cell的用法,大多数算法比cell-to-cell可见性算法更复杂 因为它过估计 当实际上99.6%的模型应该是不可见的时候,仅排除了大约

12、90%的模型, 而更好的算法可以排除98% 但是,保持cell-to-cell可见性有利于动态物体 当房间中有一个移动的物体 并且房间是静态的,Cell-to-Cell的缺点,存在的问题: 将一个房间中的所有物体都标记为可能可见,尽管只有一小部分是可能可见 如果我们要列出可能可见集意味着我们要将这个房间中的所有物体都列出来。 并没有考虑到观察者的位置,无法报告观察者可能看不到的物体 进一步处理可以解决这个问题,Cell-To-Region 可见性,记录房间中某点处可能可见的某个房间的某个区域 因此,只绘制这个区域中的物体 关键想法视设置隔离平面(对于二维,就是隔离线):,如果将左边的porta

13、l视为光源,动态可见性处理,PVS 完全是一个预处理过程 在运行时刻,只需要绘制PVS即可 更进一步的优化是做进一步处理 有时候由PVS指导 大多数游戏不这么做 一个可能的办法是观察者的位置已知,因此可以使用 Eye-to-Region的可见性,Eye-to-Region (1),View,Eye-to-Region (2),没有Cell 或者Portals怎么办?,很多场景并没有好的cell和portal结构 场景中没有大的共面多边形去做为遮挡器或者房间的墙 例如森林-你无法看到后面的场景,但是总不能设置叶子为Cell 解决方案? 定义一些遮挡物体,称为occluders并利用他们来剔除几何

14、物体,Occluders,若 occluder是一个多边形 否则,使用物体的侧影轮廓线 从视点和多边形的边构成裁剪平面 也叫支撑平面:Supporting planes 所有在支撑平面内部的是不可见的 Occluder自身是一个裁剪平面 位于其外部的是可见的,eye,occluder,supporting planes,Occluders(续),Occluders 一般在预处理阶段获得 选择的标准? 如果它遮挡了很多物体 如果大的多边形与视点很近,该方法很有效 场景中的一些物体也可以融合起来形成大的occluders 例如,将很多树的billboards融合 occluding 多边形可以任意

15、指定,但是,每一occluder 只对某一些视点区域有效 问题:如果一个物体被某个occluder部分遮挡,又被另外一个部分遮挡, 那么很难决定是否该物体被全部遮挡,Occluders(续),用多个occluders来隐藏一个物体是一个很有趣的问题 Hierarchical Z-Buffer 方法在图像(屏幕)空间建立遮挡子 需要特殊的图形硬件与软件实现 张寒松的Hierarchical Occlusion Maps(层次遮挡图) 将遮挡子绘制到一个纹理图中,然后将物体与纹理比较 Schaufler Occluder Fusion 建立一个被遮挡区域的空间数据结构,真实的游戏场景,当打开遮挡面

16、剔除时,仅需绘制7,000个三角形,帧率为50fps。当遮挡面剔除关闭时,三角形绘制数目增长到17,300, 帧率下降到20 fps,地形场景的绘制与漫游,(上左)地形的基础三角网格; (上右)高度图;(下左)应用高度图后的地形网格; (下右)渲染后的地形图,游戏中的地形场景,地形绘制,基于四叉树的绘制方法 利用图形硬件加速 绘制模式 保留模式 立即模式 绘制优化 使用场景的层次剖分技术进行视域剔除 消除对画面贡献极小的多边形,自适应的四叉树剖分,根据当前节点的误差度量判断是否需要继续剖分 可能在两个相连的节点之间产生漏洞 解决方法 保证两个相邻节点之间最多相差1个层次 保证两个相邻的边拥有相同的顶点数目,地形绘制的优化,动态层次细节算法 缺点 层次之间切换会产生跳跃感 几何变形法 具有光滑过渡的视觉效果,地形绘制中的难题,存储量大,内存消耗

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 企业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号