一种Web端实时交互洪水演进仿真可视化方法[发明专利]

(19)中华人民共和国国家知识产权局
(12)发明专利申请
(10)申请公布号 (43)申请公布日 (21)申请号 201910678824.7
(22)申请日 2019.07.25
(71)申请人 北京中水科水电科技开发有限公司
地址 100036 北京市海淀区复兴路甲1号西
2区第2幢301房间
(72)发明人 乐世华 张煦 董静 肖晓春 
刘德龙 张卫君 
(74)专利代理机构 广州市红荔专利代理有限公
司 44214
代理人 王贤义 何承鑫
(51)Int.Cl.
G06F  17/50(2006.01)
G06T  15/04(2011.01)
G06T  15/50(2011.01)
(54)发明名称
一种Web端实时交互洪水演进仿真可视化方
(57)摘要
本发明提供了一种运算速度快、消耗计算
源少并且能达到Web端实时交互洪的水演进仿真
可视化方法。本发明将浅水方程数学模型,在
Shader中完成了编程,实现GPU的并行计算,计算
完成后可直接将结果从帧缓存传输渲染到屏幕
上,以GPU -GPU方式进行数据传输,
较传统调用以文本形式存储的计算结果再进行展示更加高效。
本发明可应用于实时交互领域。权利要求书2页  说明书7页  附图6页CN 110555234 A 2019.12.10
C N  110555234
A
1.一种Web端实时交互洪水演进仿真可视化方法,其特征在于,该方法包括以下步骤:
(1)洪水演进数学模型建立:采用二维浅水方程建立洪水演进数学模型,采用Roe格式的近似Riemann解对数值通量进行求解,将模型守恒变量存储在像素rgba通道,计算得到的水深、水位、流速结果传输给渲染器进行渲染;
(2)在shader中完成数学模型编程:使用OpenGL着器语言GLSL来实现浅水方程在渲染着器编程,通过使用Three.js类库创建渲染目标纹理缓存对象TBO,使其为中介,将渲染输出结果从一个着器传递到下一个着器,完成浅水方程结果传递迭代;
(3)对水体在Web端并行加速计算求解:利用图形处理器的片段着器进行计算,构建可编程渲染过程,并将结果不断输出到帧缓存中;
(4)对仿真结果进行渲染显示:构建水面及地形网格,并完善场景中的组件,建立洪水三维场景,将
输入输出数据存储在纹理单元中,调用片段着器进行离屏渲染,使用乒乓技术进行输入与输出纹理的交换,实现循环更新, 最终通过渲染器将结果显示在屏幕上;
(5)水面和地形的实时交互操作:在shader中设置鼠标点击操作识别的uniform变量,当监测识别到交互操作指令,则将该uniform变量从CPU传输至GPU Shader中,并以高斯函数计算每个纹理点的权重,得到相应纹理点的水面和地形的增减量,进而实现仿真结果实时交互变化。
2.根据权利要求1所述的一种Web端实时交互洪水演进仿真可视化方法,其特征在于,所述步骤(2)中,在Web端通过使用Three.js类库创建渲染目标纹理缓存对象的过程如下:
a.首先绘制一个能覆盖整个视口的矩形区域,矩形区域范围内所包含的像素数等于需要处理的数据数量;
b.然后通过编写顶点着器程序,为矩形的四个顶点分配纹理坐标,其后光栅处理器在四个顶点之间进行插值处理,生成新的顶点来把整个四边形填满;
c.再编写片段着器程序,处理计算纹理中每一个像素的数据;
d.将纹理缓存对象设为渲染目标,纹理缓存对象用于存储计算数据;
e.最后渲染矩形区域,即对矩形区域内每个像素进行计算,将计算结果保存到渲染目标纹理缓存对象TBO中。
3.根据权利要求1所述的一种Web端实时交互洪水演进仿真可视化方法,其特征在于,所述步骤(3)中,利用图形处理器的片段着器进行计算,构建可编程渲染过程的具体步骤为:在片段着器中,通过设置纹理视区和正交投影变换以保证纹理坐标和像素坐标的匹配,并在相同大小的矩形几何体上进行贴图运算,使用帧缓存对象或从纹理取回数据,构建可编程渲染过程,GPU在同一时间段内会把渲染任务分派到几个通道并行运行,从而将每个数据项自动分配到不同的渲染线管线中去处理,实现并行加速计算。
4.根据权利要求1所述的一种Web端实时交互洪水演进仿真可视化方法,其特征在于,所述步骤(4)中,将输入输出数据存储在纹理单元中的具体步骤为:构建水面及地形网格,并完善场景中的组件,建立洪水三维场景,将水体模拟计算数据以纹理形式存储在纹理像素中,以二维形式存储,纹理中每一个像素点包含4个通道:r、g、b、a,依据纹理形式的不同,数据填充使用这4通道的部分或全部,以整型或浮点形式存储。
5.根据权利要求4所述的一种Web端实时交互洪水演进仿真可视化方法,其特征在于,所述纹理单元包括地形纹理单元和守恒向量纹理单元,所述地形纹理单元在单元格式中心
存储地形数据,以float格式存储在r通道,使用双缓冲纹理,二者的更替切换实现变量的更
新迭代,所述守恒向量纹理单元包含三个分量,r通道为水深h,g通道为,b通
道为,数据存储在单元格式中心。
6.根据权利要求1所述的一种Web端实时交互洪水演进仿真可视化方法,其特征在于,所述步骤(1)中的洪水演进数学模型建立的具体过程如下:
式中,h为水深,u、v分别为x、y方向平均流速,、分别为x、y方向流量,g为重力加
速度,取9.81m/s²;Z b为地形,
方程以向量形式表达如下:
++=                                  (1)
其中为守恒向量,F和G分别为x、y方向通量向量,S为源项向量,模型控制方程的离散如下:
模型采用规则矩形网格,守恒变量存储在单元格中心,通量计算则通过单元格边界完成。
7.根据权利要求1所述的一种Web端实时交互洪水演进仿真可视化方法,其特征在于,所述步骤(5)中,以高斯函数计算每个纹理点的权重的过程中,所述高斯函数为:
,其中的x、y为水平方向的变量,为操作画刷的直
径大小。
8.根据权利要求1或4所述的一种Web端实时交互洪水演进仿真可视化方法,其特征在于:所述步骤(4)中,所述组件包括但不限于相机、灯光和渲染材质。
一种Web端实时交互洪水演进仿真可视化方法
技术领域
[0001]本发明涉及计算机图形学及水动力学领域,尤其涉及一种Web端实时交互洪水演进仿真可视化方法。
背景技术
[0002]随着WebGL、虚拟仿真技术飞速发展,虚拟仿真技术广泛地应用于三维交互式洪水演进仿真可视化中,洪水演进仿真大多集成在C/S(client Server)平台。但C/S平台存在用户数受限、异地软件应用安装麻烦、数据同步困难等不足。相比于C/S平台,B/S(browser Server)平台在安装部署、可用性、升级维护、设备带宽、软件学习推广等方面都具有更加明显的优势。
[0003]由于洪水演进本身计算的复杂性,洪水演进模拟目前大多停留在非实时应用领域,满足不了支持用户交互的实时应用,所谓实时即是“感觉不到延迟”,回应时间不能超过33ms,才能保证实时的性能。如何设计出一个运算速度快、消耗计算资源少,并且能达到实时可交互的洪水演进系统是当前学术界和工业界非常关心的一个问题。所幸,伴随着图形硬件(GPU)的快速发展,以上问题也可得到更加高效的解决。
[0004]关于洪水演进,国内外一些研究机构及高校通过商用软件(MIKE、EFDC、HEC-RAS 等)或自主研发程序计算的流体动力学结果,并将计算结果借助其他可视化展示软件(如ArcEngine、OpenGL、OSGEarth等)进行展现。但从输入条件、模型计算到结果存储整个过程大部分依赖CPU进行,没有很好利用GPU优势特性,计算结果从文本文件到显存的传输,受带宽影响,运行效率较低,无法满足实时交互操作。
[0005]随着GPU的快速发展,GPU由图形渲染向通用计算发展,研究基于GPU上实现洪水演进实时交互
仿真模拟,基于浅水方程,充分利用GPU的并行性,对流体加速计算并可视化,有效地提升数字流域仿真效果与计算速度,为实现实时交互洪水模拟提供可能。
[0006]综上所述,国内外洪水演进模拟多数集中在CS平台,大多未实现实时交互动态模拟,因此研制一种结合WebGL技术,实现带交互性能、实时渲染、多平台兼容的Web端的洪水演进仿真可视化方法有较高的实用价值和重要的研究意义。
发明内容
[0007]本发明所要解决的技术问题是克服现有技术的不足,提供一种运算速度快、消耗计算资源少并且能达到Web端实时交互的洪水演进仿真可视化方法。
[0008]本发明所采用的技术方案包括以下步骤:
(1)洪水演进数学模型建立:采用二维浅水方程建立洪水演进数学模型,采用Roe格式的近似Riemann解对数值通量进行求解,将模型守恒变量存储在像素rgba通道,计算得到的水深、水位、流速结果传输给渲染器进行渲染;
(2)在shader中完成数学模型编程:使用OpenGL着器语言GLSL(即GLShading Language)来实现浅水方程在渲染着器编程,通过使用Three.js类库创建渲染目标纹理
缓存对象TBO,使其为中介,将渲染输出结果从一个着器传递到下一个着器,完成浅水方程计算结果传递迭代;
(3)对水体在Web端并行加速计算求解:利用图形处理器的片段着器进行计算,构建可编程渲染过程,并将结果不断输出到帧缓存中;
(4)对仿真结果进行渲染显示:构建水面及地形网格,并完善场景中的组件,建立洪水三维场景,将输入输出数据存储在纹理单元中,调用片段着器进行离屏渲染,使用乒乓技术进行输入与输出纹理的交换,实现循环更新, 最终通过渲染器将结果显示在屏幕上;
(5)水面和地形的实时交互操作:在shader中设置鼠标点击操作识别的uniform变量,当监测识别到交互操作指令,则将该uniform变量从CPU传输至GPU Shader中,并以高斯函数计算每个纹理点的权重,得到相应纹理点的水面和地形的增减量,进而实现仿真结果实时交互变化。
[0009]进一步地,所述步骤(2)中,在Web端通过使用Three.js类库创建渲染目标纹理缓存对象的过程如下:
a.首先绘制一个能覆盖整个视口的矩形区域,矩形区域范围内所包含的像素数等于需要处理的数据数量;
b.然后通过编写顶点着器程序,为矩形的四个顶点分配纹理坐标,其后光栅处理器在四个顶点之间进行插值处理,生成新的顶点来把整个四边形填满;
c.再编写片段着器程序,计算处理纹理中每一个像素的数据;
d.将纹理缓存对象设为渲染目标,纹理缓存对象用于存储计算数据;
e.最后渲染矩形区域,即对矩形区域内每个像素进行计算,将计算结果保存到渲染目标纹理缓存对象TBO中。
[0010]再进一步地,所述步骤(3)中,利用图形处理器的片段着器进行并行加速计算,构建可编程渲染过程的具体步骤为:在片段着器中,通过设置纹理视区和正交投影变换以保证纹理坐标和像素坐标的匹配,并在相同大小的矩形几何体上进行贴图运算,使用帧缓存对象或从纹理取回数据,构建可编程渲染过程,GPU在同一时间段内会把渲染任务分派到几个通道并行运行,从而将每个数据项自动分配到不同的渲染线管线中去处理,实现并行加速计算。
[0011]又进一步地,所述步骤(4)中,对仿真结果进行渲染显示的具体步骤为:构建水面及地形网格,并完善场景中相机、灯光、渲染材质等组件,建立洪水三维场景,将水体模拟计算数据以纹理形式存储在纹理像素中,以二维形式存储,纹理中每一个像素点包含4个通道:r、g、b、a,依据纹理形式的不同,数据填充使用这4通道的部分或全部,以整型或浮点形式存储。
[0012]此外,所述纹理单元包括地形纹理单元和守恒向量纹理单元,所述地形纹理单元在单元格式中心存储地形数据,以float格式存储在r通道,使用双缓冲纹理,二者的更替切
换实现变量的更新迭代,所述守恒向量纹理单元包含三个分量,r通道为水深h,g通
道为,b通道为,数据存储在单元格式中心。
[0013]所述步骤(1)中的洪水演进数学模型建立的具体过程如下:

本文发布于:2024-09-22 21:23:24,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/4/421742.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:纹理   渲染   进行   计算   交互   演进
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议