Cesium获取模型姿态的方法

想要获取Cesium中的模型姿态,首先需要获取模型的旋转矩阵。

模型矩阵的获取方式如下:

glb/gltf类型的模型,模型矩阵为模型对象的modelMatrix字段。

3DTileset类型的模型,模型矩阵为模型对象的tileset.root.transform字段,如果该字段为单位阵,则使用tileset._initialClippingPlanesOriginMatrix字段,该字段与3DTiles包围球中心的东北天坐标相等。

模型缩放比例:

1
var scale= Cesium.Matrix4.getScale( modelMatrix, new Cesium.Cartesian3() );

模型位置:

1
var position = Cesium.Matrix4.getTranslation( modelMatrix, new Cesium.Cartesian3() );

模型欧拉角:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var m1 = Cesium.Transforms.eastNorthUpToFixedFrame(
Cesium.Matrix4.getTranslation( modelMatrix, new Cesium.Cartesian3()),
Cesium.Ellipsoid.WGS84,
new Cesium.Matrix4(),
);
var m3 = Cesium.Matrix4.multiply(
Cesium.Matrix4.inverse(m1, new Cesium.Matrix4()),
modelMatrix,
new Cesium.Matrix4(),
);
var mat3 = Cesium.Matrix4.getRotation(m3, new Cesium.Matrix3());
var q = Cesium.Quaternion.fromRotationMatrix(mat3);
var hpr = Cesium.HeadingPitchRoll.fromQuaternion(q);

// 获取模型的heading、pitch、roll
var heading = Cesium.Math.toDegrees(hpr.heading);
var pitch = Cesium.Math.toDegrees(hpr.pitch);
var roll = Cesium.Math.toDegrees(hpr.roll);

Cesium获取模型姿态的方法
https://www.liaomz.top/2020/12/09/cesium-huo-qu-mo-xing-zi-tai-de-fang-fa/
作者
发布于
2020年12月9日
许可协议