首页 > 建站教程 > WebGL教程 Threejs教程 >  cesium中3dtiles贴地问题设置正文

cesium中3dtiles贴地问题设置

cesium中3dtiles加载后悬浮空中:

tileset = new Cesium.Cesium3DTileset({ 
  url: "./tileset.json",  //文件路径
}); 
viewer.scene.primitives.add(tileset);


模型可能出现以下不贴地的情况:

cesium中3dtiles加载后悬浮空中


解决办法参考如下:

tileset.readyPromise.then(function(tileset) {
  //高度偏差,正数为向上偏,负数为向下偏,根据真实的模型位置不断进行调整
  var heightOffset = -210;
  //计算tileset的绑定范围
  var boundingSphere = tileset.boundingSphere;
  //计算中心点位置
  var cartographic = Cesium.Cartographic.fromCartesian(boundingSphere.center);
  //计算中心点位置坐标
  var surface = Cesium.Cartesian3.fromRadians(cartographic.longitude, 
  cartographic.latitude, 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);
}


模型定位:

viewer.zoomTo(tileset);


修改后模型贴地显示如下: 

cesium中3dtiles加载后悬浮空中


下一篇: 最后一页