当前位置: 首页 > 专利查询>南京大学专利>正文

一种基于屏幕的三维线状符号渲染方法技术

技术编号:17009344 阅读:23 留言:0更新日期:2018-01-11 05:29
本发明专利技术公开了一种基于屏幕的三维线状符号渲染方法,利用着色器语言实现三维地图中线状地图符号的高效率、高质量渲染,包括如下步骤:建立矢量线段与地形单元的映射关系,对矢量节点及索引编码,形成节点纹理和索引纹理;在片元着色器中,查找、重建与当前片元关联的矢量线段;对矢量线段索引分组排序,求解线段节点在节点纹理中的纹理坐标,从节点纹理读取节点属性;根据关联线段的符号类型选择对应的渲染函数,并按照优先级安排计算次序。通过对直接对屏幕片元进行计算,本发明专利技术能够在地形渲染过程中实现线状符号的贴合渲染。此外,精确的空间位置关系计算及灵活的片元操作满足了不同样式的线状符号的渲染,并保证了实时渲染的效率。

【技术实现步骤摘要】
一种基于屏幕的三维线状符号渲染方法
本专利技术属于计算机图形学和地图制图学领域,具体涉及一种基于屏幕的三维线状符号渲染方法。
技术介绍
目前对三维线状符号的渲染研究有如下三个方面:(1)基于纹理的方法基于纹理映射的方法将矢量线当成纹理的一部分,根据这一思想,线状符号被栅格化后融合到纹理图像上,这一过程即可在预处理时也可在实时渲染中进行。将带有符号的纹理映射到地形模型上,可以实现符号和地形表面的精确匹配。由于栅格影像的分辨率有限,场景缩放时矢量符号的边缘会产生锯齿现象。一个解决方法是在GPU中实时生成纹理,但这种方法只对平坦的地形有效;Zhietal.提出了一种基于视点的渲染方法来避免锯齿现象,但是矢量数据的数量是有限制的。进一步的,基于纹理的方法难以处理周期变化的符号,当纹理被映射到地形上时,投影变形会破坏符号的周期。(2)基于几何的方法基于几何的方法将矢量线作为单独的模型处理,换言之,地形和矢量线在不同的渲染流程中进行。这种方法简单、快速,但缺点也很明显:当视点快速变化时,矢量线需动态调整使之与地形精确匹配,然而,由于地形LOD的存在,地形模型结构复杂且实时变化,这常常会带来悬浮穿刺等视觉误差。针对每一个地形LOD预先计算矢量线节点是一个可取的选择,但是大量的节点是难以避免的。关于实时插入或删除节点的研究已经在进行,只是出于性能的考虑,这些方法多适用于平坦的地形。一些学者将几何方法与着色器语言结合起来,用以绘制更为复杂的线状符号,但是仍然没有解决符号与地形的精确匹配问题。(3)基于屏幕的方法近些年来,基于屏幕的方法得到了快速的发展,其中代表性的是模板阴影体(SVA)算法。阴影体算法将矢量线挤压为多面体,然后利用点-面算法生成一个模板。相较于前两种算法,该方法提供一种像素级别的渲染,并且有效消除了锯齿现象。考虑到每一个单独的颜色都至少生成一个模板,当一个符号内部包含不同的颜色时,计算量会非常大。特别的,一些线状符号包含特殊的形状例如三角形、圆形等,这对阴影体算法来说是个不小的挑战。Ohlariketal.提出将矢量线挤压为一个直立面的方法,但是只能渲染单像素宽度的矢量符号。通过投影反算可以快速计算像素与多面体的位置关系,这不可避免地带来了计算上的大量消耗。因此,投影反算的方法通常会使用GPU并行技术来提高效率。总体而言,目前三维线状符号算法还存在着一些缺陷。一方面,现有算法过多关注贴合精度和渲染效率,对线状符号本身的复杂性有所忽视,绘制的线状符号过于简单,难以满足表达多类型、多属性的矢量要素的需求,例如不同类型、等级的道路或深度发生变化的河流;另一方面,现有算法在处理拐角、相交等情况时通常带来大量的几何构建,这显著增加了算法的复杂度。此外,渲染效率也是一个不得不考虑的问题,复杂的线状符号意味着更多的预处理工作以及实时计算消耗,例如抗锯齿处理、实现透明度变化等。
技术实现思路
专利技术目的:针对现有三维地图中线状地图符号渲染方法的缺陷,本专利技术公开了一种基于屏幕的三维线状符号渲染方法,可以满足大规模数据量下渲染复杂线状地图符号的需求,利用着色器语言使线状符号渲染达到像素级,不仅解决了符号与地形的匹配问题,而且实现了多种样式线状符号的高质量渲染,增强三维地图的可读性。技术方案:本专利技术公开了一种基于屏幕的三维线状符号渲染方法,利用着色器语言将线状符号的渲染嵌入到地形渲染的过程中,实现三维地图中不同类型、不同级别的线状地图符号的像素级渲染,包括如下步骤:(1)筛选出矢量节点对符号绘制产生影响的属性,按次序将节点的属性存放在一个三维数组中,形成节点纹理;(2)建立矢量线段与地形单元的映射关系,并将其存放在一个三维数组中,形成索引纹理;(3)实时渲染时,根据屏幕片元的模型坐标在索引纹理中查找与当前屏幕片元关联的矢量线段,如果当前片元存在关联线段则进入步骤(4);如果不存在关联线段则将片元设为背景色,重新进入步骤(3)进行下一屏幕片元的处理至所有片元处理完成;(4)对矢量线段索引分组排序,逐一求解线段节点在节点纹理中的纹理坐标,从节点纹理读取节点属性;(5)按照矢量线段的优先级调用预定义的符号渲染函数,计算当前屏幕片元与关联矢量线段的位置关系,并判断片元是否位于线状符号的影响范围内,若不在影响范围内则将片元设为背景色,若在影响范围则将片元设为符号相应区域的颜色;重新进入步骤(3)进行下一屏幕片元的处理至所有片元处理完成。进一步地,步骤(1)中的属性包括矢量线ID、坐标、矢量线类型、累积长度、优先级、宽度系数及透明度系数。进一步地,步骤(1)中具体包括:(1.1)初始化一个三维数组data1[x][y][z],x与y的乘积大于等于矢量节点总数,z为9;(1.2)按次序将节点的属性存放在该数组中,保证线段的两个节点在纹理中前后相连,不同矢量线的节点存放同一数组中通过矢量线ID进行区分;(1.3)初始化一个矢量图像,数组data1作为该图像的数据源,并将该图像关联到节点纹理上。进一步地,步骤(2)中建立映射关系是在模型空间进行的,具体包括:(2.1)将地形在二维平面上划分为规则格网,格网单元大小大于符号宽度的一半,小于符号宽度;(2.2)初始化一个三维数组data2[x][y][z],x等于格网的长,y等于格网的宽,z为9;逐线段计算矢量线段的两个节点所属网格单元的行列号,根据两组行列号确定线段的矩形影响范围,向外拓展一个网格单元形成新的影响范围,将矢量线段的索引存到数组data2对应的位置;(2.3)初始化一个三维图像,将数组data2作为该图像的数据源,并将该图像关联到索引纹理上。进一步地,步骤(3)中在索引纹理中查找与当前屏幕片元关联的矢量线段的方法为:查找当前屏幕片元的关联线段在几何着色器中记录片元的模型坐标,求解该片元所属的地形单元行列号,行列号等于模型坐标除以格网单元大小,利用纹理查找函数从索引纹理中获取关联矢量线段的索引。进一步地,步骤(4)中求解线段节点在节点纹理中的纹理坐标,公式为:其中xtexture、ytexture为矢量节点在节点纹理中的坐标,LineStep为节点纹理的边长,VIndex为索引纹理中矢量线段的索引号,%表示取模运算。进一步地,步骤(5)中的根据优先级调用渲染函数,当一个片元受到多个符号的影响时,先计算优先级低的符号颜色,并将其替换为背景色,然后计算优先级高的符号覆盖优先级高的符号;如果同一类型符号优先级相同,则消除两个线状符号的边缘。进一步地,步骤(5)中计算片元和矢量线段的空间位置包括片元与线段的垂直距离H及片元到矢量线起始节点的累积距离L;其中,H的计算在二维平面上进行,如果H大于符号宽度的一半则片元不在符号的影响范围内,否则在影响范围内;L的计算在三维空间中进行,根据L和H确定片元位于符号的具体区域。有益效果:本专利技术方法通过构建矢量线段与地形单元的映射关系,生成节点纹理和索引纹理,其有益效果是将矢量线完整地传递到GPU中,使每个片元可以快速、准确找到关联线段,实现了在地形渲染过程中绘制线状符号;计算每个片元和关联线段的空间位置关系,其有益效果是精确判断片元所属的区域,能够绘制出色彩丰富、形状多变的符号,此外,还便于处理边缘、拐角等特殊区域;定制化的渲染函数有助于大规模、多类本文档来自技高网
...
一种基于屏幕的三维线状符号渲染方法

【技术保护点】
一种基于屏幕的三维线状符号渲染方法,其特征在于,包含以下步骤:(1)筛选出矢量节点对符号绘制产生影响的属性,按次序将节点的属性存放在一个三维数组中,形成节点纹理;(2)建立矢量线段与地形单元的映射关系,并将其存放在一个三维数组中,形成索引纹理;(3)实时渲染时,根据屏幕片元的模型坐标在索引纹理中查找与当前屏幕片元关联的矢量线段,如果当前片元存在关联线段则进入步骤(4);如果不存在关联线段则将片元设为背景色,重新进入步骤(3)进行下一屏幕片元的处理至所有片元处理完成;(4)对矢量线段索引分组排序,逐一求解线段节点在节点纹理中的纹理坐标,从节点纹理读取节点属性;(5)按照矢量线段的优先级调用预定义的符号渲染函数,计算当前屏幕片元与关联矢量线段的位置关系,并判断片元是否位于线状符号的影响范围内,若不在影响范围内则将片元设为背景色,若在影响范围则将片元设为符号相应区域的颜色;重新进入步骤(3)进行下一屏幕片元的处理至所有片元处理完成。

【技术特征摘要】
1.一种基于屏幕的三维线状符号渲染方法,其特征在于,包含以下步骤:(1)筛选出矢量节点对符号绘制产生影响的属性,按次序将节点的属性存放在一个三维数组中,形成节点纹理;(2)建立矢量线段与地形单元的映射关系,并将其存放在一个三维数组中,形成索引纹理;(3)实时渲染时,根据屏幕片元的模型坐标在索引纹理中查找与当前屏幕片元关联的矢量线段,如果当前片元存在关联线段则进入步骤(4);如果不存在关联线段则将片元设为背景色,重新进入步骤(3)进行下一屏幕片元的处理至所有片元处理完成;(4)对矢量线段索引分组排序,逐一求解线段节点在节点纹理中的纹理坐标,从节点纹理读取节点属性;(5)按照矢量线段的优先级调用预定义的符号渲染函数,计算当前屏幕片元与关联矢量线段的位置关系,并判断片元是否位于线状符号的影响范围内,若不在影响范围内则将片元设为背景色,若在影响范围则将片元设为符号相应区域的颜色;重新进入步骤(3)进行下一屏幕片元的处理至所有片元处理完成。2.根据权利要求1所述的基于屏幕的三维线状符号渲染方法,其特征在于,步骤(1)中的属性包括矢量线ID、坐标、矢量线类型、累积长度、优先级、宽度系数及透明度系数。3.根据权利要求1所述的基于屏幕的三维线状符号渲染方法,其特征在于,步骤(1)中具体包括:(1.1)初始化一个三维数组data1[x][y][z],x与y的乘积大于等于矢量节点总数,z为9;(1.2)按次序将节点的属性存放在该数组中,保证线段的两个节点在纹理中前后相连,不同矢量线的节点存放同一数组中通过矢量线ID进行区分;(1.3)初始化一个矢量图像,数组data1作为该图像的数据源,并将该图像关联到节点纹理上。4.根据权利要求1所述的基于屏幕的三维线状符号渲染方法,其特征在于,步骤(2)中建立映射关系是在模型空间进行的,具体包括:(2.1)将地形在二维平面上划分为规则格网,格网单元大小大于符号宽度的一半,小于符号宽度;(2.2)初始化一个三维数组data2...

【专利技术属性】
技术研发人员:佘江峰李创顾笑颜彭晓敏张利维
申请(专利权)人:南京大学
类型:发明
国别省市:江苏,32

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

1