CN115983162A - 一种基于数字孪生的流域建模方法 - Google Patents
一种基于数字孪生的流域建模方法 Download PDFInfo
- Publication number
- CN115983162A CN115983162A CN202310269624.2A CN202310269624A CN115983162A CN 115983162 A CN115983162 A CN 115983162A CN 202310269624 A CN202310269624 A CN 202310269624A CN 115983162 A CN115983162 A CN 115983162A
- Authority
- CN
- China
- Prior art keywords
- coordinate
- river
- points
- point
- terrain
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02A—TECHNOLOGIES FOR ADAPTATION TO CLIMATE CHANGE
- Y02A10/00—TECHNOLOGIES FOR ADAPTATION TO CLIMATE CHANGE at coastal zones; at river basins
- Y02A10/40—Controlling or monitoring, e.g. of flood or hurricane; Forecasting, e.g. risk assessment or mapping
Landscapes
- Processing Or Creating Images (AREA)
Abstract
本发明公开了一种基于数字孪生的流域建模方法,包括如下步骤:步骤S1:获取流域所在区域的地理数据,在建模软件Unity中对地理数据进行处理,确定地形表面的曲面拟合函数,得到地形表面的曲面信息;步骤S2:在步骤S1中获取的地形表面的曲面上绘制目标河流网格;步骤S3:给目标河流网格添加着色器,模拟出目标流域。本发明通过坐标变化、划分网格、拟合样条曲线、样条曲面和添加着色器等,在目前流域模拟过程中,GIS插件中生成的地形能够很好地与河流相配合,使河流能够精确显示在对应的地形区域中。本发明完成了河床地形的建模,并且与水产生了良好的交互。对于后续实现洪水淹没,雨情预报预警奠定了基础。
Description
技术领域
本发明属于水文建模技术领域,具体涉及一种基于数字孪生的流域建模方法。
背景技术
水文监测是水文工作的重要组成部分,对我国水利规划、水工程建设管理、防汛抗早、水资源管理与保护具有重要意义。近年来,随着通信技术、人工智能技术等新技术的发展,以及全国中小河流水文监测***工程、全国水文基础设施建设规划等重点项目的实施,我国水文水资源监测能力得到显著提升。
在对流域水文研究中,对流域进行模拟、分析也尤为重要。现有技术中,数字化流域的生成主要分为两部分,一部分为直接在Unity中添加GIS插件,另一种是设计者手工通过笔刷进行创建流域。对于GIS插件,显示的场景都是一块一块的面片拼凑而成,随着视口空间中裁剪平面远近的改变,其大小会发生改变,无法在数字孪生流域中与水产生视觉效果较好的交互;比如,在流域模拟过程中,GIS插件中生成的地形不能与河流相配合,导致河流不能显示在对应的地形区域中,或者河流出现在河道以外的区域。对于人工笔刷创建的地形,精度不够,与实际中的河床有较大出入,进行河流淹没和洪水预报时效果不理想。
发明内容
本发明提供了一种基于数字孪生的流域建模方法,解决现有技术在流域模拟建模过程中,Unity的GIS插件中显示的场景都是一块一块的面片拼凑而成,会随着视口空间中裁剪平面远近的改变,其大小会发生改变,无法在数字孪生流域中与其他物体产生视觉效果较好的交互的技术问题。
为了解决上述技术问题,本发明采用如下方案实现:
一种基于数字孪生的流域建模方法,包括如下步骤:
步骤S1:获取流域所在区域的地理数据,在建模软件Unity中对地理数据进行处理,确定地形表面的曲面拟合函数,得到地形表面的曲面信息;
步骤S2:在步骤S1中获取的地形表面的曲面上绘制目标河流网格;
步骤S3:给目标河流网格添加着色器,模拟出目标流域。
进一步优化,所述步骤S1中,具体包括如下步骤:
步骤S1.1:获取流域所在区域的地理数据:
通过GIS获取流域所在区域的地理数据,包括流域所在区域的地形图,以及不同位置的经纬度信息和高程信息,即不同位置点在世界坐标系中坐标信息。
步骤S1.2:数据处理:
在Unity中建立三维直角坐标系OXZY,记为模拟坐标系;选择XOZ面为水平面,Y轴方向表示为地形高度,从垂直XOZ平面的方向观察,流域所在区域地形图在XOZ平面中为矩形,将地形图左下角的端点设置为坐标原点O,将流域所在区域内各点在世界坐标系中的坐标值换算为模拟坐标系中的坐标值,然后将经过坐标变换后的数据整合为XLSX格式的表格文件。
步骤S1.3:确定曲面拟合函数:
S1.3.1:根据步骤S1.2中整合后的坐标数据,选取X轴坐标值相同的一组点的坐标拟合得到一条B样条曲线,选取另外一组X轴坐标值相同的一组点的坐标拟合得到另一条B样条曲线,依次拟合,得到(
m+1)条在X轴方向的B样条曲线;采用同样的方法,拟合出(
n+1)条在Z轴方向的B样条曲线;
m、n均为大于3的正整数。
S1.3.2:将上述步骤S1.3.1中得到的B样条曲线在 X、Z 两个方向上多次构建拟合成B样条曲面,具体为:(
m+1)条在X轴方向的B样条曲线与(
n+1)条在Z轴方向的B样条曲线相交,得到(
m+1)×(
n+1)个控制点,由这(
m+1)×(
n+1)个控制点构成一张控制网格,则X、Z两个方向的参数节点矢量分别为X=[
x 0,
x 1,…,
x m+
k+1],Z=[
z 0,
z 1,…,
z n+
l+1];B样条曲面的方程如下:
;
式中
F i,j 为控制点集,即三维点云中的点集,
i=0,1…
m,j=0,1…n;
N i,k (
x)和
N j,l (z)为B样条曲面基函数,式中
k和
l表示样条曲线的幂次,下标
i和
j表示B样条曲线的序号;
步骤S1.4:在Unity数字孪生流域模拟平台中进行流域所在区域地形表面创建:
在模拟坐标系中,地形图沿X方向每行有xSize个点,沿Z方向每列有zSize个点,共有xSize* zSize个点,赋予每个点对应的X坐标和Z坐标,其中左下角顶点在XOZ中坐标值为(0,0);将每个点的XOZ坐标值代入B样条曲面函数中,获取对应的Y坐标,即得到地形表面对应位置在Unity数字孪生流域平台中的坐标信息,并进行存储;然后采用三角形定义法得到流域所在区域地形表面曲面。
进一步优化,将流域所在区域内地形上的点在世界坐标系中的坐标值换算为模拟坐标系的坐标值,具体包括如下步骤:
设定地形图上A点的位置与模拟坐标系中的原点O重合,则A点在模拟坐标系XOZ平面上的坐标为(0,0);地形图上其他点在模拟坐标系中X轴的坐标值为该点与A点在世界坐标系中X’轴的坐标值之差;同样,地形图上其他点在模拟坐标系中Z轴的坐标值为该点与A点在世界坐标系中Z’轴的坐标值之差。
对于Y轴坐标值,找出地形图上所有点在世界坐标系中Y’轴坐标值的最小值D,然后将每个点在世界坐标系中Y’轴的坐标值减去D作为其在模拟坐标系中Y轴的坐标;至此得到流域所在区域内地形图上各点在模拟坐标系中的三维坐标值。
进一步优化,采用三角形定义法得到流域所在区域地形表面曲面,具体包括如下步骤:
xSize* zSize个网格顶点按如下规律排列:第一行网格点索引为0~xSize,第二行网格点索引为xSize~2*(xSize+1)-1,……,最后一行网格点索引为(zSize-1)*(xSize+1)-1~zSize*(xSize+1)-1。
三角形通过顶点索引数组定义,按顺时针方向排列,则三角形被视为向前且可见,逆时针三角形被丢弃;每个网格曲面由两个三角形生成,则地形图上左下角顶点处相靠近两个三角形对应的6个顶点索引如下:
triangles[0] = 0;
triangles[1] = xSize + 1;
triangles[2] = 1;
triangles[3] = 1;
triangles[4] = xSize + 1;
triangles[5] = xSize + 2;
按照上述索引方式,循环遍历所有网格,生成大的地形网格。
进一步优化,所述步骤S2中,绘制目标河流网格,具体包括如下步骤:
步骤S2.1:选取多个控制点生成与目标河流形状相同的Catmull-Rom曲线L,在Unity数字孪生流域模拟平台中将目标河流设定为一条网格带,网格带上的顶点对称的分布在曲线L的两边。
步骤S2.2: 新建一个Vector3格式的列表,存储河流控制点的坐标信息;新建一个Int类型的列表,储存不同控制点对应位置的河流宽度width。
步骤S2.3:通过曲线上两个相邻控制点P1、P2,计算出向量P1P2;通过叉乘得到河流水平面向量V,在向量V的方向,加减对应位置河流宽度的一半,求出控制点P1两边的顶点坐标;用相同方法依次求出所有河流控制点的两边顶点坐标值。
步骤S2.4:与地形绘制方法相同,绘制出河流网格。
进一步优化,所述步骤S3中,在Unity数字孪生流域模拟平台中,通过添加着色器实现模拟河流的如下功能:
1)使水流沿着河流方向流动:
首先计算顶点位移量,根据相邻的河流控制点形成的向量,将相关顶点在对应方向进行偏移,对该偏移加上模型空间的位置分量,并乘以系数来控制波长,最后对结果值乘以系数来控制波动幅度,得到最终的位移,模拟流域中的水流流动;
2)使地形与河流契合:
将地形图上所有顶点抬高相同的高度,然后以地形图上每个顶点为起点,向下发射射线,判断是否碰撞到河流网格;
如果碰撞到,就将地形图网格对应的顶点向下凹陷指定深度,并根据碰撞点在着色器中贴图的纹理坐标和河流宽度方向横截面的曲线,微调顶点凹陷的程度,使河床与地形过渡更自然;
3)增加水流中的泡沫:
在Unity场景中新添加一张泡沫纹理贴图,河流Mesh通过纹理采样器获取对应位置的颜色信息,将该颜色信息添加到片元着色器最后的输出结果中,实现了产生泡沫的效果;另外,地形坡度用河流Mesh当前的法线在世界坐标系Y轴上的投影来判断,投影越小越陡峭,相应泡沫就越多;
4)添加Perlin噪声纹理:
利用生成的Perlin噪声纹理实现海浪可视化的过程为:
4.1)选择一个合适的随机函数,把这个函数命名为noise,将种子设为1000;
4.2)对于任意点(
x’,
y’),通过附近四个顶点位置(
x 0
,y 0 )、(
x 0
,y 1 )、(
x 1
,y 0 )和(
x 1
,
y 1 )计算每个点对点(
x’,
y’)处随机数的关键值:
;
式中,
d(
x 0,
y 0)为点(
x 0,
y 0)处的梯度;
4.3)通过插值函数3p2-2p3分别对上式的计算结果进行处理:
;
在y’方向对a和b进行处理,所得的插值结果即为点(
x’,
y’)处的Perlin噪声函数值
q:
;
上式计算为单个频率下的Perlin噪声值,通过叠加多个不同频率下的二维Perlin噪声,即可得到最终的随机纹理,其表达式为:
;
式中,设定的持续度为1/2,N为总的频率个数;
4.4)最后通过和时间相关的变量对噪声纹理进行采样,得到相应法线信息,再进行正常的折射和反射计算,得到最后的水面波动效果;
5)添加菲涅尔反射:
在Unity场景的实时渲染中,采用了Schlick菲涅尔近似公式:
;
其中,
F 0 为反射系数,用于控制菲涅尔反射的强度,
v是视角方向,
r是表面法线。
与现有技术相比,本发明具有如下有益效果:
1、本发明通过坐标变化、划分网格、拟合样条曲线、样条曲面和添加着色器等,在目前流域模拟过程中,GIS插件中生成的地形能够很好地与河流相配合,使河流能够精确显示在对应的地形区域中。
2、本发明完成了河床地形的建模,并且与水产生了良好的交互。对于后续实现洪水淹没,雨情预报预警奠定了基础。基于数字孪生的模拟流域方便水利工作人员更直观地观察到本流域的状况,在预览结果的基础上进行分析评价,更加及时调整水利工程运行、应急调度、人员防灾等应对措施,有效提高计划的科学性和可操作性。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施方式,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为发明所述一种基于数字孪生的流域建模方法的流程图;
图2为发明所述戴村坝流域的地形图;
图3为发明中网格顶点示意图;
图4为网格顶点索引的示意图;
图5为实施例1中模拟生成的地形图;
图6为图5的局部放大视图;
图7为实施例1中河流与地形建模相配合后的效果图;
图8为图7的局部放大视图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本实施例以戴村坝流域作为目标流域,戴村坝流域位于山东省东平县境内,为大汶河入支流。如图1所示,一种基于数字孪生的流域建模方法,包括如下步骤:
步骤S1:获取流域所在区域的地理数据,在建模软件Unity中对地理数据进行处理,确定地形表面的曲面拟合函数,得到地形表面的曲面信息;
步骤S2:在步骤S1中获取的地形表面的曲面上绘制目标河流网格;
步骤S3:给目标河流网格添加着色器,模拟出目标流域。
在本实施例中,所述步骤S1中,具体包括如下步骤:
步骤S1.1:获取流域所在区域的地理数据:
通过GIS获取流域所在区域的地理数据,包括流域所在区域的地形图,以及不同位置的经纬度信息和高程信息,即不同位置点在世界坐标系中坐标信息;其中,地形图如图2所示。
在本实施例中,给出了戴村坝流域在世界坐标系中地理数据,由于篇幅限制,给出了部分数据,如表1所示。
表1 戴村坝流域在世界坐标系中的部分地理数据
步骤S1.2:数据处理:
在Unity中建立三维直角坐标系OXZY,记为模拟坐标系;选择XOZ面为水平面,Y轴方向表示为地形高度,从垂直XOZ平面的方向观察,流域所在区域地形图在XOZ平面中为矩形,将地形图左下角的端点设置为坐标原点O,将流域所在区域内各点在世界坐标系中的坐标值换算为模拟坐标系中的坐标值,然后将经过坐标变换后的数据整合为XLSX格式的表格文件。在本实施例中,给出了戴村坝流域实地地理数据经过坐标变换后的数据,由于篇幅限制,给出了部分数据,如表2所示,表2中的序号与表1中的相对应。
表2 经过坐标变换后的数据
在本实施例中,所述步骤S1.2中,将流域所在区域内地形上的点在世界坐标系中的坐标值换算为模拟坐标系的坐标值,具体包括如下步骤:
设定地形图上A点的位置与模拟坐标系中的原点O重合,则A点在模拟坐标系XOZ平面上的坐标为(0,0);地形图上其他点在模拟坐标系中X轴的坐标值为该点与A点在世界坐标系中X’轴的坐标值之差;同样,地形图上其他点在模拟坐标系中Z轴的坐标值为该点与A点在世界坐标系中Z’轴的坐标值之差。
对于Y轴坐标值,找出地形图上所有点在世界坐标系中Y’轴坐标值的最小值D,然后将每个点在世界坐标系中Y’轴的坐标值减去D作为其在模拟坐标系中Y轴的坐标;至此得到流域所在区域内地形图上各点在模拟坐标系中的三维坐标值。
步骤S1.3:确定曲面拟合函数:
S1.3.1:根据步骤S1.2中整合后的坐标数据,选取X轴坐标值相同的一组点的坐标拟合得到一条B样条曲线,选取另外一组X轴坐标值相同的一组点的坐标拟合得到另一条B样条曲线,依次拟合,得到(
m+1)条在X轴方向的B样条曲线;采用同样的方法,拟合出(
n+1)条在Z轴方向的B样条曲线;
m、n均为大于3的正整数。
在本实施例中,选取X轴坐标值都为0的一组点的坐标,如表3所示,拟合得到一条B样条曲线。
表3 X轴坐标值都为0的一组点的坐标值
;
选取Z轴坐标值都为0的一组点的坐标,如表4所示,拟合得到另一条B样条曲线。
表4 Z轴坐标值都为0的一组点的坐标值
。
同理,得到多条样条曲线,由于篇幅限制,不再一一赘述。
S1.3.2:将上述步骤S1.3.1中得到的B样条曲线在 X、Z 两个方向上多次构建拟合成B样条曲面,具体为:(
m+1)条在X轴方向的B样条曲线与(
n+1)条在Z轴方向的B样条曲线相交,得到(
m+1)×(
n+1)个控制点,由这(
m+1)×(
n+1)个控制点构成一张控制网格,则X、Z两个方向的参数节点矢量分别为X=[
x 0,
x 1,…,
x m+
k+1],Z=[
z 0,
z 1,…,
z n+
l+1];B样条曲面的方程如下:
;
式中
F i,j 为控制点集,即三维点云中的点集,
i=0,1…
m,j=0,1…n;
N i,k (
x)和
N j,l (z)为B样条曲面基函数,式中
k和
l表示样条曲线的幂次,下标
i和
j表示B样条曲线的序号;
在本实施例中,根据上述样条曲线得到的曲面的方程为:
步骤S1.4:在Unity数字孪生流域模拟平台中进行目标区域地形表面创建:
在模拟坐标系中,地形图沿X方向每行有xSize个点,沿Z方向每列有zSize个点,共有xSize* zSize个点,如图3所示,赋予每个点对应的X坐标和Z坐标,其中左下角顶点在XOZ中坐标值为(0,0);将每个点的XOZ坐标值代入B样条曲面函数中,获取对应的Y坐标,即得到地形表面对应位置在Unity数字孪生流域平台中的坐标信息,并进行存储;然后采用三角形定义法得到目标区域地形表面曲面。具体包括如下步骤:xSize* zSize个网格顶点按如下规律排列:第一行网格点索引为0~xSize,第二行网格点索引为xSize~2*(xSize+1)-1,……,最后一行网格点索引为(zSize-1)*(xSize+1)-1~zSize*(xSize+1)-1。
三角形通过顶点索引数组定义,如图4所示,按顺时针方向排列,则三角形被视为向前且可见,逆时针三角形被丢弃;每个网格曲面由两个三角形生成,则地形图上左下角顶点处相靠近的两个三角形对应的6个顶点索引如下:
triangles[0] = 0;
triangles[1] = xSize + 1;
triangles[2] = 1;
triangles[3] = 1;
triangles[4] = xSize + 1;
triangles[5] = xSize + 2;
按照上述索引方式,循环遍历所有网格,生成大的地形网格。
在本实施例中,所述步骤S2中,绘制目标河流网格,具体包括如下步骤:
步骤S2.1:选取多个控制点生成与目标区域中河流形状相同的Catmull-Rom曲线L,在Unity数字孪生流域模拟平台中将目标河流设定为一条网格带,网格带上的顶点对称的分布在曲线L的两边。
在本实施例中,戴村坝流域的Catmull-Rom曲线L为:
步骤S2.2: 新建一个Vector3格式的列表存储河流控制点的坐标信息,新建一个Int类型的列表储存不同控制点对应位置的河流宽度width;
步骤S2.3:通过曲线上两个相邻控制点P1、P2,计算出向量P1P2,然后取Y轴为世界坐标系Y’轴;通过叉乘得到河流水平面向量V,在向量V的方向,加减对应河流宽度的一半,求出控制点P1两边的顶点坐标;用相同方法依次求出所有河流控制点的两边顶点坐标值;
步骤S2.4:与地形绘制方法相同,绘制出河流网格。
在本实施例中,所述步骤S3中,在Unity数字孪生流域模拟平台中,新建一个材质,命名为WaterMat。新建一个 Unity Shader,命名为Shader-Water。把新建的Shader添加材质上。打开新建的着色器,声明下面的属性:_ MainTex 是河流纹理,_ Color用于控制整体颜色,_ Magnitude用于控制水流波动的幅度,_ Frequency 用于控制波动频率,_InvWaveLength 用于控制波长的倒数,_ InvWaveLength 值越大,波长越小,Speed 用于控制河流纹理的移动速度。
通过添加着色器实现模拟河流的如下功能:
1)使水流沿着河流方向流动:
首先计算顶点位移量,根据相邻的河流控制点形成的向量,将相关顶点在对应方向进行偏移,对该偏移加上模型空间的位置分量,并乘以系数_ InvWaveLength控制波长,最后对结果值乘以系数_ Magnitude来控制波动幅度,得到最终的位移,实现模拟流域中的水流流动。
2)使地形与河流契合:
将地形图上所有顶点抬高设定高度,以地形图上每个顶点为起点,向下发射射线,判断是否碰撞到河流网格;
如果碰撞到,就将地形图网格对应的顶点向下凹陷指定深度,并根据碰撞点的UV和指定的AnimationCurve微调顶点凹陷的程度,使河床与地形过渡更自然。
3)增加水流中的泡沫:
在Unity场景中新添加一张泡沫纹理贴图,河流Mesh通过纹理采样器获取对应位置的颜色信息,将该颜色信息添加到片元着色器最后的输出结果中,实现了产生泡沫的效果。另外,地形坡度是河流Mesh当前的法线在世界坐标系Y轴上的投影来判断,投影越小越陡峭,相应泡沫就越多。
4)添加Perlin噪声纹理:
利用生成的Perlin噪声纹理实现海浪可视化的过程为:
4.1)选择一个合适的随机函数,把这个函数命名为noise,将种子设为1000;
4.2)对于任意点(
x’,
y’),通过附近四个顶点位置(
x 0
,y 0 )、(
x 0
,y 1 )、(
x 1
,y 0 )和(
x 1
,
y 1 )计算每个点对点(
x’,
y’)处随机数的关键值:
式中,
d(
x 0,
y 0)为点(
x 0,
y 0)处的梯度;
4.3)通过插值函数3p2-2p3分别对上式的计算结果进行处理:
;
在y’方向对a和b进行处理,所得的插值结果即为点(
x’,
y’)处的Perlin噪声函数值
q:
;
上式计算为单个频率下的Perlin噪声值,通过叠加多个不同频率下的二维Perlin噪声,即可得到最终的随机纹理,其表达式为:
;
式中,设定的持续度为1/2,N为总的频率个数;
4.4)最后通过和时间相关的变量对噪声纹理进行采样,得到相应法线信息,再进行正常的折射和反射计算,得到最后的水面波动效果;
5)添加菲涅尔反射:
在Unity场景的实时渲染中,采用了Schlick菲涅尔近似公式:
;
其中,
F 0 为反射系数,用于控制菲涅尔反射的强度,
v是视角方向,
r是表面法线。通过添加菲涅尔反射,模拟的河流中水几乎是透明的,能够看到水底的小鱼和石子;但是,看远处的水面时,几乎看不到水下的情景,而只能看到水面反射的环境,使模拟的河流更加逼真。因此添加完该反射使整体模拟的河流更加逼真,获得更好的视觉效果。
在本实施例中,模拟生成的地形图,如图5所示,图6为图5的局部放大视图。图7为河流与地形建模相配合后的效果图,图8为图7的局部放大视图。
以上述依据本发明的理想实施例为启示,通过上述的说明内容,相关工作人员完全可以在不偏离本项发明技术思想的范围内,进行多样的变更以及修改。本项发明的保护范围并不局限于说明书上的内容,必须要根据权利要求范围来确定其保护范围。
Claims (6)
1.一种基于数字孪生的流域建模方法,其特征在于,包括如下步骤:
步骤S1:获取流域所在区域的地理数据,在建模软件Unity中对地理数据进行处理,确定地形表面的曲面拟合函数,得到地形表面的曲面信息;
步骤S2:在步骤S1中获取的地形表面的曲面上绘制目标河流网格;
步骤S3:给目标河流网格添加着色器,模拟出目标流域。
2.根据权利要求1所述的基于数字孪生的流域建模方法,其特征在于,所述步骤S1中,具体包括如下步骤:
步骤S1.1:获取流域所在区域的地理数据:
通过GIS获取流域所在区域的地理数据,包括流域所在区域的地形图,以及不同位置的经纬度信息和高程信息,即不同位置点在世界坐标系中坐标信息;
步骤S1.2:数据处理:
在Unity中建立三维直角坐标系OXZY,记为模拟坐标系;选择XOZ面为水平面,Y轴方向表示为地形高度,从垂直XOZ平面的方向观察,流域所在区域地形图在XOZ平面中为矩形,将地形图左下角的端点设置为坐标原点O,将流域所在区域内各点在世界坐标系中的坐标值换算为模拟坐标系中的坐标值,然后将经过坐标变换后的数据整合为XLSX格式的表格文件;
步骤S1.3:确定曲面拟合函数:
S1.3.1:根据步骤S1.2中整合后的坐标数据,选取X轴坐标值相同的一组点的坐标拟合得到一条B样条曲线,选取另外一组X轴坐标值相同的一组点的坐标拟合得到另一条B样条曲线,依次拟合,得到(m+1)条在X轴方向的B样条曲线;采用同样的方法,拟合出(n+1)条在Z轴方向的B样条曲线;m、n均为大于3的正整数;
S1.3.2:将上述步骤S1.3.1中得到的B样条曲线在 X、Z 两个方向上多次构建拟合成B样条曲面,具体为:(m+1)条在X轴方向的B样条曲线与(n+1)条在Z轴方向的B样条曲线相交,得到(m+1)×(n+1)个控制点,由这(m+1)×(n+1)个控制点构成一张控制网格,则X、Z两个方向的参数节点矢量分别为X=[x 0,x 1,…,x m+k+1],Z=[z 0,z 1,…,z n+l+1];B样条曲面的方程如下:
;
式中F i,j 为控制点集,即三维点云中的点集,i=0,1…m,j=0,1…n;N i,k (x)和N j,l (z)为B样条曲面基函数,式中k和l表示样条曲线的幂次,下标i和j表示B样条曲线的序号;
步骤S1.4:在Unity数字孪生流域模拟平台中进行流域所在区域地形表面创建:
在模拟坐标系中,地形图沿X方向每行有xSize个点,沿Z方向每列有zSize个点,共有xSize* zSize个点,赋予每个点对应的X坐标和Z坐标,其中左下角顶点在XOZ中坐标值为(0,0);将每个点的XOZ坐标值代入B样条曲面函数中,获取对应的Y坐标,即得到地形表面对应位置在Unity数字孪生流域平台中的坐标信息,并进行存储;然后采用三角形定义法得到流域所在区域地形表面曲面。
3.根据权利要求2所述的基于数字孪生的流域建模方法,其特征在于,所述步骤S1.2中,将流域所在区域内地形上的点在世界坐标系中的坐标值换算为模拟坐标系的坐标值,具体包括如下步骤:
设定地形图上A点的位置与模拟坐标系中的原点O重合,则A点在模拟坐标系XOZ平面上的坐标为(0,0);地形图上其他点在模拟坐标系中X轴的坐标值为该点与A点在世界坐标系中X’轴的坐标值之差;同样,地形图上其他点在模拟坐标系中Z轴的坐标值为该点与A点在世界坐标系中Z’轴的坐标值之差;
对于Y轴坐标值,找出地形图上所有点在世界坐标系中Y’轴坐标值的最小值D,然后将每个点在世界坐标系中Y’轴的坐标值减去D作为其在模拟坐标系中Y轴的坐标;至此得到流域所在区域内地形图上各点在模拟坐标系中的三维坐标值。
4.根据权利要求3所述的基于数字孪生的流域建模方法,其特征在于,所述步骤S1.4中,采用三角形定义法得到流域所在区域地形表面曲面,具体包括如下步骤:
xSize* zSize个网格顶点按如下规律排列:第一行网格点索引为0~xSize,第二行网格点索引为xSize~2*(xSize+1)-1,……,最后一行网格点索引为(zSize-1)*(xSize+1)-1~zSize*(xSize+1)-1;
三角形通过顶点索引数组定义,按顺时针方向排列,则三角形被视为向前且可见,逆时针三角形被丢弃;每个网格曲面由两个三角形生成,则地形图上左下角顶点处相靠近两个三角形对应的6个顶点索引如下:
triangles[0] = 0;
triangles[1] = xSize + 1;
triangles[2] = 1;
triangles[3] = 1;
triangles[4] = xSize + 1;
triangles[5] = xSize + 2;
按照上述索引方式,循环遍历所有网格,生成大的地形网格曲面。
5.根据权利要求4所述的基于数字孪生的流域建模方法,其特征在于,所述步骤S2中,绘制目标河流网格,具体包括如下步骤:
步骤S2.1:选取多个控制点生成与目标河流形状相同的Catmull-Rom曲线L,在Unity数字孪生流域模拟平台中将目标河流设定为一条网格带,网格带上的顶点对称的分布在曲线L的两边;
步骤S2.2: 新建一个Vector3格式的列表,存储河流控制点的坐标信息;新建一个Int类型的列表,储存不同控制点对应位置的河流宽度width;
步骤S2.3:通过曲线上两个相邻控制点P1、P2,计算出向量P1P2;通过叉乘得到河流水平面向量V,在向量V的方向,加减对应位置河流宽度的一半,求出控制点P1两边的顶点坐标;用相同方法依次求出所有河流控制点的两边顶点坐标值;
步骤S2.4:与地形绘制方法相同,绘制出河流网格。
6.根据权利要求5所述的基于数字孪生的流域建模方法,其特征在于,所述步骤S3中,在Unity数字孪生流域模拟平台中,通过添加着色器实现目标河流的如下功能:
1)使水流沿着河流方向流动:
首先计算顶点位移量,根据相邻的河流控制点形成的向量,将相关顶点在对应方向进行偏移,对该偏移加上模型空间的位置分量,并乘以系数来控制波长,最后对结果值乘以系数来控制波动幅度,得到最终的位移,模拟流域中的水流流动;
2)使地形与河流契合:
将地形图上所有顶点抬高相同的高度,然后以地形图上每个顶点为起点,向下发射射线,判断是否碰撞到河流网格;
如果碰撞到,就将地形图网格对应的顶点向下凹陷指定深度,并根据碰撞点在着色器中贴图的纹理坐标和河流宽度方向横截面的曲线,微调顶点凹陷的程度,使河床与地形过渡更自然;
3)增加水流中的泡沫:
在Unity场景中新添加一张泡沫纹理贴图,河流Mesh通过纹理采样器获取对应位置的颜色信息,将该颜色信息添加到片元着色器最后的输出结果中,实现了产生泡沫的效果;另外,地形坡度用河流Mesh当前的法线在世界坐标系Y轴上的投影来判断,投影越小越陡峭,相应泡沫就越多;
4)添加Perlin噪声纹理:
利用生成的Perlin噪声纹理实现海浪可视化的过程为:
4.1)选择一个合适的随机函数,把这个函数命名为noise,将种子设为1000;
4.2)对于任意点(x’,y’),通过附近四个顶点位置(x 0 ,y 0 )、(x 0 ,y 1 )、(x 1 ,y 0 )和(x 1 ,y 1 )计算每个点对点(x’,y’)处随机数的关键值:
;
式中,d(x 0,y 0)为点(x 0,y 0)处的梯度;
4.3)通过插值函数3p2-2p3分别对上式的计算结果进行处理:
;
在y’方向对a和b进行处理,所得的插值结果即为点(x’,y’)处的Perlin噪声函数值q:
;
上式计算为单个频率下的Perlin噪声值,通过叠加多个不同频率下的二维Perlin 噪声,即可得到最终的随机纹理,其表达式为:
;
式中,设定的持续度为1/2,N为总的频率个数;
4.4)最后通过和时间相关的变量对噪声纹理进行采样,得到相应法线信息,再进行正常的折射和反射计算,得到最后的水面波动效果;
5)添加菲涅尔反射:
在Unity场景的实时渲染中,采用了Schlick菲涅尔近似公式:
;
其中,F 0 为反射系数,用于控制菲涅尔反射的强度,v是视角方向,r是表面法线。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310269624.2A CN115983162B (zh) | 2023-03-20 | 2023-03-20 | 一种基于数字孪生的流域建模方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310269624.2A CN115983162B (zh) | 2023-03-20 | 2023-03-20 | 一种基于数字孪生的流域建模方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115983162A true CN115983162A (zh) | 2023-04-18 |
CN115983162B CN115983162B (zh) | 2023-06-20 |
Family
ID=85966885
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310269624.2A Active CN115983162B (zh) | 2023-03-20 | 2023-03-20 | 一种基于数字孪生的流域建模方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115983162B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116757004A (zh) * | 2023-08-21 | 2023-09-15 | 长江空间信息技术工程有限公司(武汉) | 基于数字孪生技术的efdc三维水质数据多模式推演方法 |
CN117237567A (zh) * | 2023-08-22 | 2023-12-15 | 珠江水利委员会珠江水利科学研究院 | 一种数字孪生洪水流场可视化渲染方法 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070038421A1 (en) * | 2005-05-18 | 2007-02-15 | Microsoft Corporation | River Modeling |
CN104318617A (zh) * | 2014-10-17 | 2015-01-28 | 福建师范大学 | 一种面向虚拟应急演练的三维地理场景仿真方法 |
CN105631168A (zh) * | 2016-03-25 | 2016-06-01 | 中国水利水电科学研究院 | 一种实时高效的流域洪水演进可视化仿真方法 |
KR101912627B1 (ko) * | 2017-05-30 | 2018-10-30 | 에스지에이블록체인 주식회사 | Gis 기반의 수문-수리모형 분석결과의 통합 가시화 방법 |
CN112860839A (zh) * | 2021-04-23 | 2021-05-28 | 成都四方伟业软件股份有限公司 | 一种基于Unity3D的水环境质量实时监测方法及装置 |
CN113158451A (zh) * | 2021-04-08 | 2021-07-23 | 中国水利水电科学研究院 | 一种基于一维洪水演进模型的大区域河流三维模拟方法 |
CN113283095A (zh) * | 2021-05-31 | 2021-08-20 | 中国水利水电科学研究院 | 一种进化式数字孪生流域构建方法 |
US20210286104A1 (en) * | 2020-03-16 | 2021-09-16 | River Software Inc | Systems, apparatus, and methods of watershed modeling and assessment |
CN113628337A (zh) * | 2021-08-20 | 2021-11-09 | 北京优锘科技有限公司 | 基于WebGL的大规模河道流场可视化渲染的方法、装置和设备 |
CN115526999A (zh) * | 2022-10-17 | 2022-12-27 | 久瓴(上海)智能科技有限公司 | 流域模型生成方法及生成装置、电子设备、存储介质 |
-
2023
- 2023-03-20 CN CN202310269624.2A patent/CN115983162B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070038421A1 (en) * | 2005-05-18 | 2007-02-15 | Microsoft Corporation | River Modeling |
CN104318617A (zh) * | 2014-10-17 | 2015-01-28 | 福建师范大学 | 一种面向虚拟应急演练的三维地理场景仿真方法 |
CN105631168A (zh) * | 2016-03-25 | 2016-06-01 | 中国水利水电科学研究院 | 一种实时高效的流域洪水演进可视化仿真方法 |
KR101912627B1 (ko) * | 2017-05-30 | 2018-10-30 | 에스지에이블록체인 주식회사 | Gis 기반의 수문-수리모형 분석결과의 통합 가시화 방법 |
US20210286104A1 (en) * | 2020-03-16 | 2021-09-16 | River Software Inc | Systems, apparatus, and methods of watershed modeling and assessment |
CN113158451A (zh) * | 2021-04-08 | 2021-07-23 | 中国水利水电科学研究院 | 一种基于一维洪水演进模型的大区域河流三维模拟方法 |
CN112860839A (zh) * | 2021-04-23 | 2021-05-28 | 成都四方伟业软件股份有限公司 | 一种基于Unity3D的水环境质量实时监测方法及装置 |
CN113283095A (zh) * | 2021-05-31 | 2021-08-20 | 中国水利水电科学研究院 | 一种进化式数字孪生流域构建方法 |
CN113628337A (zh) * | 2021-08-20 | 2021-11-09 | 北京优锘科技有限公司 | 基于WebGL的大规模河道流场可视化渲染的方法、装置和设备 |
CN115526999A (zh) * | 2022-10-17 | 2022-12-27 | 久瓴(上海)智能科技有限公司 | 流域模型生成方法及生成装置、电子设备、存储介质 |
Non-Patent Citations (1)
Title |
---|
刘志成 等: "数字孪生流域方案研究", 《2022中国水利学术大会(中国水利学会2022学术年会)》, pages 195 - 199 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116757004A (zh) * | 2023-08-21 | 2023-09-15 | 长江空间信息技术工程有限公司(武汉) | 基于数字孪生技术的efdc三维水质数据多模式推演方法 |
CN116757004B (zh) * | 2023-08-21 | 2023-10-20 | 长江空间信息技术工程有限公司(武汉) | 基于数字孪生技术的efdc三维水质数据多模式推演方法 |
CN117237567A (zh) * | 2023-08-22 | 2023-12-15 | 珠江水利委员会珠江水利科学研究院 | 一种数字孪生洪水流场可视化渲染方法 |
CN117237567B (zh) * | 2023-08-22 | 2024-05-07 | 珠江水利委员会珠江水利科学研究院 | 一种数字孪生洪水流场可视化渲染方法 |
Also Published As
Publication number | Publication date |
---|---|
CN115983162B (zh) | 2023-06-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Génevaux et al. | Terrain generation using procedural models based on hydrology | |
CN104766366B (zh) | 一种三维虚拟现实演示的建立方法 | |
CN115983162A (zh) | 一种基于数字孪生的流域建模方法 | |
CN108052776B (zh) | 基于bim和三维实景模型的洪水模型构建与动态展示方法 | |
CN102663827B (zh) | 复杂淹没区域风暴潮洪水演进三维动态全过程仿真方法 | |
Génevaux et al. | Terrain modelling from feature primitives | |
CN105760581B (zh) | 一种基于osg的沟道流域整治规划仿真方法及*** | |
CN104835202A (zh) | 一种三维虚拟场景快速构建方法 | |
Roudier et al. | Landscapes synthesis achieved through erosion and deposition process simulation | |
JP2005128838A (ja) | 簡易型洪水氾濫解析システム | |
CN112017285B (zh) | 一种三维gis中实时使地形精确贴合条状模型的方法 | |
CN114332395A (zh) | 一种基于水力学模型与三维渲染技术实现洪水演进模拟的方法 | |
CN115690286B (zh) | 三维地形生成方法、终端设备及计算机可读存储介质 | |
Khayyal et al. | Creation and spatial analysis of 3D city modeling based on GIS data | |
JP5241296B2 (ja) | 数値地図データ処理プログラム及び数値地図データ処理装置 | |
Borisov et al. | An automated process of creating 3D city model for monitoring urban infrastructures | |
CN101763659B (zh) | 基于图像集的大规模数字化高程数据模型自动生成方法 | |
Giannakidis et al. | 3D photorealistic scientific visualization of tsunami waves and sea level rise | |
Cornel et al. | Integrated Simulation and Visualization for Flood Management | |
CN117456074B (zh) | 基于数字孪生仿真的海上风电冲刷坑三维渲染方法和设备 | |
CN109147041A (zh) | 一种基于虚拟现实技术的水域管理仿真*** | |
CN114627258B (zh) | 一种重力场双体球同构建模方法与*** | |
CN114103127B (zh) | 流域地形3d打印方法及装置、电子设备、存储介质 | |
CN112233237B (zh) | 制作数字高程模型时的水域置平处理方法、计算机设备 | |
Yang et al. | Predicting flood inundation and risk using geographic information system and hydrodynamic model |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |