首页 / 专利库 / 电脑图像 / 视锥体裁剪 / 一种基于绘制状态的多属性对象绘制顺序优化方法

一种基于绘制状态的多属性对象绘制顺序优化方法

阅读:212发布:2020-06-29

专利汇可以提供一种基于绘制状态的多属性对象绘制顺序优化方法专利检索,专利查询,专利分析的服务。并且一种基于绘制状态的多属性对象绘制顺序的优化方法,其步骤为:(1)在预处理阶段,读取场景的模型后根据场景中所有对象的绘制属性,为每个对象关联相应的绘制状态,并将不同状态间的转换关系表示为一个带权 有向图 ,每条边表示两个状态间的转换,以转换开销为权值,然后在此状态转换图的 基础 之上采用最优化 算法 找到优化的状态转换序列;(2)在实时绘制阶段,首先对场景进行可见性裁剪,得到当前视点下可见的对象的集合,对集合中对象按照它们所关联的绘制状态,按照预处理阶段所得到的绘制序列中的顺序进行排序,最后按顺序将可见的对象发送到显示 硬件 进行绘制。本 发明 有效地提高了复杂场景中多属性对象的绘制效率,并能够针对不同的显示硬件,进行相应的优化,具有较好适应性。,下面是一种基于绘制状态的多属性对象绘制顺序优化方法专利的具体信息内容。

1、一种基于绘制状态的多属性对象绘制顺序的优化方法,其特征在于步骤如下:
第一步,在预处理阶段,读取场景的模型后根据场景中所有对象的绘制属性,为每个对 象关联相应的绘制状态,并将不同状态间的转换关系表示为一个带权有向图,每条边表示两 个状态间的转换,以转换开销为权值;然后在此状态转换图的基础之上采用最优化算法找到 优化的状态转换序列,供实时绘制时为对象进行排序;
第二步,在实时绘制阶段,对场景进行可见性裁剪,得到当前视点下可见的对象集合, 对所述对象集合中对象按照它们所关联的绘制状态进行排序,确定对象绘制顺序,最后按此 绘制顺序依次将可见的对象发送到显示硬件进行绘制。
2、根据权利要求1所述的基于绘制状态的多属性对象绘制顺序的优化方法,其特征在 于:所述第一步中为每个对象关联相应的绘制状态的方法如下:
(1)遍历场景中每个对象的绘制属性信息并进行统计,忽略切换开销小于某个设定 值的绘制属性,将得到的绘制属性作为绘制状态的属性项;
(2)再次遍历场景中的每个对象,为每个对象建立绘制状态,并根据每个对象的绘 制属性信息设置绘制状态中相应的属性项,并与每个对象建立关联。
3、根据权利要求1所述的基于绘制状态的多属性对象绘制顺序的优化方法,其特征在 于:所述第一步中将不同绘制状态间的转换关系表示为带权有向图,并使用最优化算法得到 优化的状态转换序列的步骤如下:
(1)遍历场景中的所有对象以及其所关联的绘制状态,由互不相同的绘制状态组成 一个集合,称为绘制状态集U;
(2)根据当前显示硬件下的属性切换开销,计算所述绘制状态集U中每对不同绘制 状态之间的转换开销;
(3)以绘制状态集U中的所有元素,即不同的绘制状态作为图的顶点,连接顶点的 边表示两个状态之间的转换,各边的权值表示相应绘制状态间转换的开销,从而所有不 同绘制状态间的转换关系将用一个带权有向图来表示;
(4)采用最优化算法,将寻找一个使状态转换开销近似最小的状态转换序列转化为 在步骤(3)所得到的状态转换图中的一个经典的TSP问题,即带权有向完全图中的旅行 商问题,最终得到一个优化的状态转换序列X。
4、根据权利要求1所述的基于绘制状态的多属性对象绘制顺序的优化方法,其特征在 于:所述第二步中确定对象绘制顺序的步骤如下:
(1)对场景中的所有对象依次进行视锥裁剪和遮挡裁剪,得到当前视点下可见的对象集 合VS;
(2)遍历场景中的所有对象以及其所关联的绘制状态,为绘制状态集U中的每个绘 制状态生成一个对象集合,初始均为空;
(3)遍历可见对象集合VS中的每个对象,将其加入所关联的绘制状态的对象集U中;
(4)按照预处理阶段所得到的优化的状态转换序列X中的顺序,为对象集合中的对象 进行排序。
5、根据权利要求1所述的可见性裁剪方法,其特征在于:其步骤如下:
(1)首先进行视锥体裁剪;
(2)对视锥体裁剪得到的对象进行遮挡裁剪。
6、根据权利要求3所述的基于绘制状态的多属性对象绘制顺序的优化方法,其特征在 于:所述步骤(2)中根据当前显示硬件下的属性切换开销,计算所述绘制状态集U中每 对不同绘制状态之间的转换开销的方法为:为在绘制的数据量等其他条件相同的情况下, 分别对在不进行属性切换和进行相同次数属性切换下的绘制时间进行测试,其时间差即可作 为此绘制属性的相对切换开销大小。

说明书全文

技术领域

发明一种基于绘制状态的多属性对象绘制顺序优化方法,属于计算机虚拟现实和计算 机图形学技术领域,主要在处理大规模场景中多属性对象的绘制加速中采用,可广泛应用于 三维图形引擎的设计,实现复杂场景的实时漫游等。

背景技术

长期以来大规模复杂场景的高效绘制是实时绘制研究中的一个重要内容,也是计算 机图形学领域的研究热点。随着人们对虚拟场景的规模和视觉效果的要求不断提高,目 前场景中对象的数量越来越大,对象的绘制属性也越来越复杂。目前针对场景的几何数 据量大的问题主要使用了可见性剔除和细节层次表示(Level of Detail,LOD)等方法来减 少传递给绘制流线的图元的数目。而由于复杂场景中的对象除了基本几何信息外还包 括光照、材质、纹理等多种绘制属性.这些属性的频繁切换将对绘制效率产生极大的影 响,进而降低绘制的实时性。
当前的图形硬件通常拥有管线体系结构,不同的图形数据能够并行的在独立的管线 阶段并行处理。显示硬件所接收到的和处理的数据通常存在本地的一个存储器内即显示 存储器。绘制管线也可以是可编程的,比如vertex shader阶段和pixel shader阶段在一定 程度上可以由用户进行编程控制。一个绘制状态将存储在显存中,管线的多个处理阶段 将根据绘制状态的来进行相应的处理。绘制状态包括一定数量的条件,参数,设置和指 令等等,比如shader指令,纹理数据,光照属性等。
许多图形系统的性能的设计大多考虑数据的吞吐量,即能够更快获取数据到图形硬 件。比如将需要绘制的数据从内存传送到显存中。如果图形硬件不能够从主存中足够快 地获得所需的数据,图形管线将会导致空闲,性能将降低。通常来说主存到显存的数据 和显存到主存的数据传输是一个通路,虽然现在一些技术,如AGP技术,提高了数据的 吞吐性能,但是在当前的图形应用中传输的数据量也在不断提高。当场景中不同对象拥 有许多不同的纹理时,将导致请求总线反复地传输纹理数据到显存,特别是三维纹理, 将消耗大量的带宽。随着通过总线向显存传输的数据量越来越大,总线出现负载,则图 形硬件的性能将大大降低。
图形系统的另外一个考虑的性能是绘制属性的切换给绘制管线带来的开销。许多绘 制属性的改变需要在使用新属性进行绘制前刷新绘制管线。比如当一个新的纹理将在不 同的阶段使用,而管线需要在完成当前的某些阶段处理的数据,才能够开始一个新的管 线,使用新的纹理进行绘制。这将导致管线的空闲及绘制管线的阻塞。其他的绘制属性 的切换比如材质,光照,混合参数等等也会导致管线处理阶段的空闲,影响显示硬件的 处理速度。
然而通常在场景模型的建模和场景的绘制流程中并没有考虑到这种绘制属性的切换 给绘制效率带来的影响,在绘制过程中待绘制的对象的数据按任意的顺序传给图形硬件 进行绘制。在某些三维引擎中,如OSG等,对绘制状态进行了管理,并且为了尽量减少 绘制属性的切换,对绘制对象进行了排序。但其排序没有考虑到不同的属性切换对绘制 管线带来的开销不同,仅仅避免了冗余的切换,减少属性切换的次数,没有针对其带来 的切换开销优化排序。而且同一属性的切换在不同的显示硬件条件下,其对绘制管线的 影响即造成的开销也不同,在OSG等引擎中的状态管理和优化也没有考虑对不同硬件下 不同开销的适应性问题。
一些图形绘制应用中采用懒更新的机制,当一个绘制属性需要被设置时,先查看当 前此属性的设置情况,只有与需要的属性设置不同时才改变显示硬件的此属性的状态, 虽然这样避免了一些冗余的切换,但是其对象绘制顺序仍然没有根据实际的属性切换开 销来进行优化。

发明内容

本发明的技术解决问题:克服现有技术的不足,提供一种基于绘制状态的多属性对 象绘制顺序优化方法,该方法对于拥有大量多属性对象的复杂场景,可以根据不同硬件 条件下绘制属性的切换开销情况,优化对象的绘制顺序,减少大量对象绘制中属性切换 带来的开销,提高绘制的效率,且具有较好适应性。
本发明采用的技术方案是:一种基于绘制状态的多属性对象绘制顺序优化方法,通 过定义绘制状态对场景中对象的绘制属性进行管理,并将绘制状态的转换关系表示为一 个带权有向图,进而在此基础上利用最优化算法找到绘制状态转换的优化序列,从而在 实时绘制阶段按优化绘制顺序绘制对象,提高了绘制效率,具体步骤如下:
第一步,在预处理阶段,读取场景的模型后根据场景中所有对象的绘制属性,为每个对 象关联相应的绘制状态,并将不同状态间的转换关系表示为一个带权有向图,每条边表示两 个状态间的转换,以转换开销为权值;然后在此状态转换图的基础之上采用最优化算法找到 优化的状态转换序列,供实时绘制时为对象进行排序;
第二步,在实时绘制阶段,对场景进行可见性裁剪,得到当前视点下可见的对象集合, 对所述对象集合中对象按照它们所关联的绘制状态进行排序,确定对象绘制顺序,最后按此 绘制顺序依次将可见的对象发送到显示硬件进行绘制。
所述第一步中为每个对象关联相应的绘制状态的方法如下:
(1)遍历场景中每个对象的绘制属性信息并进行统计,忽略切换开销小于某个设定 值的绘制属性,将得到的绘制属性作为绘制状态的属性项;
(2)再次遍历场景中的每个对象,为每个对象建立绘制状态,并根据每个对象的绘 制属性信息设置绘制状态中相应的属性项,并与每个对象建立关联。
所述第一步中将不同绘制状态间的转换关系表示为带权有向图,并使用最优化算法得到 优化的状态转换序列的步骤如下:
(1)遍历场景中的所有对象以及其所关联的绘制状态,由互不相同的绘制状态组成 一个集合,称为绘制状态集U;
(2)根据当前显示硬件下的属性切换开销,计算所述绘制状态集U中每对不同绘制 状态之间的转换开销;
(3)以绘制状态集U中的所有元素,即不同的绘制状态作为图的顶点,连接顶点的 边表示两个状态之间的转换,各边的权值表示相应绘制状态间转换的开销,从而所有不 同绘制状态间的转换关系将用一个带权有向图来表示;
(4)采用最优化算法,将寻找一个使状态转换开销近似最小的状态转换序列转化为 在步骤(3)所得到的状态转换图中的一个经典的TSP问题,即带权有向完全图中的旅行 商问题,最终得到一个优化的状态转换序列X。
上述步骤(2)中不同显示硬件的属性切换开销的确定方法可以参考显示硬件商提供的技 术参数也可以通过实际的测试来得到所有属性切换开销的相对值,本发明使用的测试方法为 在绘制的数据量等其他条件相同的情况下,分别对在不进行属性切换和进行相同次数属性切 换下的绘制时间进行测试,其时间差即可作为此绘制属性的相对切换开销大小。
所述第二步中确定对象绘制顺序的步骤如下:
(1)对场景中的所有对象依次进行视锥裁剪和遮挡裁剪,得到当前视点下可见的对象集 合VS;
(2)遍历场景中的所有对象以及其所关联的绘制状态,为绘制状态集U中的每个绘 制状态生成一个对象集合,初始均为空;
(3)遍历可见对象集合VS中的每个对象,将其加入所关联的绘制状态的对象集U中;
(4)按照预处理阶段所得到的优化的状态转换序列X中的顺序,为对象集合中的对象 进行排序。
本发明与现有技术相比的有益效果在于:从绘制属性切换给显示硬件带来的开销的度 来优化对象的绘制顺序,通过绘制状态来管理对象的绘制属性,根据对象所需的绘制属性的 情况排除一些切换开销较小的属性,并且通过计算各个绘制状态间的转换开销,将寻找使切 换开销近似较小的绘制状态转换序列问题转化为一个带权有向图上的一个TSP求解问题。本 发明在预处理阶段完成上述过程,并通过使用最优化算法来求解,得到绘制当前场景的优化 的状态转换序列。这样所有的处理都在预处理阶段完成,不会影响实时运行阶段的效率,有 效地提高了绘制效率,并且优化过程考虑了整个场景中对象的绘制,达到了全局的近似最优; 而且可以根据不同的显示硬件对于绘制属性切换具有的不同的开销,来计算不同状态转换的 开销,从而进行相应的优化,因此对于不同的显示硬件具有较好的适应性。
附图说明
图1为本发明的整体流程示意图;
图2为本发明中为场景中的对象关联绘制状态,并得到绘制状态集U的示意图;
图3为本发明的绘制状态以及不同绘制状态间转换开销计算的示意图;
图4为本发明中通过最优化算法得到优化的绘制状态转换序列的示意图;
图5为本发明将绘制状态转换关系转化为的一个带权有向图;
图6为本发明中采用的贪心算法求解TSP问题的一个实例的流程图

具体实施方式

如图1所示,本发明的实施过程包括预处理和实时绘制两个阶段。
1、预处理阶段
预处理阶段包括两个步骤:
第一步:根据场景中对象的绘制属性信息,确定绘制状态中的属性项。
首先读取场景中的对象,由于各个对象在绘制时所需要的绘制属性是已知的,因此遍历 所有对象,根据各个对象的绘制属性,确定绘制状态中的属性项,如图3所示,绘制状态中 包括光照,混合,深度测试等相关的属性项。在绘制状态的属性项的构成中本发明将排除场 景中大多数对象都不需要的属性以及切换开销小于给定阀值的属性。因为这些属性对场景绘 制的影响较小,并且若考虑的属性过多,会使预处理阶段的计算更加复杂,所需时间更长。 绘制状态中的每一个属性项将对应相应的属性改变函数,以OpenGL为例,函数 glEnable(GL_LIGHTING)将设置LIGHTING项为ON。
第二步:将不同绘制状态间的转换关系表示为带权有向图,并使用最优化算法得到优化 的状态转换序列X。
再次遍历场景中的对象,为每个对象建立绘制状态,并根据对象的绘制属性信息设 置绘制状态中相应的属性项,并将此状态与对象建立关联,如图2中所示,从而场景中对 象所需的绘制属性均能由其所关联的绘制状态来表示。在一个场景中不同的对象可以关联相 同的绘制状态,说明他们在绘制时所需的绘制属性基本相同,比如对象6与10具有相同的 绘制状态D。
然后将所有对象所关联的不同的绘制状态组成一个绘制状态集U,如图2所示U由不同 的绘制状态A,B,C,D组成。两个不同的绘制状态中至少存在一个绘制属性项的设置不同,他 们之间的转换需要一定的开销。本发明根据当前显示硬件下的属性切换开销情况来计算绘制 状态集U中的每两对不同绘制状态之间的转换开销。如图3所示,状态A向状态B转换(表 示为T(A,B))的开销C(A,B)为状态A与B中相应属性项设置不同的属性进行切换的开销的总 和,即为DepthTest(深度测试)属性由ON切换为OFF,以及Blendfunc(混合方程)由FUNC1切 换为FUNC2的开销的总和,计算如下:
C(A,B)=cost(Light_ON,Light_OFF)+cost(Blend_FUNC1,Blend_FUNC2)
其中cost(Light_ON,Light_OFF)为DepthTest(深度测试)属性由ON切换为OFF的开 销,cost(Blend_FUNC1,Blend_FUNC2)为Blendfunc(混合方程)由FUNC1切换为FUNC2 的开销。如图4所示,可以得到一个所有不同绘制状态对之间的转换开销表。
得到了绘制状态集U和U中各个状态之间的转换开销后,本发明可以将绘制状态间的 转换关系表示成一个带权有向图,图中每个顶点代表U集合中的一个绘制状态,连接两个顶 点的边表示一个状态向另一个状态的转换,他的权值为相应状态转换的开销,如图5所示, 此带权有向图定义如下:
G=(V,E)
V={vi|vi∈U}
E={|vi,vj∈V∧i≠j}
C(vi,vj)=Cost(vi,vj),表示有向边的权值.
带权有向图构造完成后,就可以将寻找一个使状态转换开销最小的状态转换序列问题转 化为一个带权有向图上求的一条路径开销最小的Hamilton回路问题,这是一个典型的带权有 向完全图中的旅行商问题(TSP),即找到一个节点访问序列,以最小的路径开销访问每个 节点一次并回到起始点,TSP本质上是一个排列组合问题,对n个顶点的有向完全图,测试 所有的可能需要n!(表示n的阶乘)次计算来找到最优的解,但求其次优解只需2n或者更低的 复杂度.求解TSP问题是一个最优化的问题,可以使用不同的最优化算法来解决,图6是一 个利用贪心算法的解决方案。最优化算法完成后,得到一个优化的状态转换序列,如图5所 示,所得的状态转换序列为.
2、实时绘制
实时绘制阶段包括两个步骤:
第一步:可见性裁剪,得到可见对象集。
为了减少需要绘制的对象数目,对场景中的对象进行可见性裁剪。首先对所有对象进行 视锥裁剪,将对象的包围盒与当前视点的视锥体进行相交测试,排除在视锥体外的对象。然 后在对视锥裁剪得到的可见对象进行遮挡裁剪,遮挡裁剪采用图形硬件提供的遮挡查询技 术,剔除掉在视锥体内,但被遮挡的对象。最终得到当前视点下可见的对象集合VS。
第一个阶段:视锥裁剪
1.更新对象的包围盒信息与当前视锥信息;
2.对象包围盒信息与视锥体求交计算;
3.将完全在视锥体外部的对象丢弃,为不可见对象。
第二阶段:遮挡裁剪
1.将视锥裁剪后得到的对象依据视点到包围盒中心的距离进行排序;
2.将对象的包围盒发送到显示硬件,进行精确的硬件遮挡查询,得到可见集VS。
第二步:按照预处理阶段得到的绘制状态序列中的顺序对对象进行排序,并按顺序绘制 对象。
由于视点位置和对象分布的任意性,这个集合中的对象的顺序是无序的,本发明利用预 处理阶段得到的状态转换序列,来对集合中的对象进行排序。然后按顺序将对象发送到显示 硬件进行绘制,具体做法如下:
(1)为绘制状态集U中的每个绘制状态生成一个对象集合,初始均为空。
(2)遍历可见对象集VS中的每个对象,根据其所关联的绘制状态,加入到相应状态的 对象集合中。
(3)按照预处理阶段所得到的绘制状态序列X中的顺序依次将相应绘制状态所对应的 对象集合中的对象发送到显示硬件进行绘制,并且在绘制状态转换时,调用相应的属性设置 函数。如图4所示,按照优化状态转换序列对对象进行排序后,绘制时只需要进行 3次状态转换,并且总的状态转换开销是近似最小的。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈