从 TB 级数据到毫米级洞察:守护特高坝安全的可视化引擎

52 阅读6分钟

1.引言

水库大坝作为国家水网工程的战略性节点,其结构安全直接关乎防洪安全、电力供应和生态平衡。传统监测手段受限于单点传感器数据和二维力学模型,难以精确捕捉坝体-地基-库水系统的多物理场耦合效应(对应后文有限元模型的多结果项解析)。随着我国特高坝、碾压混凝土坝等新型结构的普及,基于 GPU 并行计算与三维可视化技术的智能分析体系成为行业刚需。

(以下内容均来源于[《数字孪生与智能算法白皮书2025》][易知微 - 数字孪生仿真渲染引擎与可视化应用]

本文提出的有限元实时渲染解决方案,通过二进制压缩存储、六面体网格拓扑优化、动态颜色映射算法及智能剖切引擎四大核心技术,实现了从 TB 级有限元数据到交互式三维可视化的全链路突破。系统采用分层式颜色过渡策略确保科研人员可量化分析应力梯度分布,通过法线动态计算与光照分离渲染兼顾真实感表达与数据反演精度。目前该方案已在白鹤滩、乌东德等 300m 级特高坝工程中完成验证,支持 2000 万单元模型的 60fps 实时渲染,位移解析精度达 0.1mm,较传统方法效率提升 40 倍以上。

2.模型建立

A. 高效存储大坝庞大且冗杂的数据,减小数据的总体大小,减轻网络传输数据的负担。 通过我们特定的二进制格式文件进行存储。对有限元模型文件(.FEV)和结果文件(.FED) 分开存储。他们的结构是相似的,都是由文件头和数据部分组成。.FEV 文件的文件头会 存储顶点坐标与顶点索引两者的起始位置与长度,在读取的时候我们便能根据文件头中的 信息拿到我们需要的模型信息。.FED 文件会比较复杂,下图是他的文件头的结构,因为 有多个结果项,所以需要对每个结果项进行区分,再根据每个结果项在数据中的位置解析 出每个结果项的详细信息。

数据体中会按照头中的格式进行存储,我们可以按每个数值的范围给他对应的字节长 度达到减小数据整体文件大小的目的。下图为.FEV 文件的数据结构。

B. 使用八个顶点的六面体,通过三角形图元进行渲染。根据文件格式约定解析二进制 数据,得到数据中的顶点位置数组、拓扑关系数组和计算结果数组。其中顶点位置数组和 计算结果数组的数组索引值作为顶点的唯一标识(下文简称顶点 ID)。拓扑关系数组中 使用顶点 ID 来记录一个有限元顶点构面顺序。

构建顶点缓存对象(VBO: Vertex Buffer Object,下文称为 VBO):创建顶点缓存对 象并绑定到帧缓冲区(Frame Buffer)。VBO 中包含了顶点的位置和颜色:使用顶点 ID 通过顶点位置数组可以索引到顶点在三维空间中的坐标位置。而顶点的颜色需要通过顶点 颜色映射来获取,映射得到颜色值后进行归一化和线性颜色转换,最终和顶点位置一起放 入 VBO 中。

创建顶点索引(Vertex Index):为了减小向 GPU 提交绘制命令(Draw Call)的性能 消耗,需要使用顶点索引缓存来尽可能复用顶点。拓扑关系数组的拓扑关系表达时,使用 顶点在顶点位置数组中的索引值(即上文提到的顶点 ID)作为该顶点唯一标识,记录一 个有限元六面体的 8 个顶点在构建该有限元的 12 个三角形图元的顶点顺序。创建图形学 上的顶点索引对象到帧缓冲区(Frame Buffer)。

通过上述步骤我们就能够得到渲染有限元的几何数据。

C. 通过顶点颜色映射的方法将工况中的应力、位移数据通过颜色的形式渲染在有限元 的模型上,在上文提到的 FED 文件的文件头中记录了计算结果数组的数值范围区间。通 过数学运算将每个顶点的结果值归一化,这个归一化后的数值就会成为标准颜色值。这个 颜色值后面会传入顶点着色器中,后续在 GPU 插值后在片元着色器映射成实际的颜色值。 用户能够通过设定一系列表示颜色分布的二元组集合。该二元组的第一个元素是 0 到 1 的数值,表示颜色位置;第二个元素为 RGB 的颜色值。

颜色分层分布渲染:基于科研分析的需求,需要对颜色值做区间映射,得到有分层感 的颜色分层分布。把传入到顶点的标准颜色值做 GPU 插值传入到片元着色器,根据用户 设定的颜色输出集合,把标准颜色值映射成具体的颜色值,这个颜色值称为漫反射颜色。

D. 表现出实时变化的有限元结果并实现有科研意义的层间过度效果。通过帧平滑插值 的手段,在两次颜色变化之间采用帧平滑插值。插值时为了得到有科研意义的层间过渡效 果,需要保持在各个片元间保持相同的颜色变化率。保持相同的颜色变化率的方法是根据 颜色变化量与规定的变化时间计算出颜色变化速度。得到颜色变化速度后,因为能够获取 到每帧的变化时间,所以能计算出每帧的颜色变化量。下图为切换工况应力模块的颜色过 渡流程和插值算法流程。

E. 通过片元的位置在三维空间的变化函数的偏导数计算该片元的法线,选用兰伯特光 照模型进行光照渲染得到有真实感的、立体感的三维结果,同时保存未被光照影响的颜色, 后续能够在点击到方块后通过未受光照影响的颜色值反算得到对应结果。

F. 根据前面得到的所有顶点数据,计算得到所有顶点在 x、y、z 三个方向的最值,计 算出六个切割平面的位置,使其组成一个矩形,根据渲染管线中各个空间的转换方法,将 鼠标在屏幕的位置反算出场景内的世界坐标,在拖动这六个切割平面时,会通过数学方法 判断每个片元是否需要舍弃(discard)。舍弃平面之外的片元,保留平面内的片元,这时 渲染到屏幕上的都是切割平面的截面处的有限元,从而能观察到内部的结构状态。下图为 剖切模块流程。

3.渲染结果