cesium中移动地球时,模型(3dtiles)感觉在飘着,会错位的解决办法

cesium中移动地球时,模型感觉在飘着,会错位的解决办法

先看下问题

加入一个白膜,移动视角,会感觉这个白膜不在固定的位置,飘忽不定
在这里插入图片描述

原因分析

这是由于在这个场景中添加了地形,白膜与地形相交了。

解决办法

  1. 如果给定的模型高度是高于地面的,则可以关闭地形
viewer.terrainProvider = new Cesium.EllipsoidTerrainProvider();
  1. 如果必须有地形,或者原始给定的3dtiels高度低于地面,则设置3dtiles高度高于地形
 tileset.readyPromise.then(function (tileset) {
   var heightOffset = 370.0;

   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 = Cesium.Matrix4.fromTranslation(translation);
 });

这里高度值heightOffset 需要获取该区域地形的高程值。

  1. 开启地形深度检测
viewer.scene.globe.depthTestAgainstTerrain = true;

这种方法比较简单,但是对性能有一定损耗。
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值