一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于GPU的大规模自然河道水体渲染的方法、装置和设备与流程

2021-11-22 13:46:00 来源:中国专利 TAG:

基于gpu的大规模自然河道水体渲染的方法、装置和设备
技术领域
1.本发明涉及计算机技术领域,尤其涉及一种基于gpu的大规模自然河道水体渲染的方法、装置、介质和设备。


背景技术:

2.三维虚拟仿真技术已广泛应用于数据地球、数字城市、数字流域等领域,水体渲染是三维仿真系统重要的部分,不同形式的水体渲染技术各不相同。传统的水面渲染技术中可实现水面流动效果,多以线性波形叠加方法(如gerstner wave)、统计模型方法(如fft)及数值方法(cfd、浅水方程)等;线性波形叠加方法与统计模型方法对湖面类较为适合,但是其存在流向单一的问题,所有水面仅朝一个方向流动,对于弯曲河道绘制,不能很好表现河流流态,与实际流向出现相悖的景象。另一方面,数值方法计算精度高,但计算负荷大,对于非水利行业从事人员来说,要计算得到大规模河道流场信息,举步维艰。因而,建立大规模、适应弯曲河道的、正确表现河道流态的水体渲染需求变得越来越紧迫。


技术实现要素:

3.本发明所要解决的技术问题是针对现有技术的不足,提供一种基于gpu的大规模自然河道水体渲染的方法、装置、介质和设备。
4.本发明解决上述技术问题的技术方案如下:
5.一种基于gpu的大规模自然河道水体渲染的方法,包括如下步骤:
6.s100沿河道流向提取河道边界数据信息;
7.通过delaunay三角剖分算法剖分河道,构建三角化河道,以有限点表示整个河道内流场分布情况;
8.利用所述河道边界数据信息,引入反比例权重函数构建流函数ψ,通过所述流函数ψ计算出符合实际特征的流场信息u(p
i
);
9.基于所述三角化河道,结合所述流场信息u(p
i
)获取整个河道流场图;
10.基于河道流场图采用flowmap方法对水流进行渲染绘制,获取实际河道渲染场景图。
11.优选地,所述沿河道流向提取河道边界数据信息包括:
12.沿河道流向河岸包括左岸与右岸,分别提取左岸线与右岸线;
13.对不同岸线设定不同的流函数值,左岸流函数值与右岸流函数值之差为岸线间单位厚度的水流流量。
14.优选地,所述利用所述河道边界数据信息,引入反比例权重函数构建流函数ψ,通过所述流函数ψ计算出符合实际特征的流场信息u(p
i
)包括:
15.获取河道边界数据信息,依据水流运动连续性方程,引入反比例权重函数构建河道内流函数ψ(x,y),其全微分为:
[0016][0017]
河道内任意点的流场为(u,v),u、v为流速在x,y方向上分量,可通过流函数的偏导数求得,公式如下:
[0018][0019]
则河道内任意点p的流函数值表达为:
[0020][0021]
其中,d
i
为河道内任意点p到边界b
i
的最短距离,ψ
i
为边界b
i
的流函数值,w为权重函数;
[0022][0023]
其中,s为搜索半径,p为正实数,f为光滑函数,选用光滑函数是为了使各个点计算出来的值更加平滑,使点与点之间不会出现不连续性;
[0024]
f(t)=6t5‑
15t4 10t3ꢀꢀꢀ
(5)
[0025]
通过上述公式(1)

(5)得到所有河道剖分点的流函数值ψ,以及通过对流函数求导得到河道剖分点的流场值u(p
i
),其中u(p
i
)=(u
i
,v
i
)。
[0026]
优选地,基于所述三角化河道将流场信息u(p
i
)导入gpu中,并将河道最大流速导入顶点着色器,对流场信息u(p
i
)进行归一化处理后导出至片元着色器,经坐标转换为纹理坐标并输出,获取整个河道流场图。
[0027]
优选地,所述flowmap方法通过纹理动态变换来表现水流的流动效果。
[0028]
优选地,所述基于河道流场图采用flowmap方法对水流进行渲染绘制,获取实际河道渲染场景图包括如下步骤:
[0029]
在顶点着色器中对纹理坐标进行缩放偏移处理;
[0030]
对流场纹理进行采样,获取河道水流流场信息(u,v);
[0031]
对流场信息(u,v)进行坐标转换,使其从[0,1]映射到为[

1,1];
[0032]
构造两个相位波形函数,所述两个相位波形函数周期相同,互为反相;
[0033]
计算两个相位波形函数对应的混合因子;
[0034]
依据欧拉公式对纹理坐标进行偏移处理,使得纹理发生扭曲变形,并通过改变纹理透明度实现纹理渐入渐出;
[0035]
用偏移后的纹理坐标对法线纹理进行采样,对两个相位波形函数分别进行采样,并将采样结果进行插值混合,实现一张纹理向另一张纹理慢慢转变;
[0036]
将混合后的法线用于光照计算;
[0037]
输出水体渲染结果,获取实际河道渲染场景图。
[0038]
优选地,在插值混合过程中引入噪声因子。
[0039]
本发明还解决上述技术问题的另一种技术方案如下:
[0040]
一种基于gpu的大规模自然河道水体渲染的装置,所述装置包括:
[0041]
信息采集模块,用于沿河道流向提取河道边界数据信息;
[0042]
河道剖分模块,用于通过delaunay三角剖分算法剖分河道,构建三角化河道,以有限点表示整个河道内流场分布情况;
[0043]
函数构建模块,用于利用所述河道边界数据信息,引入反比例权重函数构建流函数ψ,通过所述流函数ψ计算出符合实际特征的流场信息u(p
i
);
[0044]
流场获取模块,用于基于所述三角化河道结合所述流场信息u(p
i
)获取整个河道流场图;
[0045]
水体渲染模块,用于基于河道流场图采用flowmap方法对水流进行渲染绘制,获取实际河道渲染场景图。
[0046]
此外,本发明提供一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述技术方案中任一项所述的基于gpu的大规模自然河道水体渲染的方法。
[0047]
本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上述技术方案中任一项所述的基于gpu的大规模自然河道水体渲染的方法。
[0048]
本发明附加的方面的优点将在下面的描述中部分给出,部分将从下面的描述中变得明显,或通过本发明实践了解到。
附图说明
[0049]
为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面所描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0050]
图1为本发明实施例所述的一种基于gpu的大规模自然河道水体渲染的方法的流程示意图;
[0051]
图2为流函数求解示意图;
[0052]
图3为河道箭头流场模拟计算结果示意图;
[0053]
图4为混合因子变化示意图;
[0054]
图5为纹理变形前后示意图;
[0055]
图6为实际河道渲染场景图;
[0056]
图7为本发明另一实施例所述的一种基于gpu的大规模自然河道水体渲染的装置的框架示意图。
具体实施方式
[0057]
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。
[0058]
如图1所示,本发明实施例所述的一种基于gpu的大规模自然河道水体渲染的方
法,具体包括以下步骤:
[0059]
s110、沿河道流向提取河道边界数据信息;
[0060]
s120、通过delaunay三角剖分算法剖分河道,构建三角化河道,以有限点表示整个河道内流场分布情况;
[0061]
s130、利用所述河道边界数据信息,引入反比例权重函数构建流函数ψ,通过所述流函数ψ计算出符合实际特征的流场信息u(p
i
);
[0062]
s140、基于所述三角化河道,结合所述流场信息u(p
i
)获取整个河道流场图;
[0063]
s150、基于河道流场图采用flowmap方法对水流进行渲染绘制,获取实际河道渲染场景图。
[0064]
本发明基于gpu的大规模自然河道水体渲染的方法为一种适应各种大规模河道形状、正确表现河道流态的渲染可视化方法,实现为数据地球、数字城市、数字流域等领域,虚拟仿真系统水体系统可视化有力工具。
[0065]
本发明基于gpu的大规模自然河道水体渲染的方法依据河道边界自动提取河道流场信息,而无需进行水动力物理方程进行复杂计算,在定常流的单一流场下,完成水面自然动态渲染技巧。
[0066]
在本发明的进一步实施例中,沿河道流向提取河道边界数据信息包括:
[0067]
沿河道流向河岸包括左岸与右岸,分别提取左岸线b1与右岸线b2,岸线为一系列点组成,提取方式多样化,可以从已有矢量数据提取,或对照地图沿河进行描边得到,依不同情况自行选择;
[0068]
对不同岸线需要设定不同的流函数值,左岸流函数值与右岸流函数值之差为岸线间单位厚度的水流流量。对于大江水河,可从公开水情信息网站查阅河道流量及平均水深,对无资料河道可进行预估。
[0069]
优选地,所述利用所述河道边界数据信息,引入反比例权重函数构建流函数ψ,通过所述流函数ψ计算出符合实际特征的流场信息u(p
i
)包括:
[0070]
获取河道边界数据信息,依据水流运动连续性方程,引入反比例权重函数构建河道内流函数ψ(x,y),其全微分为:
[0071][0072]
河道内任意点的流场为(u,v),u、v为流速在x,y方向上分量,可通过流函数的偏导数求得,公式如下:
[0073][0074]
则河道内任意点p的流函数值表达为:
[0075][0076]
其中,d
i
为河道内任意点p到边界b
i
的最短距离,ψ
i
为边界b
i
的流函数值,w为权重函数,如图2所示;
[0077][0078]
其中,s为搜索半径,即图2中任意点p到河道边界垂线所在圆的半径,p为正实数,f为光滑函数,
[0079]
f(t)=6t5‑
15t4 10t3ꢀꢀꢀ
(5)
[0080]
通过上述公式(1)

(5)得到所有河道剖分点的流函数值ψ,以及通过对流函数求导得到河道剖分点的流场值u(p
i)
,其中u(p
i
)=(u
i
,v
i
)。
[0081]
基于所述三角化河道将流场信息u(p
i
)以attribute方式导入gpu中,并以uniform形式将河道最大流速导入顶点着色器,对流场信息u(p
i
)进行归一化为vuv,vuv为varying类型,是代码中一个变量,再将vuv导出至片元着色器,片元着色器中将vuv坐标从[

1,1]转化为[0,1]为纹理坐标并输出,获取整个河道流场图。其中,attribute、uniform、varying均为着色器编程中的代码语言。片元着色器将vuv坐标从[

1,1]转化为[0,1]具体采用公式:st=vuv;st=st*0.5 0.5。
[0082]
流场(u,v)为二维向量,包括x、y方向值,分别对应u、v。河道中任意点的流场为(u,v),二维向量可用箭头来表示,箭头的绘制通过片元着色器计算得出,如图3所示。
[0083]
本发明结合2d流场纹理,采用flowmap方法对水流进行渲染,具体是通过纹理动态变换来表现水流的流动效果。其过程与uv动画相似,无需进行顶点动画,具有容易实现及运算开销小等优势。
[0084]
具体地,步骤s150基于河道流场图采用flowmap方法对水流进行渲染绘制,获取实际河道渲染场景图包括如下步骤:
[0085]
s151、在顶点着色器中对纹理坐标进行缩放偏移处理,new_uv=uv*uv_scale uv_offset。
[0086]
s152、对2d流场纹理进行采样,获取河道水流流场信息(u,v)。
[0087]
s153、对流场信息(u,v)进行坐标转换,使其从[0,1]映射到为[

1,1],velocity=velocity*2.0

1.0。
[0088]
s154、构造两个相位波形函数,所述两个相位波形函数周期相同,互为反相;
[0089]
float phase1=mod(time*speed,blend_cycle);
[0090]
float phase2=mod(time*speed half_cycle,blend_cycle)。
[0091]
s155、计算两个相位波形函数对应的混合因子,其对应过程线如图4所示;
[0092]
factor1=abs(half_cycle

phase1)/half_cycle;
[0093]
factor2=abs(half_cycle

phase2)/half_cycle;
[0094]
式中half_cycle为半周期,phase1、phase2为步骤s154中波形函数。
[0095]
s156、沿着水流流场方向,对纹理坐标new_uv进行偏移,依据欧拉公式,随着时间的演进,纹理中每个像素点以其对应的流速进行平流,进而纹理将发生扭曲变形,变形前后如图5所示;通过改变纹理透明度,实现纹理渐入渐出,从而可以减少扭曲变形造成的视觉影响。
[0096]
s157、用偏移后的纹理坐标对法线纹理进行采样,通过对两个相位波形函数分别进行采样,并将两次采样结果进行插值混合,实现从一张纹理向另一张纹理慢慢转变。如图
4所示,横轴为偏移坐标,纵轴为混合因子,两根变化线为两次法线纹理采样对应混合因子变化过程。偏移坐标从0至1反复进行,混合因子从0至1反复更替,两纹理实现交互迭代,实现平滑的流动效果;在混合过程中,为了减少两次采样间变换过程的脉冲变化现象,引入噪声因子,可以很好消减脉冲现象。
[0097]
s158、将混合后的法线用于光照计算,包括反射、折射、高光、菲涅尔、透明度等。
[0098]
s159、输出水体渲染最终结果,得到实际河道渲染场景图,如图6所示。
[0099]
如图7所示,一种基于gpu的大规模自然河道水体渲染的装置包括:
[0100]
信息采集模块,用于沿河道流向提取河道边界数据信息;
[0101]
河道剖分模块,用于通过delaunay三角剖分算法剖分河道,构建三角化河道,以有限点表示整个河道内流场分布情况;
[0102]
函数构建模块,用于利用所述河道边界数据信息,引入反比例权重函数构建流函数ψ,通过所述流函数ψ计算出符合实际特征的流场信息u(p
i
);
[0103]
流场获取模块,用于基于所述三角化河道结合所述流场信息u(p
i
)获取整个河道流场图;
[0104]
水体渲染模块,用于基于河道流场图采用flowmap方法对水流进行渲染绘制,获取实际河道渲染场景图。
[0105]
此外,本发明提供一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述技术方案中任一项所述的基于gpu的大规模自然河道水体渲染的方法。
[0106]
本发明还提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上述技术方案中任一项所述的基于gpu的大规模自然河道水体渲染的方法。
[0107]
上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
[0108]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
[0109]
在本发明所提供的实施例中,应该理解到,所揭露的装置/终端设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/终端设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
[0110]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
[0111]
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0112]
所述集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。
[0113]
基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、可视化对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read

only memory)、随机存取存储器(ram,random access memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括是电载波信号和电信信号。
[0114]
以上所述实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围,均应包含在本发明的保护范围之内。
[0115]
以上,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献