一种二维矢量渲染方法及装置与流程

文档序号:15077187发布日期:2018-08-01 02:10阅读:210来源:国知局

本发明涉及电子地图技术领域,特别是涉及一种移动端二维矢量渲染方法及装置。



背景技术:

随着移动互联网技术的普及,电子地图的应用也越来越广泛。在移动端显示电子地图时,由于需要在地图中显示的元素种类较多,包括线、面、图标、文字等内容,所以在二维电子地图中,需要支持多种不同元素的显示样式。为了支持各种元素的不同显示样式,有些地图采用离线渲染好所有的地图的图片,然后在移动端直接绘制图片。但是,这种方法的缺点是由于图片渲染时是在后台生成的,因此地图的更新周期较长,很难反映地图的一些实时变化,并且采用这种方法预渲染的图片是分等级的,不能实现地图的任意缩放。有些地图采用移动端实时渲染矢量数据,由于采用的是实时渲染导致数据的渲染效率较低,能耗较高。



技术实现要素:

针对于上述问题,本发明提供一种二维矢量渲染方法及装置,针对不同元素的前提下,实现了提高渲染效率的目的。

为了实现上述目的,根据本发明的第一方面,提供了一种二维矢量渲染方法,该方法包括:

对待渲染的二维矢量数据进行分组处理,得到分组后的数据;

根据分组后的数据的特征,对所述分组后的数据进行预处理,得到对应的三角面片;

将分组后的对应的三角面片进行描边处理,并进行矢量数据的绘制。

优选的,所述根据分组后的数据的特征,对所述分组后的数据进行预处理,得到对应的三角面片,包括:

根据分组后的数据的特征,将所述分组后的数据分为包含预设特征的数据组,其中,所述预设特征为线、带纹理的线和面;

将包含线特征的数据组中的线进行三角化处理,得到对应的三角面片;

将包含带纹理的线特征的数据组中的线进行三角化处理,得到对应的三角面片,并获得所述三角面片的各个顶点的纹理坐标;

将包含面特征的数据组中的面进行三角化处理得到三角面片,并将产生的三角化信息进行存储。

优选的,所述将分组后的对应的三角面片进行描边处理,并进行矢量数据的绘制,包括:

根据当前地图显示位置,计算所述三角面片的描边宽度;

计算获得所述三角面片顶点的扩充方向;

根据所述描边宽度,沿所述扩充方向对所述三角面片进行描边处理;

将描边处理后的三角面片,根据压盖优先级进行矢量数据的绘制。

根据本发明的第二方面,提供了一种二维矢量渲染装置,该装置包括:

分组模块,用于对待渲染的二维矢量数据进行分组处理,得到分组后的数据;

处理模块,用于根据分组后的数据的特征,对所述分组后的数据进行预处理,得到对应的三角面片;

描边模块,用于将分组后的对应的三角面片进行描边处理,并进行矢量数据的绘制。

优选的,所述处理模块包括:

分组单元,用于根据分组后的数据的特征,将所述分组后的数据分为包含预设特征的数据组,其中,所述预设特征为线、带纹理的线和面;

第一处理单元,用于将包含线特征的数据组中的线进行三角化处理,得到对应的三角面片;

第二处理单元,用于将包含带纹理的线特征的数据组中的线进行三角化处理,得到对应的三角面片,并获得所述三角面片的各个顶点的纹理坐标;

第三处理单元,用于将包含面特征的数据组中的面进行三角化处理得到三角面片,并将产生的三角化信息进行存储。

优选的,所述描边模块包括:

第一计算单元,用于根据当前地图显示位置,计算所述三角面片的描边宽度;

第二计算单元,用于计算获得所述三角面片顶点的扩充方向;

描边单元,用于根据所述描边宽度,沿所述扩充方向对所述三角面片进行描边处理;

绘制单元,用于将描边处理后的三角面片,根据压盖优先级进行矢量数据的绘制。

相较于现有技术,本发明通过对待渲染的二维矢量数据进行分组处理,得到分组后的数据;根据分组后的数据的特征,对所述分组后的数据进行预处理,得到对应的三角面片;通过计算描边宽度和顶点的扩充方向,对分组后的对应的三角面片进行描边处理,并进行矢量数据的绘制。由于对给定的二维矢量数据进行分组并根据分组后的内容进行预处理,即采用了不同的渲染策略,并且进行了描边处理,实现了通过较低的数据量提高了渲染效率的目的。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。

图1为本发明实施例一提供的一种二维矢量渲染方法的流程示意图;

图2为本发明实施例一中提供的一种描边处理的示意图;

图3为本发明实施例二提供的一种二维矢量渲染装置的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明的说明书和权利要求书及上述附图中的术语“第一”和“第二”等是用于区别不同的对象,而不是用于描述特定的顺序。此外术语“包括”和“具有”以及他们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有设定于已列出的步骤或单元,而是可包括没有列出的步骤或单元。

实施例一

参见图1为本发明实施例一提供的一种二维矢量渲染方法的流程示意图,该方法包括以下步骤:

s11、对待渲染的二维矢量数据进行分组处理,得到分组后的数据;

具体的,二维矢量数据的渲染采用分组、分层的方式进行渲染,因为要进行绘制的物体都是矢量数据,比如点、线、面等,分组是对要绘制的物体进行分组。即根据显示要求不同可以分为背景组、道路组和虚拟物体组,背景组包括背景面、绿地、水和建筑面等;道路组包括道路线和道路面等;虚拟组包括地铁线、地铁面和地下通道等。同时,根据压盖关系渲染时线绘制背景组,然后绘制道路组,最后绘制虚拟组,其中,所述的压盖关系表示物体间的压盖关系,如绿地面要压盖区域面、高速公路要压盖国道等。

s12、根据分组后的数据的特征,对所述分组后的数据进行预处理,得到对应的三角面片;

其中,所述步骤s12具体包括:

根据分组后的数据的特征,将所述分组后的数据分为包含预设特征的数据组,其中,所述预设特征为线、带纹理的线和面;

将包含线特征的数据组中的线进行三角化处理,得到对应的三角面片;

将包含带纹理的线特征的数据组中的线进行三角化处理,得到对应的三角面片,并获得所述三角面片的各个顶点的纹理坐标;

将包含面特征的数据组中的面进行三角化处理得到三角面片,并将产生的三角化信息进行存储。

可以理解的是,在步骤s11中分为了各个组,对应的组内要分各个层级进行对应的预处理。具体的:针对普通线的显示,如道路线和地铁线等,由于线的三角化算法速度较快,为了减少数据量,需要将线实时三角化成三角面片,赋予显示的颜色和必要的透明度进行显示;有的线是带有纹理显示的,如体路线等,在显示这类线的时候,不仅要对线进行三角化,同时还要赋予每个顶点纹理坐标,然后将所得的数据进行显示;由于面的三角化方法较复杂,运行较慢,因此需要在数据预处理的时候将三角化完成,然后将面的三角化信息存储起来,在渲染时直接读取三角面片进行渲染。

s13、将分组后的对应的三角面片进行描边处理,并进行矢量数据的绘制。

对应的,所述步骤s13具体包括:

根据当前地图显示位置,计算所述三角面片的描边宽度;

计算获得所述三角面片顶点的扩充方向;

根据所述描边宽度,沿所述扩充方向对所述三角面片进行描边处理;

将描边处理后的三角面片,根据压盖优先级进行矢量数据的绘制。

可以理解的是,描边的绘制同样使用线的三角化方法,为了保证描边的宽度不变,需要在着色器中,根据当前比例尺的大小和当前地形的显示实时计算描边的宽度,然后将三角面片的顶点向外扩充,因此在线的三角化时需要计算出顶点的扩充方向,并且在计算过程中需要首先明确三角面片的顶点,若该顶点在非端点处,则对应的扩充方向为顶点两条邻接线的角平分线;若该顶点在端点处,则对应的扩充方向为端点邻接线的垂线。具体的可以参见图2,在图2中虚线表示描边的几何线,实线组成的就是要绘制的三角面片(图中的三角面片只是为了说明进行了对应的放大显示,实际中,他们就是显示为一条细线),箭头线为扩充方向。以道路的描边为例进行说明,描边是指在绘制道路时,不只是将道路面的用一个颜色绘制出来,同时还会在道路的边界处用其他一种颜色绘制一条细线,用于使道路更加突出。描边在视觉上是一条很细的线,在绘制中,是将这条线扩充成三角面片进行绘制,计算扩充方向是为了在绘制过程中,实时改变三角面片的大小,已达到最终在屏幕上保证描边的宽度始终保持不变。在完成描边处理后,然后绘制矢量数据,根据各个图层的压盖优先级不同,需要先绘制压盖优先级小的图层,后绘制压盖优先级高的图层,其中,压盖优先级是产品设计时规定的,标识物体间的压盖关系,如绿地面要压盖区域面、高速公路要压盖国道等。

通过本发明实施例一公开的技术方案,对待渲染的二维矢量数据进行分组分层处理,分别采用不同的渲染策略,针对各个要素显示的特征,对分组后的数据进行预处理即三角化处理,然后根据计算获得的描边宽度和扩充防线进行对应的描边处理和矢量数据的绘制,通过较低的数据量提高了渲染效率,并且进一步实现了显示美观和降低资源消耗的目的。

实施例二

与本发明实施例一公开的二维矢量渲染方法相对应,本发明的实施例二还提供了一种二维矢量渲染装置,参见图3,该装置包括:

分组模块1,用于对待渲染的二维矢量数据进行分组处理,得到分组后的数据;

处理模块2,用于根据分组后的数据的特征,对所述分组后的数据进行预处理,得到对应的三角面片;

描边模块3,用于将分组后的对应的三角面片进行描边处理,并进行矢量数据的绘制。

相应的,所述处理模块2包括:

分组单元21,用于根据分组后的数据的特征,将所述分组后的数据分为包含预设特征的数据组,其中,所述预设特征为线、带纹理的线和面;

第一处理单元22,用于将包含线特征的数据组中的线进行三角化处理,得到对应的三角面片;

第二处理单元23,用于将包含带纹理的线特征的数据组中的线进行三角化处理,得到对应的三角面片,并获得所述三角面片的各个顶点的纹理坐标;

第三处理单元24,用于将包含面特征的数据组中的面进行三角化处理得到三角面片,并将产生的三角化信息进行存储。

对应的,所述描边模块3包括:

第一计算单元31,用于根据当前地图显示位置,计算所述三角面片的描边宽度;

第二计算单元32,用于计算获得所述三角面片顶点的扩充方向;

描边单元33,用于根据所述描边宽度,沿所述扩充方向对所述三角面片进行描边处理;

绘制单元34,用于将描边处理后的三角面片,根据压盖优先级进行矢量数据的绘制。

在本发明的实施例二中,在分组模块中通过对待渲染的二维矢量数据进行分组处理,得到分组后的数据;通过处理模块根据分组后的数据的特征,对所述分组后的数据进行预处理,得到对应的三角面片;在描边模块中计算获得描边宽度和扩充方向,将分组后的对应的三角面片数据进行描边处理,并进行矢量数据的绘制。由于对给定的二维矢量数据进行分组并根据分组后的内容进行预处理,即采用了不同的渲染策略,并且进行了描边处理,实现了通过较低的数据量提高了渲染效率的目的。

本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。

对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1