Cesium.js加载3dTiles格式倾斜摄模型影悬浮空中的解决办法

在之前的博文中,已经讲过如何在Cesium中加载3dTiles格式的倾斜摄影模型(Cesium加载3D Tiles模型)。最近发现一个问题,新加载的倾斜摄影模型,都漂浮在空中,无法很好的贴合地面。分析了一些这个问题,可能是由于以下原因造成的:

  1. 飞行器的精度
  2. 倾斜摄影的参数问题
  3. Cesium自带的DEM精度问题

刚刚加载效果图

问题效果

解决办法

最简单的解决方式就是,让3DTiles模型进行一定程度的平移变换。构建平移变换相关代码如下图所示:

    let tileSetModel = new Cesium.Cesium3DTileset({
      url: "http://localhost:9003/model/tkBZRQBVc/tileset.json",
      preferLeaves: true,
      //【重要】内存建议显存大小的50%左右,内存分配变小有利于倾斜摄影数据回收,提升性能体验
      maximumMemoryUsage: 1500,
      cullWithChildrenBounds: true,
      skipLevelOfDetail: true,
    });


    tileSetModel.readyPromise.then(tileset => {
      console.log("加载完成")
      //
      let surface = Cesium.Cartesian3.fromRadians(0, 0, 0);
      //模型改变的位置
      let offset = Cesium.Cartesian3.fromRadians(0, 0, 193);
      //定义模型的改变状态
      let translation = Cesium.Cartesian3.subtract(offset, surface, new Cesium.Cartesian3());

      tileset.modelMatrix= Cesium.Matrix4.fromTranslation(translation)
      viewer.scene.primitives.add(tileset);
      viewer.zoomTo(tileset, new Cesium.HeadingPitchRange(0.5, -0.2, tileset.boundingSphere.radius * 1.0));

    }).catch(function (error) {
      console.log(error);
    });

修正之后加载效果

修正之后效果

评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GIS开发者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值