水体虚拟可视化方法和装置与流程

文档序号:18455200发布日期:2019-08-17 01:32阅读:293来源:国知局
水体虚拟可视化方法和装置与流程

本发明涉及水体绘制技术领域,尤其是涉及一种水体虚拟可视化方法和装置。



背景技术:

目前,在进行河流湖库的水体绘制水体的网格时,往往采用类似均匀划分的方式进行划分,具体为在绘制的时候以单个网格为单元绘制,以每个网格的面积较为均与的方式进行网格的绘制。

然而,在绘制时往往采用类似均匀划分的方式,即粗粒度的划分方式,无论在水体的哪个部位,划分出来的网格个数均类似,然而在水体边界的地方一般可能有突出的地形,则网格内部会有高程突变的点,是无法采用插值估算出内部突变的点的高程,从而无法模拟边界的细节部分,尤其对于河流湖库级别的水体,使得绘制出的水体图与实际的图形差距较大,用户体验感不高。



技术实现要素:

本发明的目的在于提供水体虚拟可视化方法和装置,缓解了现有技术中使用粗粒度的划分方式而导致绘制出的水体图与实际的图形差距较大的技术问题。

本发明提供的一种水体虚拟可视化方法,包括:

绘制待可视化水体的初始三角网格;

从所述待可视化水体中,选取待细化区域;

对所述待细化区域对应的初始三角网格进行三角网格细化;

将所述细化三角网格进行处理操作,得到虚拟可视化水体,其中,所述处理操作包含以下操作中的一种或多种:三维立体操作、渲染操作、绘制波动效果操作、水体光照操作。

进一步的,所述从所述待可视化水体中,选取待细化区域的步骤,包括:

获取所述待可视化水体的地形高程数据;

在所述地形高程数据中,匹配所述初始三角网格中所有顶点的顶点高程值;

从所述地形高程数据中,逐一匹配由顶点组成的单元网格内部的内部高程值;

根据每一个单元网格的内部高程值,选取待细化区域。

进一步的,所述对所述待细化区域对应的初始三角网格进行三角网格细化的步骤,包括:

采用递归细化的方式对所述待细化区域对应的初始三角网格进行三角网格细化。

进一步的,所述采用递归细化的方式对所述待细化区域对应的初始三角网格进行三角网格细化的步骤,包括:

确定所述待细化区域的递归细化次数;

根据所述待细化区域的递归细化次数,采用递归细化的方式对所述待细化区域对应的初始三角网格进行三角网格细化。

进一步的,每一次递归细化的方式,包括:

对所述待细化区域对应部分的初始三角网格中的每一个初始三角形作为待细化三角形进行如下操作:

将所述待细化三角形划分为两种类型的细化三角形;

其中,将待细化三角形中的一个顶点作为第一类型的细化三角形的第一顶点,将所述待细化三角形中的一个顶点相邻的两个边长中的点作为第一类型的细化三角形的第二顶点和第三顶点;

其中,选取待细化三角形中的三个边长中的点作为第二类型的细化三角形的三个顶点。

进一步的,将所述细化三角网格进行三维立体操作的步骤,包括:

根据所述地形高程数据,得到所述细化三角网格中所有顶点的高程值;

将所述细化三角网格中的每一个三角形作为待拉伸三角形进行如下步骤:

确定所述待拉伸三角形的高程最大值和高程最小值;

将所述高程最大值和所述高程最小值向所述待可视化水体的地面拉伸,形成为三棱柱体。

进一步的,将所述细化三角网格进行渲染操作的步骤,包括:

通过webgl模版缓冲区渲染的方式,对所述三棱柱体进行阴影区渲染。

进一步的,将所述细化三角网格进行绘制波动效果操作的步骤,包括:

采用顶点着色器,通过随机的位移量,绘制水体波动效果。

进一步的,将所述细化三角网格进行水体光照操作的步骤,包括:

对待可视化水体的表面的每个像素点作为待染色像素点进行如下操作,得到待可视化水体的表面的漫反射光照颜色:

获取所述待染色像素点的入射光颜色和入射角度、和待颜色像素点的基底色;

采用如下算式,得到所述待染色像素点的漫反射光照颜色:

vr=vi+vb+cosθ

其中,vr为所述待染色像素点的漫反射光照颜色,vi为待染色像素点的入射光颜色,vb为待颜色像素点的基底色,θ为待染色像素点的入射角度。

本发明提供的一种水体虚拟可视化装置,包括:

绘制模块,用于绘制待可视化水体的初始三角网格;

确定模块,用于从所述待可视化水体中,选取待细化区域;

细化模块,用于对所述待细化区域对应的初始三角网格进行三角网格细化;

可视化模块,用于将所述细化三角网格进行处理操作,得到虚拟可视化水体,其中,所述处理操作包含以下操作中的一种或多种:三维立体操作、渲染操作、绘制波动效果操作、水体光照操作。

本发明提供的一种电子设备,包括:处理器和存储器,所述存储器中存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述实施例任一项所述的方法的步骤。

本发明提供的一种计算机可读介质,所述计算机可读介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述实施例任一项所述的方法。

本发明提供的水体虚拟可视化方法和装置,可以先通过绘制待可视化水体的初始三角网格,然后从待可视化水体中,选取待细化区域;对所述待细化区域对应的初始三角网格进行三角网格细化;最后将细化三角网格进行处理操作,得到虚拟可视化水体,其中,处理操作包含以下操作中的一种或多种:三维立体操作、渲染操作、绘制波动效果操作、水体光照操作。

本发明可以从待可视化水体中选出来待细化区域,例如可以选取地形复杂程度高的边界区域,进行三角网格细化,使得地形复杂程度较高的地方,网格中的顶点包含地形的突变的点,缓解了现有技术中采用粗粒度的划分的方式而导致绘制出的水体图与实际的图形差距较大的技术问题。

附图说明

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

图1为本发明实施例提供的水体虚拟可视化方法的流程图;

图2为本发明实施例提供的步骤s120现实方式的流程图;

图3a为本发明实施例提供的待细化三角形的一种细化结果示意图;

图3b为本发明实施例提供的待细化三角形的另一种细化结果示意图;

图4为本发明实施例提供的步骤s130中进行三维操作的现实方式的流程图;

图5为本发明实施例提供的水体虚拟可视化装置的结构图。

具体实施方式

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

目前,在采用较为均匀的方式划分水体的网格,即粗粒度的划分水体的网格时,如果水体边界的地方具有突出的地形时,突变点可能会在三角网格的内部,就会无法记录突出的地形,从而无法模拟边界的细节部分,导致绘制出的水体图与实际的图形差距较大。

基于此,本发明提供的水体虚拟可视化方法和装置,可以从待可视化水体中选出来待细化区域,例如可以选取地形复杂程度高的边界区域,进行三角网格细化,使得地形复杂程度较高的地方,网格中的顶点包含地形的突变的点,缓解了现有技术中采用粗粒度的划分的方式而导致绘制出的水体图与实际的图形差距较大的技术问题。

以下结合附图进行详细阐述:

结合图1所示,本发明提供了一种水体虚拟可视化方法,包括:

s110:绘制待可视化水体的初始三角网格。

在绘制待可视化水体的初始三角网格之前,该方法,还可以包括:获取预报模式数据,预报模式中记载有绘制水体使用的三角网格数据,可以采用该三角网格数据进行绘制。其中,初始三角网格是以三角形的最小单元结构组成的。

然而,在此初始三角网格中,划分的网格会比较均匀,可能不能体现待可视化水体的比较突出的方面。

在实际的水体中,可能有水体的部分区域不需要进行细化,而对全部的水体进行细化时,会造成操作复杂,效率降低,基于此,采用步骤s120,选取待细化区域。具体如下:

s120:从所述待可视化水体中,选取待细化区域。

可以从网上下载待可视化水体的地形高程数据,从而获取了所述待可视化水体的地形高程数据,根据地形高程数据,从待可视化水体中,选取待细化区域。

详细来讲,由于地形高程数据中包括地理坐标,初始三角网格中的所有顶点也具有地理位置信息,所以,在所述地形高程数据中,匹配初始三角网格中所有顶点的顶点高程值,即初始三角网格中所有顶点的地理位置信息与地形高程数据中的地理坐标满足一定范围时,其中该范围可以为设置的比较小,可以将该地形高程数据中的地理坐标对应的高程值作为初始三角网格中的顶点的高程值。

然后,从所述地形高程数据中,逐一匹配由顶点组成的单元网格内部的内部高程值,即三个顶点的地理位置可以组成一个地理范围,三个顶点的组成的单位网格,可以匹配该地理范围内的高程值作为单位网格的内部高程值。

根据每一个单元网格内部的内部高程值,选取待细化区域。其中,待细化区域可以包括多个单元网格或者一个单元网格。即可以将待可视化水体划分成多个区域,对每个区域进行评估每个区域的复杂程度,其中,从单元网格中选取最大高程值和最小高程值,计算最大高程值和最小高程值的差值,差值越大,越说明该处的地形越复杂,如果复杂程度高,则确定该区域为待细化区域,如果复杂程度不高,则确定该区域不需要细化。

另外,可以将所述待可视化水体采用显示设备显示给用户,用户操作鼠标或者键盘等等输入设备从所述待可视化水体中,选取待细化区域。

s130:对所述待细化区域对应的初始三角网格进行三角网格细化。

其中,三角网格细化即对初始三角形网格进行再次划分,例如,将原来的一个三角形划分成两个或者更多个三角形。可以根据所述待可视化水体的每个单元网格的高程最大值和最小值的差值,对所述初始三角网格进行三角网格细化,即,该单元网格的高程差值越大,可能划分得到的三角形越多,划分的越细致。

详细来讲,划分的方式可以包括:采用递归细化的方式对所述待细化区域对应的初始三角网格进行三角网格细化。

其中,递归细化的方式可以理解为将同一个事物按照一种方式进行细化,得到一次细化结果,然后再将一次细化结果再按照上述方式进行细化,直到细化完成。

结合图2所示,采用递归细化的方式对所述待细化区域对应的初始三角网格进行三角网格细化详细包括:

s131:确定所述待细化区域的递归细化次数;当待细化区域为多个单元网格时,可以一一确认对应的递归细化次数,以下以一个单元网格,确定递归细化次数为例,可以根据该单元网格的高程差值(即单元网格内的最大高高程值和最小高程值的差值)的大小,即地形的复杂程度,确定递归细化次数,复杂程度高的当中,可以划分具体的递归细化次数。例如,该处高程差值相对较小,递归细化次数为一次,该处高程差值相对较大,递归细化次数为两次或者更高的级别。

其中可以对高程差值进行赋值,赋值越大的,递归细化次数越高,例如:该处的高程差值为10时,可以赋值1,递归细化次数为3次,该处的高程差值为5时,可以赋值2,递归细化次数为2次。或者,可以由用户根据自己的经验进行设定待细化区域的递归细化次数。

s132:根据所述待细化区域的递归细化次数,采用递归细化的方式对所述待细化区域对应的初始三角网格进行三角网格细化。

通过上述方法,可以仅仅对复杂程度高的区域进行具体的细化,从而提高了工作效率。

步骤s120和s130实际上将的是,将该进行细化的部分进行细化,该不进行细化的部分,保持原样,从而得到细化三角网格。

每一次递归细化的方式,包括:

对所述待细化区域对应部分的网格中的每一个初始三角形作为待细化三角形进行如下操作:

将所述待细化三角形划分为两种类型的细化三角形;

其中,将待细化三角形中的一个顶点作为第一类型的细化三角形的第一顶点,将所述待细化三角形中的一个顶点相邻的两个边长中的点作为第一类型的细化三角形的第二顶点和第三顶点;其中,所述待细化三角形中的一个顶点相邻的两个边长中的点可以为三角形边长的中点,即:

t1={vi,(vi+vj)/2,(vi+vk)/2}

t1为第一类型的细化三角形,vi,vj,vk为初始三角形的三个顶点。

其中,选取待细化三角形中的三个边长中的点作为第二类型的细化三角形的三个顶点。其中,待细化三角形中的三个边长中的点为三角形边的中点,

t2={(vi+vj)/2,(vi+vk)/2,(vj+vk)/2}

t2为第二类型的细化三角形,vi,vj,vk为初始三角形的三个顶点。

从上可以看出,可以具体划分4个三角形,该方式得到的细化三角形是等边三角形,根据递归的次数,可以进行无线划分下去。

结合图3a所示,对待细化区域中的初始三角网格中的每一个初始三角形作为待细化三角形进行细化,其中,待细化三角形的三个顶点为编号1、编号3、编号5,待细化三角形的三个边的中点为编号2、编号4、编号6,其中,将待细化三角形细化为4个细化三角形,即第一至第四细化三角形,第一细化三角形的顶点包括编号1、编号2、编号6,第二细化三角形的顶点包括编号2、编号3、编号4,第三细化三角形的顶点包括编号2、编号4、编号6,第四细化三角形的顶点包括编号4、编号5、编号6。当采用递归2次时,以第一细化三角形、或者第二细化三角形、或者第三细化三角形、或者第四细化三角形为待细化区域,还可以对第一至第四细化三角形进行附图3中细化过程,得到16个细化三角形,如果进行递归3次,可以得到64个细化三角形,依次类推。

当然,还可以通过如下方式进行划分,结合图3b所示,第一至第四细化三角形,其中,第一细化三角形包括编号1、编号2、编号4,第二细化三角形包括编号2、编号3、编号4,第三细化三角形包括编号1、编号4、编号6,第四细化三角形包括编号4、编号5、编号6。

当然,递归细化时,还可以将初始三角形划分为2个细化三角形或者3个细化三角形。

其中,依据所述待可视化水体的地形复杂程度,可以确定多个待细化区域,每一个待细化区域可以对应有递归细化次数,然后,每个待细化区域可以有一个或者多个单元网格,可以根据每一个待细化区域对应的递归细化次数,逐一进行具体的递归细化,直到最后一个待细化区域完成为止。

s140:将所述细化三角网格进行处理操作,得到虚拟可视化水体,其中,所述处理操作包含以下操作中的一种或多种:三维立体操作、渲染操作、绘制波动效果操作、水体光照操作。

其中,将所述细化三角网格进行三维立体操作的步骤,结合图4所示,包括:

s141:根据地形高程数据,得到细化三角网格中所有顶点的高程值;

在确定所述待拉伸三角形的高程最大值和高程最小值时,首先需要知道细化三角网格中所有顶点的高程值。其中,当初始三角网格中的每一个单元网格均细化时,需求取每一个单元网格在细化而添加的顶点的高程值。当初始三角网格中的每一个单元网格并没有全部进行细化,而得到细化三角网格时,可以求取将细化的单元网格在细化而添加的顶点的高程值。

计算有进行细化的三角网格,以一个单元网格进行细化一次为例,结合图3a所示,顶点的编号1、编号3、编号5已经在上述介绍中进行获取对应的高程值,因为细化而添加的顶点,编号2、编号4、编号6需要进一步进行求取。编号2的高程值的求取过程为,已知编号1和编号3的地理坐标,编号2为编号1和编号3所组成的边的中点,所以可以得到编号2的地理坐标,从编号1、编号3、编号5组成的三角形的多个高程数据中,提取距离编号2位置最近的高程值作为编号2的高程值。同样的,提取距离编号4位置最近的高程值作为编号4的高程值。提取距离编号6位置最近的高程值作为编号6的高程值。当得到细化三角网格中的所有三角形的顶点的高程值,既可以进行步骤s142。

将所述细化三角网格中的每一个三角形作为待拉伸三角形进行如下步骤:

s142:确定所述待拉伸三角形的高程最大值和高程最小值;其中,确定三角形的三个顶点,即三个高程值,从三个高程值中选取高程最大值和高程最小值。确定所述细化三角网格中的每一个三角形包括细化三角形还是保持原来的三角形。

s143:将所述高程最大值和所述高程最小值向所述待可视化水体的地面拉伸,形成为三棱柱体。将所述高程最大值和所述高程最小值,拉到水体的底面,拉伸为三棱柱体,将三角网格中的所有三角形均进行拉伸绘制后得到水体的三维图。

其中,所述将细化三角网格进行渲染操作的步骤,包括:

通过webgl模版缓冲区渲染的方式,对所述三棱柱体进行阴影区渲染。

详细来讲,视线沿着光照射的区域进行色彩渲染,然后在视线的背面区域进行色彩渲染,将两个渲染区域合并在一起,相同的区域,在缓冲期里面中和掉,值为0,而剩下的不为零(为1)的区域就是阴影部分,也是该三棱柱体和地面相交的部分。因此,在阴影体渲染中,是接地部分要优先绘制,接着对阴影体渲染两次,一次是在模版缓冲区中,标识出阴影区域,然后在渲染到纹理或屏幕,这时进行过滤,只对模版缓冲区不为零(或等于1)的部分渲染,完成阴影体渲染,最终从视觉上实现贴地效果。

其中,所述将细化三角网格进行绘制波动效果操作的步骤,包括:

采用顶点着色器,通过随机的位移量,绘制水体波动效果。

顶点着色器是一组指令代码,当渲染一个顶点时,顶点着色器所写的这组指令代码会执行。

详细来讲,由于在绘制时,由于是在计算机屏幕中绘制,可以采用顶点着色器通过,笛卡尔坐标系中的水平和垂直方向上的位置偏移量,可以理解为计算机屏幕的像素值,绘制水体波动效果。

其中,所述将细化三角网格进行水体光照操作的步骤,包括:

对待可视化水体的表面的每个像素点作为待染色像素点进行如下操作,得到待可视化水体的表面的漫反射光照颜色:

获取待染色像素点的入射光颜色和入射角度、和待颜色像素点的基底色;

采用如下算式,得到所述待染色像素点的漫反射光照颜色:

vr=vi+vb+cosθ

其中,vr为所述待染色像素点的漫反射光照颜色,vi为待染色像素点的入射光颜色,vb为待颜色像素点的基底色,θ为待染色像素点的入射角度。

对应于上述的水体虚拟可视化方法,本发明提供了一种水体虚拟可视化装置,结合图5所示,包括:

绘制模块510,用于绘制待可视化水体的初始三角网格;

划分模块520,用于从所述待可视化水体中,选取待细化区域;

细化模块530,用于对所述待细化区域对应的初始三角网格进行三角网格细化;

可视化模块540,用于将所述细化三角网格进行处理操作,得到虚拟可视化水体,其中,所述处理操作包含以下操作中的一种或多种:三维立体操作、渲染操作、绘制波动效果操作、水体光照操作。

本发明实施例所提供的装置,其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。

本发明提供了一种电子设备,包括:处理器和存储器,所述存储器中存储有可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述实施例任一项所述的方法的步骤。

本发明提供了一种计算机可读介质,所述计算机可读介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述实施例任一项所述的方法。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

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