城市地下管网参数化建模关键技术研究及应用

2023-11-02 11:47杨锐马丁山雷文书田芮陈健平朱铭凡
城市勘测 2023年5期
关键词:管段瓦片实例

杨锐,马丁山,雷文书,田芮,陈健平,朱铭凡

(1.南京市水务设施管理中心,江苏 南京 210036; 2.南京市供水节水指导中心,江苏 南京 210004;3.南京市测绘勘察研究院股份有限公司,江苏 南京 210019)

0 引 言

城市地下管网是保障城市运行的重要基础设施和“生命线”,近年来,随着城市的快速发展,对城市地下管网的需求量越来越大,地下空间也变得更加复杂。城市地下管网信息具有空间分布复杂、管线种类繁多、数据量大、更新速度快等特点[1]。三维管线能够直观表达地下管线的空间位置关系,解决传统二维管线空间关系不明晰、显示效果不直观等问题[2],便于管线相关信息迅速查询及空间分析的应用。因此,城市地下管网三维可视化[3-6]成为三维GIS领域近年来研究的热点问题。

针对地下管线精细化三维建模,蓝贵文[7]等采用边界法与结构实体几何法的混合模型,兼顾了模型展示与空间分析,其中管件和附属物在3DS MAX中预先精细建模,管段批量参数化建模;詹勇[8]等基于OSG图形库进行管件和管段的自动参数化建模。针对模型的高效展示,李政和[9]使用了可见性剔除、消隐处理和LOD,对三维场景的管线数据优化处理;田师聪[10]结合了静态实例化与LOD,有效加速了含有大量相似模型的场景渲染。对于模型的美观处理,黄明[11]等使用布尔差运算删除了管线的重叠部分,使用布尔交运算修补了节点的空洞缺失;李政和[9]赋予管线材质和贴图,并简化了管网模型纹理映射的计算,经过着色处理提高了管线的真实质感。本文以南京市地下管线数据为实验对象,对管点进行参数化建模,并使用实例化技术生成管段模型,大大提升了渲染效率,实现了在Web平台100帧每秒的高效渲染,通过LOD提高加载速度,此外,对三维管网模型赋予PBR材质使得显示效果更加逼真。

1 地下管网参数化建模

本文采用3DTiles作为三维模型格式标准,对地下管网数据进行参数化建模。其中管段采用I3DM格式实现实例化,管点采用B3DM格式进行自动建模;对完成建模的三维模型进行瓦片划分,构建四叉树LOD;为模型赋予符合物理规律的PBR材质,使表现效果更逼真。

1.1 管段实例化建模

实例化技术,指在一次CPU绘制调用中对同一个几何体绘制多次,每次绘制的几何体具备各异的位置、缩放和姿态等。各管段仅在形态和位置上有所不同,可由一个标准管段通过仿射变换得到。仿射变换是平移和线性变换的组合,其中平移可由中心点位置计算得到,线性变换包括缩放和旋转,分别由三个轴向的缩放比例和朝向得到。可使用实例化技术规避对每个管段单独建模,提升建模和渲染的效率。

以圆管为例,本文选用长1 m,直径 1 m的圆柱体管段作为标准模型,中心点为圆柱体下底面的圆心,其与上底面圆心连线方向为Y轴正方向,向上为Z轴正方向,X轴与Y、Z轴组成右手系,如图1所示。

图1 圆管标准模型

管段数据以线表形式存储。每条管段记录存储了始末点平面位置、管径和埋深等信息,管段实例化建模时,需由此计算标准模型中心点对应的位置、三个轴向的缩放比例和方向向量。

(1)中心点位置

读取二维管线两端节点的水平位置,即为管段起点A和终点B的二维坐标。取管段起点埋深作为A点的Z坐标,终点埋深作为B点的Z坐标,由此得到管段起点和终点的完整三维坐标,并取起点A为标准模型中心点O对应的位置。如图2所示,蓝色虚线处是管段最终姿态,首先将标准模型平移到管段起点A处。

图2 平移示意

(2)三个轴向的缩放比例

圆形管段X和Z方向的缩放比例需一致,其大小为管段的直径。Y方向的缩放比例为管段的长度,由起点A和终点B之间的距离得到:

(1)

(3)三个轴向的方向向量

Y轴的方向向量ey为管段起点A指向终点B方向的单位向量。不考虑完全垂直的管段,X轴方向向量ex可由ey和Z轴方向向量(0,0,1)叉乘获得:

ex=ey×(0,0,1)

(2)

Z轴方向向量ez可由两者叉乘得到:

ez=ex×ey

(3)

将中心点位置、三个轴向的缩放比例和方向向量存储在实例化数组中,每读取一个实例化数组元素,就在着色器代码中应用该元素值,对标准模型作出偏移旋转缩放等操作,绘制出相应管段。3DTiles中使用I3DM瓦片保存实例化信息,在解析时使用实例化技术渲染,可显著减少CPU与GPU之间的数据交换量,提高绘制效率。

1.2 管点参数化建模

参数化建模是将三维模型的几何特征通过合理的方式抽象出来,将其映射为变量化参数,通过控制各参数的值以实现模型大小、形状的变更。

管点指二维数据中的点数据部分。按管点数据中的特征点和附属物字段的语义,可将管点分为弯头、井室和附属物三类,其中弯头包括二通、三通、四通弯头和变径弯头。本文中弯头和井室采用参数化建模,附属物则与前文的管段类似,通过实例化技术完成建模。

本文将弯头和井室模型抽象为截面形态和移动路径,如图3所示,截面位于起始点时构成模型底面,沿路径移动的过程中形成的外包面为模型侧面,到达终止点时构成模型顶面。模型的底面和顶面由截面顶点直接组成平面三角网格,侧面则根据移动路径上各节点处的截面法线方向计算该节点处的截面姿态,依次将相邻截面的顶点连接组成立体三角网格,如图4所示。

图3 截面沿路径移动

图4 模型侧面立体三角网格

(1)弯头参数化建模

二通弯头的截面取管段的横截面,即以管径为直径的圆形。如图5所示,二维数据中两相接管段AC、BC相交于点C,按照给定的转弯半径,在拐角处生成圆弧曲线DE,本文的转弯半径取管段半径。连接直线AD、曲线DE和直线EB即为截面的移动路径,由此构建弯头网格体。

图5 相接管段弯头构建

当多个管段在同一点处聚集或分流时会形成多通弯头,常见的有三通和四通弯头。二维数据一般不会记录多通弯头的具体结构,因此在建模时需重点考虑结构的合理展示。本文将多通弯头依次拆分成多个二通弯头,优先匹配管径相同的、管段夹角最大的点。三通弯头在匹配完一对管段建立二通弯头后,再使用二通弯头的中心点与剩余管段建立二通弯头。四通弯头则分别匹配两对管段建立二通弯头。

当弯头两端管段直径不一致时,会形成变径弯头。在对变径弯头参数化建模时,移动路径与二通弯头相同,截面大小随移动距离产生变化。本文采用“移动—缩放”数组描述变径点的结构,其中移动量取[0,1]区间的值,表示当前截面沿路径移动的距离占总距离的比例,缩放量取当前截面的缩放比例,相邻截面间的缩放比例均匀变化。例如指定(0,1)、(0.5,1)、(1,0.5)时,得到的变径弯头如图6所示,表示从起始点至中点的截面为原始大小,从中点到终止点的截面均匀缩小,直到原始大小的一半。

图6 变径弯头

(2)井室参数化建模

井室的截面为圆形平面,其直径与井室直径和井盖直径有关。相较于弯头,井室截面的移动路径较为简单,是以地面为起点,井深为距离的垂直向下的直线。特别的,对于井盖直径和井室直径不一致的井室,通常会给定井脖深度,在井脖深度以上截面直径取井盖直径,以下则取井室直径。

3DTile中的B3DM瓦片用于存放一般的三维模型及其属性信息。在对管点参数化建模时,将模型与属性数据一起写入B3DM文件中,两者通过索引号关联。

(3)附属物参数化建模

附属物采用实例化建模,与管段的建模方法相似,需要指定位置、缩放和旋转参数。

位置参数可取管点自身的位置数据,对于阀门、水表等附着在管线上的附属物,可在自身位置上增加偏移:

P=P0+(R×Zup)

(4)

式(4)中P为最终位置,P0为管点位置,R为管段半径,Zup为管段Z轴方向。

附属物的旋转参数由三个轴的方向指定,与所在管段的方向一致,计算方法参照式(2)、式(3)。注意对于消防栓等固定垂直于地面的附属物,在计算时Z轴方向取(0,0,1)。

1.3 PBR材质渲染

PBR是基于物理渲染的材质系统,通过计算光线与物体表面的交互状态,实现模拟真实世界画面。

为使建模结果更具表现力,本文使用PBR材质系统为模型设定材质。根据不同类型管线的材质,指定对应的漫反射颜色、金属度贴图和粗糙度贴图,构造最接近现实的PBR材质。如图7所示,采用PBR材质系统的标准管段模型如图7(a)所示,相较于不采用PBR材质系统的图7(b),在反射细节上有较大提升,表现效果更为美观逼真。

图7 标准管段模型渲染效果对比

1.4 LOD瓦片

LOD技术指多层次细节加载,根据物体在渲染时所处的位置和重要程度为每个物体分配渲染资源,决定该物体是否渲染或以何种精细度渲染。

3DTiles规范中的瓦片集合可用于实现LOD技术,集合以多叉树的形式组织,本文在构建管线3DTiles时选用四叉树。

如图8所示,从顶层瓦片开始,通过将边长二等分,每个瓦片都被划分为均匀的4块子瓦片,直到最底层瓦片结束,形成一颗完整的四叉树。

图8 四叉树瓦片划分

判断任一点在指定层级时所处瓦片的过程如下:

计算指定层级的瓦片大小:

(5)

其中,size为瓦片大小,level为瓦片层级。

所处瓦片的行号x和列号y由该点经纬度(lon,lat)分别除以瓦片大小后向上取整得到。

(6)

获得指定层级的瓦片行列号后,可计算瓦片中心点坐标,以此计算其父级瓦片的行列号,依此类推直到最上层瓦片,便可完成四叉树的构建。

管段数据可按其管段中心点判断所在瓦片,而管点数据则直接根据其地理位置判断。客户端在每一帧更新中会自上而下遍历瓦片树,在访问较高层级的瓦片时,若根据剔除规则判断为不可见,那么该瓦片所包含的较小层级瓦片便跳过遍历,由此减小遍历数量,加速渲染。

2 应用分析

为了验证本文方法,利用南京市某区域地下管网数据(供水管、雨水管和排水管)进行实验验证。整个实验区域内,管线总长为 60 387.632 km,弯头总数为 2 692 459个,井室总数为 2 828 470个,附属物总数为 1 406 066个,总计建模用时约1时10分,在Web平台渲染效率可达到100帧每秒,地下管网模型效果如图9所示。如表1所示,在不同距离的视点下,客户端的资源消耗都处在相对平稳的水平,其帧率表现也较为稳定。同时,支持3DTiles格式的客户端都可加载本文方法生成的管线模型,通用性良好。通过实验的验证和分析,有效验证了本文地下管网参数化建模技术流程的可行性,可有效提升地下管网建模效率及模型渲染效果。

表1 不同距离视点下客户端资源消耗情况

图9 地下管网建模效果

3 结 论

本文提出了一种用于城市地下管线三维可视化的建模方法,采用3DTiles作为三维模型格式标准,对地下管网数据进行参数化建模,为模型赋予符合物理规律的PBR材质,使表现效果更逼真。并通过实验验证了本文方法的可行性,可有效提升地下管网建模效率与渲染效果,可实际应用于城市规模的地下管网三维可视化项目建设,为三维管线信息系统的管线查询、管线分析等业务应用提供关键技术支撑。

猜你喜欢
管段瓦片实例
高温气冷堆核电站蒸汽发生器可拆管段拆装系统研究
管段沿线流量简化前后水头和流行时间差异性分析
一种基于主题时空价值的服务器端瓦片缓存算法
惯性
电站配管设计中的旋转角度分析及计算
某亚临界锅炉水冷壁泄漏失效分析
完形填空Ⅱ
完形填空Ⅰ
基于NoSQL数据库的瓦片地图服务