cesium 加载glb 位置矫正
时间: 2023-09-12 16:07:09 浏览: 373
Cesium模型调整
如果您在使用Cesium加载glTF文件时发现模型位置不正确,可能是因为模型的原点不在模型几何中心或坐标系原点。为了矫正这个问题,您可以在加载模型时使用Cesium的Transform API。
例如,假设您的模型文件名为"model.glb",您可以使用以下代码加载并矫正位置:
```javascript
// 加载模型
const modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(position); // position为模型位置
const model = viewer.scene.primitives.add(Cesium.Model.fromGltf({
url : 'model.glb',
modelMatrix : modelMatrix,
scale: 1.0 // 可选,用于缩放模型
}));
// 矫正位置
model.readyPromise.then(function(model) {
const boundingSphere = model.boundingSphere;
const center = boundingSphere.center;
const radius = boundingSphere.radius;
const transform = Cesium.Transforms.eastNorthUpToFixedFrame(center);
transform[12] -= center.x;
transform[13] -= center.y;
transform[14] -= center.z;
model.modelMatrix = Cesium.Matrix4.multiply(modelMatrix, transform, new Cesium.Matrix4());
});
```
其中,modelMatrix表示模型的变换矩阵,可以使用Cesium的Transforms API生成;readyPromise是模型加载完成后的回调函数,其中可以获取到模型的boundingSphere属性,根据boundingSphere计算出模型中心点,然后计算出模型的变换矩阵transform,最后将modelMatrix和transform相乘得到新的变换矩阵,即可矫正模型位置。
阅读全文