基于深度图实时绘制室外地表遮挡剔除以及加速方法技术

技术编号:10999940 阅读:135 留言:0更新日期:2015-02-04 20:37
本发明专利技术公开了一种基于深度图实时绘制室外地表遮挡剔除以及加速方法,包括以下步骤:绘制当前场景,并把场景的深度值通过加速算法保存到一张深度图中;对待检测模型的包围盒进行光栅化,并判断待检测模型包围盒中的像素和上述步骤一中深度值的大小,从而得出遮挡剔除的结果。在引擎中的场景编辑中设置一部分视线遮挡体,然后绘制场景中的所有物体,记录当前场景的视线遮挡体的最小深度值,将待检测的物体的包围盒的深度值和绘制场景得到的最小深度做比较,得到物体的可见性。达到具有较好的遮挡效果且能实时绘制的目的。

【技术实现步骤摘要】

本专利技术涉及计算机图像学领域,具体地,涉及一种。
技术介绍
随着计算机图形学技术的发展,可见性计算是计算机图像学中的一个基本的问题,其主要目的是对给定的场景和观察视点,通过场景物体的可见性,快速的剔除不需要绘制的物体,减少图形处理的几何复杂度,随着三维扫描技术和图形建模技术的快速发展,三维模型的规模和数据不断增大,最好的硬件的每秒只能对几万个三角形进行实时绘制,而对于室外地表绘制数据比较庞大,超过了一般图像软件的实时绘制和内存管理能力,使得大量复杂的场景绘制变得更加困难,可见性计算作为一种技术手段,得到越来越多研究学者的重视。 目前的技术一般是利用地平线遮挡来模拟大规模地形技术,其原理为:在室外的地表的山峰可以看成一个个物体,也可以被前面的更高的山峰遮挡,如果要绘制这种地形,绘制顺序是从前往后开始绘制且每次绘制都更新地平线位置,就能达到距离观察者地平线以下的物体将被剔除,其余的被渲染,把这种遮挡地平线剔除物体的方法称为地平线遮挡法,但是这种技术存在遮挡不完美,限制性比较多,每当视角切换时,地平线需要重新计算,不能实时绘制并且耗时的问题。
技术实现思路
本专利技术的目的在于,针对上述问题,提出一种,以实现具有较好的遮挡效果且能实时绘制的优点。 为实现上述目的,本专利技术采用的技术方案是:一种,包括以下步骤:步骤一、绘制当前场景,并把场景的深度值通过加速算法保存到一张深度图中;步骤二、对待检测模型的包围盒进行光栅化,并判断待检测模型包围盒中的像素和上述步骤一中深度值的大小,从而得出遮挡剔除的结果。 优选的,步骤一中所述的深度值具体为:在相机空间下,视椎体可见范围内,将可见模型进行分割,并对这些分割后的三角形给予光栅化得到场景深度值,那么可见模型分割三角形有三种情况:第一种是二角形全部在视椎体内;第二种是二角形两个顶点在视椎体内,第二种是二角形一个顶点在视椎体内;对于第一种情况,模型的三角形不用进行分割,第二种情况,将视椎体内多边形分为两个三角形,第三种情况,将视椎体内三角形分割成一个三角形。 优选的,步骤一所述的加速算法为:SSE加速指令和多线程并发对数据进行加速处理。 优选的,所述SSE加速指令为:把场景的深度图划分为N个格子,格子中的像素用SSE加速指令来处理;SSE加速指令具体为对4个float数据同时进行加减乘除,在扫描深度图像素时,一次扫描便得到4个像素的深度值。 优选的,多线程并发为:首先创建一张256*256大小的渲染目标,将这个空的渲染目标划分为横向M,纵向N的格子,每个格子分配给一个线程来处理,且在每个线程中都应用上述SSE加速指令,每个线程对应处理一个单元,处理的结果生成了一张深度图片元。 优选的,所述M=N=4,从而渲染目标被划分为16格,分配到16个线程来处理,最终生成的16个深度图片元,共同构成了一个当前场景的深度图。 优选的,步骤二中所述的包围盒为AABB类型的包围盒,该AABB类型的包围盒包含模型碰撞体,由各边平行于坐标轴的最小六面体组成。 优选的,步骤二中所述的判断待检测模型包围盒中的像素和深度值得大小具体为:首先每个线程处理光栅化后的多个包围盒,遍历每一个包围盒,采样待检测模型包围盒中的像素信息深度值,并与当前场景的深度值作比较,当待检测模型包围盒中任意像素的深度值小于当前场景深度值时,该待检测模型包围盒是可见的;当待检测模型包围盒中任意像素的深度值都大于当前场景深度值时,该待检测模型包围盒不可见。 优选的,还包括对深度图纹理和待检测的对象都进行降采样处理,经过降采样后的图像变小。 优选的,在每个线程做深度值大小判断的过程中,采用隔像素扫描,并根据模型对象和相机的距离,动态的改变像素扫描间隔数,模型对象距离相机越远,隔像素扫描的间隔越大,模型对象距离相机越近,采样的间隔数越小。 本专利技术的技术方案具有以下有益效果:本专利技术中的技术方案,事先在引擎中的场景编辑中设置一部分视线遮挡体(模型),然后绘制场景中的所有物体,记录当前场景的视线遮挡体的最小深度值,将待检测的物体的包围盒的深度值和绘制场景得到的最小深度做比较,得到物体的可见性。达到具有较好的遮挡效果且能实时绘制的目的。 下面通过附图和实施例,对本专利技术的技术方案做进一步的详细描述。 【附图说明】 图1为模型的视线遮挡体示意图;图2为未使用模型遮挡体场景示意图;图3为场景中深度图划分多个格子的示意图;图4为对图3划分为分多个格子进行线程处理的流程示意图;图5为对模型进行分割以及光栅化后模型情况示意图;图6为场景中N个包围盒的分割示意图;图7为对图6所示的包围盒的处理流程图;图8为本专利技术实施例所述的流程图。 其中,图中1-视线遮挡体;2-深度图。 【具体实施方式】 以下结合附图对本专利技术的优选实施例进行说明,应当理解,此处所描述的优选实施例仅用于说明和解释本专利技术,并不用于限定本专利技术。 遮挡剔除,是当一个物体被其他物体遮挡住而不再摄像机的可见范围内时不对其进行渲染,它在3D图形处理并不是自动的处理,在场景中使用这种遮挡剔除技术,可以比不使用此技术提高50左右的帧率,所以尽量将遮挡技术加入游戏引擎。本专利技术技术方案提供了一种基于深度图的遮挡方法,具体步骤如图8所示:第一:绘制当前场景,并把场景的深度值通过加速算法保存到一张深度图中;在游戏引擎中,为了加快游戏的开发进度,与引擎开发的同时也开发了一些辅助的工具编辑器,例如:场景编辑器,动作编辑器,模型编辑器等,这些工具编辑器对模型大小和动作进行调整,缩放以及设置光照以便更好的应用于游戏中。为了模拟室外物体遮挡问题,事先在场景编辑器中设置一些模型作为视线遮挡体,这些模型略小于真实模型大小,这些模型是有多个三角形组成。如图1所示:图中标注I为视线遮挡体。 把这些模型的三角形在CPU光栅化处理,包括两个操作,一个是几何操作:即输出的帧缓存来存放每个像素的颜色值,另一个是物理操作,即需要一个深度缓存来存放每个像素的深度值,然而得到场景深度值之前需要在相机空间下,视椎体可见范围内,将可见模型进行分割,并对这些分割后的三角形给予光栅化得到场景深度值,那么可见模型分割三角形有三种情况:第一种是三角形全部在视椎体内,不需要分割;第二种是三角形两个顶点在视椎体内,第三种是三角形一个顶点在视椎体内;对于第一种情况,模型的三角形不用进行分割,第二种情况,将视椎体内多边形分为两个三角形,第三种情况,将视椎体内三角形分割成一个三角形。这样分割三角形的好处,使光栅化操作时,减少内存消耗,如图5所示。 本专利技术技术方案只保存了深度缓存中的深度值,利用这个深度值来得到当前场景的视线遮挡体的深度信息,这些深度值保存在一张深度缓存中,其里面存储着每个像素点的(绘制在屏幕上)深度值。 本专利技术技术方案采用了 SSE加速指令和多线程并发对数据进行加速处理,具体做法为:把场景的深度图划分为N个格子,格子中的像素用SSE加速指令来处理。 SSE加速指令的算法为:对4个float数据同时进行加减乘除,在扫描深度图像素时,一次扫描可以得到4个像素的深度值,这样数据的处理所花费的时间可以提高4倍。 多线程并发处理的加速算法,首先创建一张256*256大小的渲本文档来自技高网...
<a href="http://www.xjishu.com/zhuanli/55/201410564194.html" title="基于深度图实时绘制室外地表遮挡剔除以及加速方法原文来自X技术">基于深度图实时绘制室外地表遮挡剔除以及加速方法</a>

【技术保护点】
一种基于深度图实时绘制室外地表遮挡剔除以及加速方法,其特征在于,包括以下步骤:步骤一、绘制当前场景,并把场景的深度值通过加速算法保存到一张深度图中;步骤二、对待检测模型的包围盒进行光栅化,并判断待检测模型包围盒中的像素和上述步骤一中深度值的大小,从而得出遮挡剔除的结果。

【技术特征摘要】
1.一种基于深度图实时绘制室外地表遮挡剔除以及加速方法,其特征在于,包括以下步骤: 步骤一、绘制当前场景,并把场景的深度值通过加速算法保存到一张深度图中; 步骤二、对待检测模型的包围盒进行光栅化,并判断待检测模型包围盒中的像素和上述步骤一中深度值的大小,从而得出遮挡剔除的结果。2.根据权利要求1所述基于深度图实时绘制地表遮挡,其特征在于,步骤一所述的深度值为:在相机空间下,视椎体可见范围内,将可见模型进行分割,并对这些分割后的三角形给予光栅化得到场景深度值,所述可见模型分割三角形有三种情况: 第一种是二角形全部在视椎体内;第二种是二角形两个顶点在视椎体内,第二种是二角形一个顶点在视椎体内;对于第一种情况,模型的三角形不用进行分割,第二种情况,将视椎体内多边形分为两个三角形,第三种情况,将视椎体内三角形分割成一个三角形。3.根据权利要求1或2所述的基于深度图实时绘制室外地表遮挡剔除以及加速方法,其特征在于,步骤一所述的加速算法为:SSE加速指令和多线程并发对数据进行加速处理。4.根据权利要求3所述的基于深度图实时绘制室外地表遮挡剔除以及加速方法,其特征在于,所述SSE加速指令为:把场景的深度图划分为N个格子,格子中的像素用SSE加速指令来处理; SSE加速指令具体为对4个float数据同时进行加减乘除,在扫描深度图像素时,一次扫描便得到4个像素的深度值。5.根据权利要求4所述的基于深度图实时绘制室外地表遮挡剔除以及加速方法,其特征在于,多线程并发为:首先创建一张256*256大小的渲染目标,将这个空的渲染目标划分为横向M,纵向N的格子,每个格子分配给一个线程来处理,且...

【专利技术属性】
技术研发人员:张翼
申请(专利权)人:无锡梵天信息技术股份有限公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1