水动力仿真可视化中的7大技术模块解析
水利行业正加速向数字化、智能化方向转型,传统水文模型受限于单一的数据表达形 式,难以直观呈现复杂的水文动态与洪水演进过程。在此背景下,水动力模型通过融合虚 拟仿真、可视化技术和数字孪生理念,构建起多维度的动态表达体系,实现了水利模型从 "数据堆砌"到"场景复现"的跨越式发展。该模型不仅通过倾斜摄影矩阵实现与真实地形的空间耦合,更借助 GPU 加速渲染、数据归一化处理等技术,将水深、流速等抽象参数转 化为直观的色彩渐变与三维动态网格,使流域内的水文变化能以毫米级精度实时呈现。
在技术实现层面,水动力模型创新性地采用二进制轻量化存储方案,通过 Node.js 预 处理将原始数据压缩率提升 60%以上,并构建顶点索引优化算法,使百万级网格的加载时 间缩短至秒级响应。其动态着色系统引入 HSV 色彩空间转换技术,通过分段线性插值算法实现 0.1 米水深分辨率的色彩映射,配合后处理分屏渲染技术,可在同一视窗对比不同 时空尺度的洪水演进过程。值得关注的是,该模型与数字孪生平台的深度融合,使得二维水动力仿真能够实时接入气象雷达、水文监测等多源数据流,构建起具有自我修正能力的智能预报系统。
这种技术革新正在重塑水利决策模式。如海河流域应用的二维水动力学洪水演进模型,通过遥感数据同化和无人机动态监测,实现了洪水淹没范围预测精度提升至 95%以上, 推演速度较传统模型提高 20 倍。未来,随着 AI 驱动的参数估计器(PEDL)和深度学习集合平滑器(ESDL)等技术的引入,水动力模型将突破非高斯数据处理的瓶颈,为城市 内涝防治、生态流量调控等复杂场景提供更精准的决策支持。
传统形式技术,更多是以静态图片、二维图表为主,较难反映动态变化,需人工切换 时间步或以来离线数据处理,没有交互性,更多是在事后进行分析,较为依赖人工经验。 而数字孪生技术,与三维真实场景结合,观察到真实场景某一处的模拟淹没情况,能够与多场景进行交互。并且支持实时推演,动态决策,也能加入二维图表对数据进行详细的展示。
2.技术原理
利用规定的二进制格式存储结果及模型文件,解析数据中的水动力模型文件,通过几何处理、光照计算、光栅化、片元着色、合成输出这一套流程,对模型文件中的每个顶点 的坐标执行(模型→世界→视图)变换,将顶点变化到三维场景内的坐标系中,同时在片元着色器中,根据给定的颜色映射规则,将不同位置的水深数据按照颜色规则渲染到水动力模型的平面上。
我们通过二进制的方式存放水动力的模型数据及结果数据,因为能够规定每一个数值在内存中存放的位数,从而降低文件大小,提高网络传输文件的速率。按照顶点编号顺序存储,在后续能够直接根据索引获得顶点的位置信息,能够减少不必要的计算消耗。
3.建立过程
3.1.水动力结果数据处理与解析
将水力学模型输出的结果转换为轻量级二进制格式,使用 node.js 对数据进行预处理, 提取关键数据如水深数据,顶点编号的信息,过滤掉多余的字符,通过二进制存储数据减少文件占用的内存大小。将水动力的所有结果处理并存到一个文件中,这样做可以只在第一次加载时加载一次,不需要后续多次请求结果文件,并且为后面能够及时响应时间轴的拖拽事件做准备。下图为处理数据的流程图。
3.2.构建几何网格
通过处理后的数据构建模型。通过每个平面构成的顶点编号得到顶点索引,根据顶点索引的关系实现每一个小四边平面的构建,最后由这些小平面集合为最终水动力平面的显示,但此时坐标系仍未完全转变到倾斜摄影的坐标系,要再通过倾斜摄影中的矩阵将水动力网格与倾斜摄影的地形贴合,实现与真实场景相结合。
3.3.动态着色
采用数据归一化的方法,将水深数据归一化到 0-1 的范围内,便于后续使用归一化的值进行颜色映射不需要再额外进行颜色的数值计算。 结合曲线拟合技术,通过编写的曲线函数,将归一化后的数据映射至 RGB 三个颜色 通道,实现水深数据的动态着色,反映流域内的变化。
3.4.分屏渲染
引入后处理的相关技术,通过 RenderTarget 和 blitRenderTarget 技术来进行处理, RenderTarget 是用于渲染图形的缓冲区,通常可以是纹理(Texture)或帧缓冲对象(Frame Buffer Object)。创建 RenderTarget 后,可以将渲染的图像绘制到其中,从而在后续的处 理步骤中对渲染结果进行操作,例如添加或修改后处理效果。blitRenderTarget 可以在不同 RenderTarget 之间进行内容复制,从而实现各种后处理效果,以实现在渲染过程的不同阶 段对图像进行处理。基于这样可以实现将倾斜摄影复制到划分好的两个区域上,实现相同性能开销的倾斜摄影分屏渲染。
3.5.时间轴联动渲染
通过将时间轴拖拽事件与水动力结果数据变化联动,采用每帧移动进度条触发事件发 送当前进度,水动力接收到这个进度后将这个进度转为对应天数的结果数据,实现二位水动力仿真模拟的无缝联动,确保用户能够直观观察时间序列变化,并且可视化展示仿真推 演过程数据。
3.6.点击显示网格色块平面 实现了对点击到的四边平面进行标记,由于水平面抬升是直接在 GPU 中通过改变水 平面的模型空间中 y 的数值实现,相比于 CPU 会节省更多的性能及时间,所以为了让射 线检测能够匹配到 GPU 中 y 的变化值,重新优化了底层的射线检测算法,将 GPU 中的抬 升后的数值也加入到检测平面的实际变化中,这样即使在水平面抬升的情况下,系统依然能够准确捕捉到鼠标点击的位置,确保用户体验的一致性和准确性。
3.7.点击显示经纬度、海拔、水深过程线图表
借助 echart 和 React 实现交互式水深过程线图表,将数据变化实时同步,将当前时刻及之前时刻的所有数据显示,能够更直观的观察到水深数据的变化。同时如果鼠标点击到了倾斜摄影,会将点击位置的经纬度及海拔显示出来。
易知微基于多年在数字孪生及数据可视化领域丰富实践,沉淀了诸多经验成果,欢迎大家互相交流学习:
《数字孪生世界白皮书》下载地址:easyv.cloud/references/…
《数字孪生行业方案白皮书》下载地址:easyv.cloud/references/…
《港口数智化解决方案》下载地址:easyv.cloud/references/…
想申请易知微产品免费试用的客户,欢迎点击易知微官网申请试用:易知微 - 数字孪生仿真渲染引擎与可视化应用