矿井巷道三维自动建模,在矿山智能化领域是个很热门的话题,在知网上搜索,可以找到很多相关的文献,硕士论文、博士论文,我大概数了下,得有30来篇文章。

从业以来,一直从事三维可视化领域的工作,17年来浪潮,当时的领导在面试的时候,就给了一个面试任务,可视化一个巷道,模拟巷道的车辆运输。当然,当时这个任务完成得很粗糙。后来在浪潮陆续接触一些矿山项目,都有二三维巷道可视化的需求,解决方案大都是通过MAX等建模软件去人工建模。22年给部门矿山GIS一张图做技术选型的时候,无意中找到一款比较好的支持CAD数据的三维地图引擎-VJMap,这款产品一直使用到今天,支撑了无数个项目。 可以说,三维巷道自动化建模,是矿山智能化的刚需。

25年上半年,在公司摸鱼的时候,我下载了所有相关的文献,尝试着复现了论文中的算法,花了很长时间,有了一些成果,当时我还兴致勃勃发了一篇博客《一种矿山巷道参数化建模方法》记录了一下,当时只是实现了一种简单情况,当然后续工作也一直躺在我的todolist里面。

半年来,AI辅助编程工具的能力一直在进化,从帮助补全代码,到开发一些工具,到实现一些复杂项目,只要需求明确,基本没出过啥问题。今天看着todolist,想着让AI尝试一下,帮我解决一下三维巷道参数化建模的问题,也尝试一下用AI实现复杂算法的方法。
矿山的基础数据是CAD,地质部门、业务部门都是基于CAD进行技术和生产作业。
首先第一个需求是从CAD中提取中线,当然,之前我们一直是人工提取的,我们今天不讨论这个话题,看文章,已经有网友用AI实现了中心线的自动化提取了,《如何一键自动提取CAD图中的中心线(如墙体、道路、巷道中心线等》https://www.cnblogs.com/vjmap/p/18825706。
第二个需求就是从巷道中心线进行参数化建模了。 CAD如图所示:


文献的质量有高有低,VJmap的作者在网上有篇博文,介绍了他的实现思路,基本是参照西安科技大学张志华博士的半对称建模思路来实现的。张博士在这个方向,发表了很多成果,硕士论文《矿山测量数据处理与三维巷道建模方法研究_张志华》、博士论文《矿山巷道三维网络模型的构建及其路径分析方法研究_张志华》、专业书《矿山巷道三维网络模型构建及空间网络分析技术》。有了VJMap的成功验证,我就重点让AI帮助我分析张博士的论文了。
## 三、 核心算法流程
### 1. 数据预处理与交叉口检测
* **坐标转换**:将地理/局部坐标转换为 WebGL 场景空间坐标。
* **拓扑检测**:遍历所有巷道特征,识别共享相同坐标的测点,标记为“交叉口(Intersection)”。
### 2. 断面生成流程(对称建模法改进版)
对巷道中心线上的每一个测点 $P_i(x,y,z)$:
1. **方位角计算**:计算当前点到下一点的切线方向 $\alpha$。
2. **侧墙点计算**:
* 右帮底点:$P_R = P_i + r \cdot \vec{n}$,其中 $\vec{n}$ 为法向向量。
* 左帮底点:$P_L = P_i + l \cdot (-\vec{n})$。
3. **拱顶离散化(关键改进)**:
* 计算中心偏移量 $Offset = (l - r) / 2$(支持非对称巷道)。
* 将圆弧分为 $N$ 段,角度从 $\pi$ 递减至 $0$。
* 公式:$x_{pk} = x_i + (Offset + Radius \cdot \cos\theta) \cdot \cos(\alpha + \pi/2)$。
* 确保顶点顺序为:`右底 -> 右顶 -> 拱顶序列 -> 左顶 -> 左底`。
### 3. 三维网格构建
* **顶点索引映射**:将相邻两断面的对应顶点连接,构成四边形面片。
* **三角化**:将四边形划分为两个三角形,通过 `BufferGeometry` 存储。
* **法向量计算**:自动计算面法线,实现光滑的光照效果。
### 4. 交叉口平滑处理
* **中点插值**:在多条巷道汇合点,以交叉中心点为基准,向各分支延伸生成过渡截面。
* **扇形填充**:将各分支截面的边界点与交叉口中心点连接,形成闭合的汇合区域,消除裂缝。
