700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Cesium开发:调整3dtile高度

Cesium开发:调整3dtile高度

时间:2019-06-22 00:50:30

相关推荐

Cesium开发:调整3dtile高度

在3dtile的制作过程中,如果原始的数据中,模型数据存在高程,在生成的3dtile中也会存在高程的信息,这时就需要在系统中,底图数据的高程也要存在,这样才能和3dtile进行匹配,不过,Cesium的开发文档中,也提供一个在数据加载完成后,动态调整3dtile高度的方式,有一定限制是整体调整3dtile的高度,即改变3dtile的整体高程差。

API文档参照:/Cesium/Build/Documentation/Cesium3DTileset.html

具体实现的代码如下:

//定义viewervar viewer = new Cesium.Viewer('cesiumContainer');var tileset = new Cesium.Cesium3DTileset({url: '3dtile在线地址',show: true});//加载3dtileviewer.scene.primitives.add(tileset);//3dtile加载完成后执行tileset.readyPromise.then(function(tileset) {// 定位到3dtiles的位置viewer.camera.viewBoundingSphere(tileset.boundingSphere, new Cesium.HeadingPitchRange(0, -20, 0));//高度偏差,向上是正数,向下是负数var heightOffset = -1063.0;//计算tileset的绑定范围var boundingSphere = tileset.boundingSphere;//计算中心点位置var cartographic = Cesium.Cartographic.fromCartesian(boundingSphere.center);//计算中心点位置的地表坐标var surface = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, 0.0);//偏移后的坐标var offset = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, heightOffset);var translation = Cesium.Cartesian3.subtract(offset, surface, new Cesium.Cartesian3());//tileset.modelMatrix转换tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation);});

按照真实数据测试了一下效果,转换后高度是变化了,但是拉到太近,模型会显示不出来,可以根据实际测试一下效果,还是建议在3dtile生成的过程中,完成高度的调整,没有转换过程,也能提高系统的性能。

关注公众号,多多支持!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。