这半年CesiumLab的客户在稳定发展,在不断优化现有工具的同时。我们新开了一个产品线:电力杆塔线路建模工具。这个产品的源头是:年初我们接了一个小活,对照点云对电力杆塔进行3dmax建模,接这个活的初衷自然不是为了几万块的建模费用,而是说我想了解这个建模过程。大致是这样的:
1,对照杆塔图纸和现场照片对每种塔进行3dmax建模
2,把点云数据想各种办法导入到max中做为参考(为了这个我们甚至写了一个las转obj的工具)
3,导入已经做好的单个塔模型进行和点云位置对准
4,添加绝缘子
5,连接导线
6,经过模型切片 转到3dtiles 去使用
这个流程最大的几个弊端:
1,因为电力线路都很长, 点云都是投影坐标系,坐标值非常大,导入到max之后,建模人员很难去操作,尤其要精确对准点云,这个是个非常耗时耗力的过程。
2,产生的结果是max模型,这种模型我们在处理为切片的时候和普通模型没有太大区别,面临的问题也是相同的?
1)电力线, 在远视角观察会断断续续。
2)没有算法能够生成完美的杆塔模型的LOD,所以我们转3dtiles的时候,只能分块,而不能分级,这样承载的数据量一定有上限。
3) 数据在3dsmax里的效果和Cesium里依然会有差异,所以数据修改是非常麻烦的,随便改一点,上述流程都要走一遍,建模效率极度低。
结论总结起来五个字:费力不讨好,建模人力成本很高,但是却很难达到一个较好的效率和效果。
所以我们计划做一个电力杆塔线路编辑器的工具,来改变这种现状,大幅度降低建模成本的同时又能达到最佳的展示效果,几个目标:
1, 建模工具没有数据量上限,不受地理范围约束,哪怕一条线路,几千几万个塔,长达几百公里也需要能支撑
2,建模的结果一定充分结合 矢量和模型的显示优势,远视角使用矢量,近视角使用模型,过度要自然
3,建模精度没有约束,比如我们可以只做最简单示意塔 + 线路的粗模型,也可以做每个螺丝钉可见的精细模型
基于这些我们提出我们的基本技术点:
1,编辑要所见即所得,也就是建模工具依赖于我们最终的展示平台(cesium),除了所见即所得大幅提升建模效率的同时,最根本上这个工具的部署安装使用会非常简单,对于建模人员要求没那么高,那么建模的成本自然降低。
2,模型数据是全球分块,因为我们无法预知这条线路有多长,所以目标就是全球,从全球视角到第一人称地面视角我们都需要合理的分块
3,能够生成完美的LOD,这个就要求我们定义的塔 或者 绝缘子模型并不是一堆三级网的固定几何数据,而是完全可以通过参数来计算的,根据不同的误差得到不同精度的数据,并且依据一些设定条件来生成不同的材质效果。
照例贴几张效果:
经过大半年的努力,这个塔线工具基本成型,今天就介绍给大家
我们的建模流程如下:
1,基于图纸或者点云新建独立杆塔,组成一个杆塔库
2,基于一定规则拼装组织绝缘子三维模型,组成一个绝缘子库
3,以项目(或者叫工程)的方式来组织每条线路的塔线模型
下面详细介绍:
一,杆塔库
单个杆塔需要基于杆塔编辑器去编辑
经过设计,我们把杆塔参数化成三种基本对象:
1,辅助平面
辅助平面用来约束一个水平面,避免杆塔的扭曲,杆塔尺寸的变化可以通过调整辅助平面的长宽进行。如图中红色选中的,就是一个辅助平面。
2,节点
图中线的连接端点有个小球,这个就是节点,节点不能存在于任意位置,只有两种形式:
a) 辅助平面的四个角点,当辅助平面的参数调整之后,这些节点位置会更新
b) 通过开始节点、终止节点、延申距离来确定,当这些参数变化后,节点位置也要变化
3,连线
连线是任意两个节点的连接关系,当节点改变后,连线位置也要变化
通过这些参数可以确保杆塔结构之间有很强的依赖关系,辅助面参数一旦修改,其他对应的连线都会更新,就是牵一发动全身。也只有这样,我们才能做出比3dsmax这种通用建模工具更高效的建模速度来。
所以单个杆塔编辑器的操作就是下面几种了:
1,添加辅助面
在点云上点击 或者 输入参数来新建
2,添加点
在任意线上来点击(实际为了获取开始节点和终止节点,以及延申距离)
3,添加连线
为了进一步优化整个过程,我们全体开发人员自己试用了两周的杆塔建模工具,每天盯着屏幕“穿针引线”,最终我们提炼了几种比较便捷的操作方式,比如复制一条线上点,复制两条线的连接关系,自动交叉连线等,这些半自动化操作,会大大加速我们操作过程。
详细的操作过程见这个视频链接:点击这里查看视频
二,绝缘子库
绝缘子是通过绝缘子编辑器拼装出来的
对于绝缘子,我们自然是不可能全参数化了,所以这里用到一个LOD模型的概念(这种模型也是通过max创建的,具体规范请参考这篇文章 :https://www.jianshu.com/p/45badc1fac5c)
比如说上图的绝缘子,其实由三种LOD模型组成,最下面的是一个金具,中间是绝缘子片组成的绝缘子串,最上面还是一个金具。
创建一个绝缘子的流程如下:
1,添加金具
从LOD模型库里选择金具模型,设置所在位置
2,添加绝缘子串
绘制绝缘子串的线段位置,选择LOD模型库里的绝缘子瓦片,瓦片会沿着绝缘子串的线段排布。
3,添加导线挂接点
详细的操作如这个视频:点击这里查看视频
三,项目工程
上面两个都是库,也就是说所建的东西都是可复用的,到了本部分才是最终的可视化效果集中展示。我们设计的是项目化管理,每个项目包含若干条待建模的输电线路,每条线路下又包含了若干杆塔,若干条杆塔和杆塔之间的输电线路,以及连接杆塔和线路的绝缘子。
这里的操作流程如下:
1,新建项目
2,新建线路
3,选中线路,添加杆塔
从杆塔库里选择需要添加的杆塔,通过鼠标 或者 直接输入坐标值调整杆塔位置和朝向
摆放杆塔操作视频
4,选中杆塔,添加绝缘子
从绝缘子库里选择需要添加的绝缘子,通过鼠标 或者直接输入绝缘子相对杆塔的位置和朝向
摆放绝缘子操作视频
5,选中线路,添加电线
选择电线起始,终止绝缘子,输入线路参数,保存后生成线路
当整个过程完毕之后,可以直接在cesiumlab里查看我们的成果:
整个工具的操作流程点击这里查看完整视频
建模的成果数据示例页面
最后要说一点,我们只是把解决可视化问题当作第一目标,并不是一上来就要做一个符合电力专业标准规范的杆塔线路设计软件(虽然我们也买了上百块的专业书籍),如果您有任意的意见和建议,请一定反馈给我们。