Censium加载3dtiles
前言
这篇文章已经写了很久了,很多的逻辑都不是很通顺,也是从一个小白找到了整个的思路。可以直接看看整个的3d建模、数据处理、模型生成和模型加载以及优化的过程。我就直接说步骤好了,我这里使用最简单的方式。就是从模型生成,到数据转换,然后使用Cesium进行加载整个的过程。
这篇文章,作为一篇探讨性的文章,目的不在于(当然,实际的目的在于解决问题)实现什么成功的案例,我想具体的编码和实际的案例,应该是在探索结束之后,进行总结的时候,进行统一的编写。那么先说一下需求,就是如何将cad管线生成三维模型,并加载到浏览器中。这其中有些技术点。
- cad图没有坐标系
- 如何对管线进行三维符号化,需要什么样的软件
- 能不能通过开源的Censium加载符合化后的三维管线
解决cad图没有坐标的问题,这个可以在arcmap进行地理校准操作解决。那么如何对经过校准的管线数据,或者shp文件中的三维管线进行三维符号化呢?
(1) 在我以往的工作经历中,接触过其他公司,通过将shp文件导入到skyline中,然后生成3dml,同时生成fly文件,使用skyline自带的二次开发接口将管线加载到了IE浏览器中,Skyline的javascript二次开发接口支持IE浏览器。其中会用到他们公司专门开发的shp进行三维化的建模工具,但据我了解,在最后生成3dml格式的时候,是通过shp文件,直接通过Skyline的Make 3dml菜单生成的,那我就有理由猜测,这个专用的建模工具,仅仅只是对shp进行了标准化转换,而没有实际的生成三维模型。
1.gltf和3dtiles的关系
2.Mars3D(含Cesium)数据及服务篇:城市建筑物转为3DTiles白膜格式
3.分享开源3dtiles生成工具 Osgb(OpenSceneGraph Binary) 转 3D-Tiles、Esri Shapefile 转 3D-Tiles、Fbx 转 3D-Tiles
4.用网格生成3D Tiles 3D Tiles Processing Engine 是一个引擎,它允许你将网格的多级数据集平铺到针对流式优化的 3D Tiles 瓦片集中。
5.3DTiles格式介绍——目录 1.概要;2.文件规范;3.Tile;4.TileSet。
6.3dTiles 数据规范详解[1] 介绍
(2) 第二个可以参考的就是ArcGIS,ArcGIS Pro对三维管线有一个整体的解决方案,根据参考资料,可以使用ArcGIS Pro对二维的图形文件生成三维图形,然后发布到Portal中进行查看。首先ArcGIS Pro是收费的,买一套就要好几十万,这个成本对一个小公司来说,真的是承担不起啊。万不得已,才会考虑这个平台吧。
(3) 第三个就是开源的Censium平台了。通过阅读和测试,我初步形成的思路是:通过第三方软件,将cad图进行三维化,然后导出censium支持的数据格式,然后进行加载,这里面最大的问题,其实是如果直接通过3dmax将cad中的线生成了3d模型,但是他的坐标信息同时也就失去了,这个时候在加载到censium中,该如何进行精确的定位呢?
1.Cesium原理篇:glTF
2.cesium模型加载-转换为gltf 加载fbx格式模型 (这篇文章主要是讲了使用多个工具,从fbx格式→dae格式→gltf格式→cesium加载gltf格式模型的过程)
(4) 倾斜三维摄影测量
这就触及到我的知识盲区了。
(5) 今天刚了解到了skyline可以发布sfs服务,提供Censium加载;还有可以使用CensiumLab软件进行三维的处理,等待时间进行深入的学习。
1.基于skyline的城市三维建模研究
2.skyline TerraBuilder 制作MPT方法与技巧(1)
3.三维地下管线系统(skyline)
4.Skyline学习系列 01 如何通过SFS发布shape文件
(6) arcgis关于三维可视化的相关技术
arcgis关于三维可视化,其实做的已经非常好了,但是要收费啊,这就比较尴尬了,查了一下价格,好像都不是明码标价的,看公司和esri关系吧,可能每个地方的报价不太一样,以前单位买的正版,花了多少钱,其实我也不太清除。
(7) 经过多日的探索与学习,我发现了一个神器CesiumLab,这个工具可以将3d max中的模型转换成Cesium支持的3d tiles模型,同时,也支持将3d max中的世界坐标系转换为地理坐标系,这样转换后的模型就可以轻松的加载到Cesium模型上了。关于这方面的学习,会另外写文章论述,敬请期待。文章写到这,其实已经超出了Cesium的范围了,可以说是网页中显示三维模型,所需要的知识与技术探索,比如使用three.js进行三维模型的加载等。
(2019年12月7日)
BIM模型相关的软件、公司与技术术语:bimface、轻量化、减面。
1.Three.js加载.obj模型文件
2.Cesium 学习番外——早期选择研究
3.[ol-cesium]二三维联动 | 基于2019肺炎疫情的数据可视化
4.WebGL管网展示(及TubeGeometry优化) 建立管路的方式主要两种:1.通过3DMax C4D Blender等建模工具进行建模。2.通过路径数据,程序生成三维管路。这里讲了如何使用TubeGeometry根据路径生成管道的方法。
1.打开3dmax新建模型
先随便点,找个现成的模型画上。
2.导出模型
将模型导出为.obj格式。
3.打开CesiumLab
打开CesiumLab软件,然后选择数据处理-> 人工模型切片,添加刚刚导出的obj格式的模型。
4.设置模型位置
选中要转换的模型,然后选择位置。
5.输入局部经纬度
这里我选择输入局部经纬度,为什么不选择EPSG定义一个4326(我的Cesium加载的是天地图),我尝试了,转换后的模型,加载到天地图,就不见了。暂时没有想明白这里面的原因,先用局部经纬度吧。
6.输出3d tiles
设置完成后,选择输出目录,输出3d tiles
7.Cesium加载3d tiles
代码其实挺简单的。
1 | // 加载3d模型 |
效果图:
1.Cesium 发布3dtiles模型(iis、tomcat)
2.Cesium编程入门(六)添加3D Tiles并调整位置贴地
3.《Cesium 基础知识点》- 3dtiles 模型跳转(两种方式) 1.有动画效果;2.直接跳转;
注意
这里有一点要注意的是,就是使用IIS当服务器的时候,要设置服务器的mime类型为以下的数据类型,否则IIS会拦截掉.b3dm,.cmpt等数据。
1 | .b3dm application/octet-stream |
8.加载优化
1 | new Cesium.Cesium3DTileset({ |
1.Cesium加载海量地下三维管线 主要优化思路是:将管线和管点合并到一个Command,管点模型使用repeat合并为一个Command,多个管点使用I3DM,如果瓦片还有I3DM则用cpmt合并减少瓦片网络请求
2.cesium-Web页面优化总结 1.让浏览器使用独显来渲染webGL数据。2.把cesium对象从vue中提取出来。3.修改一下Cesium3DTileset的配置,来优化加载,提升流畅度。
3.Cesium加载海量倾斜模型优化配置