最近帮公司做点云的模型,之前一直做的是3dmax或者bim的,第一次弄,也遇到了一些问题,最终还是解决了。也感谢在这个过程中耐心帮我解疑的朋友。
处理工具:cesiumlab2。
数据格式:las。
数据处理步骤:
a)、打开cesiumlab,选择点云切片
b)、全选添加点云数据
c)、设置相关参数
设置epsg坐标系,由点云模型设计人员提供,并且设置最大级别。
注:此处最大级别的确定,可先转换其中一个las,看切到了多少级,找最大层级,如下(此处即选择18级):
d)、选择须绑定字段:
e)、设定缓存文件,当数据量过大时需设置:
f)、其他参数:
以上点云就处理好了,加载方式和普通的3dtiles相同。
下面我想通过点击点云的某个部件,获取部件的相关信息,开始我以为和3dmax bim转出来的3dtiles操作相同即可,后来发现差距很大,折磨了我两天。
首先看下属性获取的代码,无论对点云还是3dmax、bim,此处获取的代码是相同的:
下面分别看下pickedFeature的属性。
我们先看下3dmax bim转出的3dtiles的属性获取的结果:
从这里可以看到,这里的属性是 Cesium3DTileFeature对象。再看下它的相关部件属性信息:
从这里可以看到,是可以获取到部件属性的。
下面我们来看下点云的结果:
明显能看到这里返回的是两个对象,一个是Cesium3DTileset类型的,一个是PointCloud3DTileContent的。和上面的bim、3dmax的Cesium3DTileFeature类型是不一样的。
我查了下github以及google了一下,都没提供获取属性的方法。后来为了确认下,和cesiumlab官方的人也交流了一下,点云里为了提高渲染和转换的效率,一般是拾取不了属性的。当然点云的存储形式有两种,另外一种还是存储成batchTable的形式,就可以直接拾取了,但用cesiumlab转的是非batchTable存储,所以没法获取。
解决办法:点云反向建模,为模型绑定。