在之前的博文中,已经讲过如何在Cesium中加载3dTiles格式的倾斜摄影模型(Cesium加载3D Tiles模型)。最近发现一个问题,新加载的倾斜摄影模型,都漂浮在空中,无法很好的贴合地面。分析了一些这个问题,可能是由于以下原因造成的:
- 飞行器的精度
- 倾斜摄影的参数问题
- Cesium自带的DEM精度问题
刚刚加载效果图
解决办法
最简单的解决方式就是,让3DTiles模型进行一定程度的平移变换。构建平移变换相关代码如下图所示:文章来源:https://www.toymoban.com/news/detail-532918.html
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);
});
修正之后加载效果
文章来源地址https://www.toymoban.com/news/detail-532918.html
到了这里,关于Cesium.js加载3dTiles格式倾斜摄模型影悬浮空中的解决办法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!