背景:在没有cesiumlab官方授权的情况下,对于fbx,obj等模型无法使用坐标系和偏移量进行切片处理 ,此时用cesiumlab的默认参数生产的切片模型数据,默认位置在北京天安门上空,与实际位置有距离很大偏差,不能只通过平移矩阵移动模型到实际位置,还需要对应的旋转矩阵。
目的:通过cesium的内置函数,将模型移动到实际位置。
思路顺序:
-
将模型平移回世界坐标系原点(地心)
-
将局部坐标Z轴调整到与世界坐标Z轴重合
-
将局部坐标X,Y轴调整到与世界坐标X,Y轴重合
-
将目标位置的eastNorthUp局部坐标系平移回世界坐标系原点(地心)
-
旋转物体坐标系与目标坐标系重合
-
平移到目标位置,即为最终变换矩阵
具体思路细节可参考csdn文章: Cesium加载3Dtiles模型的平移和旋转
矩阵很抽象,想要了解矩阵相关的详细信息,推荐观看书籍《3D数学基础:图形与游戏开发(第一版)》,网络上很多pdf,注意,请看第一版,不要看第二版,第二版可能是机翻,很多语句难以理解。
function moveModel(tileset,longitude,latitude,height) {
//计算世界坐标系中的目标位置offset
var cartographic = new Cesium.Cartographic.fromCartesian(
tileset.boundingSphere.center
);
var offset = Cesium.Cartesian3.fr