温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Cesium怎么调整3dtile高度

发布时间:2021-08-25 10:11:21 来源:亿速云 阅读:347 作者:chen 栏目:大数据

这篇文章主要介绍“Cesium怎么调整3dtile高度”,在日常操作中,相信很多人在Cesium怎么调整3dtile高度问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Cesium怎么调整3dtile高度”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

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

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

具体实现的代码如下:

//定义viewer

var viewer = new Cesium.Viewer('cesiumContainer');

var tileset = new Cesium.Cesium3DTileset({

url: '3dtile在线地址',

show: true

});

       //加载3dtile

viewer.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生成的过程中,完成高度的调整,没有转换过程,也能提高系统的性能。

到此,关于“Cesium怎么调整3dtile高度”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI