cesium获取模型实时坐标_如何在Cesium中计算动目标姿态

本文介绍了在Cesium中如何计算和实现动目标如飞机的实时姿态。通过理解球心坐标系和模型坐标系,结合Cesium的坐标转换接口,如`eastNorthUpToFixedFrame`,以及利用旋转轴和旋转角度计算四元数和姿态角,从而实现模型的动态运动和正确朝向。详细解析了从目标位置计算到目标姿态计算的过程,提供关键代码帮助理解姿态计算逻辑。
摘要由CSDN通过智能技术生成

背景:在三维场景中,我们经常会需要模拟一些运动的目标,比如行驶中的汽车,飞行中的飞机,在轨运行的卫星等等。我们可以动态的设置模型或者图元的位置来使其运动起来,单纯的位置移动比较容易实现,但运动姿态(例如汽车的朝向)则需要我们进行计算,相对于位置来说姿态的计算会复杂一些。

本文通过坐标系介绍、目标位置计算、目标姿态计算三部分循序渐进地讲解了如何实现三维场景中动目标姿态的计算。

1.球心坐标系、模型坐标系

球心坐标系是指坐标原点与地心重合,Z轴垂直赤道面,X轴朝向(东经0°,北纬0°),Y轴朝向(东经90°,北纬0°),如图1所示。

2572c0c0330db11e30fbb8f764ac53fc.png

图1 Cesium球心坐标系

模型坐标系是建模软件在建模过程中或者在程序构建图元时使用的坐标系,为了方便建模,一般球状物体的原点都在物体中心,游戏角色模型原点一般位于脚部。

在三维场景中直接加载模型,模型中心点会与地心重合,也就是说模型坐标(0,0,0)会和球心坐标(0,0,0)点重合。如果我们想要把模型放置到地球表面某一点,就需要经过一个矩阵转换把模型的顶点坐标转换到地球表面。

当然你也可以在建模的时候就把模型建立在目标位置的世界坐标上比如(100,0,0),但是当你想让模型绕中心点旋转的时候,模型会沿着世界坐标的原点作半径为100的圆周运动,如果要达到正确的效果,你就需要先把模型移到世界原点,旋转,然后再移回来,操作起来会比较麻烦。

2. 目标位置计算

接下来再了解一下,Cesium中是如何把模型放置到地球表面的指定位置处。我们一般都是使用的地理坐标经度、纬度、高度,比如(108.0,30.0,1000.0),通过Cesium.Cartesian3.fromDegrees(108,30,1000)转换得到其对应的世界坐标,然后通过一个四维矩阵对模型进行平移和旋转,Cesium中提供了多种世界坐标转换为矩阵的接口,不同的转换接口,放置到地球表面模型的姿态角度不同。如图2所示,转换到地球高空某位置的飞机会有各种姿态,其中我们经常用到的“东北天”坐标是中间ClassicalEastNorthUp local Frame所示效果,模型坐标系的X轴朝向正东方向,Y轴朝向正北方向,Z轴朝向垂直于地球表面向上方向。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值