当我们转换得到3dtiles格式数据后,将数据添加到cesium中:
tileset = new Cesium.Cesium3DTileset({
url: "./tileset.json", //文件路径
});
viewer.scene.primitives.add(tileset);
模型可能出现以下不贴地的情况:
对于此类问题,解决办法参考如下:
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);
修改后,模型贴地显示如下(设置不同的偏移量可以获得不同高度的模型): 文章来源:https://www.toymoban.com/news/detail-516157.html
文章来源地址https://www.toymoban.com/news/detail-516157.html
到了这里,关于cesium中3dtiles贴地问题设置的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!