gpt4 book ai didi

cesium - 如何在 Cesium 中正确使用 unitQuaternion czml 属性

转载 作者:行者123 更新时间:2023-12-04 17:49:16 26 4
gpt4 key购买 nike

我使用 Cesium 的 gltf 分支,我想显示飞机的 3d 模型。为此,我创建了加载并添加到数据源的 czmlDataSource。

问题是我无法弄清楚如何计算方向四元数以使平面在给定的经纬度处平行于地面,默认情况下向北(然后影响它们的航向,最终俯仰和滚转)。

这是我计算实际四元数的方法,但 3d 模型的方向不正确(我不知道如何更改航向、俯仰、滚转):

    var geoPosition = new Cesium.Cartographic(Cesium.Math.toRadians(inputPosition.lon), Cesium.Math.toRadians(inputPosition.lat), inputPosition.alt);
var cartesianPosition = Cesium.Ellipsoid.WGS84.cartographicToCartesian(geoPosition);

var euler = [cartesianPosition.x, cartesianPosition.y, cartesianPosition.z];
var qx = Cesium.Quaternion.fromAxisAngle(Cesium.Cartesian3.UNIT_X, euler[0]);
var qy = Cesium.Quaternion.fromAxisAngle(Cesium.Cartesian3.UNIT_Y, euler[1]);
var qz = Cesium.Quaternion.fromAxisAngle(Cesium.Cartesian3.UNIT_Z, euler[2]);
var qt = Cesium.Quaternion.multiply(qz, qy);
var q = Cesium.Quaternion.multiply(qt, qx);
Cesium.Quaternion.normalize(q, q);

var czmlSrc = [{
"orientation": {
"epoch": "2012-08-04T16:00:00Z",
"interpolationAlgorithm": "LINEAR",
"interpolationDegree": 1,
"unitQuaternion": [0, q.x,q.y,q.z,q.w,
3600, q.x,q.y,q.z,q.w]
}
}];

最佳答案

与 Cesium 的约定相比,CZML 目前具有“向后”的方向。因此,如果您正在使用 CZML,您实际上需要方向的共轭。我们计划在几个月内在主要的 CZML 更新中修复此问题,但不想使用当前格式破坏所有现有文档。当我们进行更新时,计划是尝试以向后兼容的方式进行更新,因此现有的 CZML 仍然可以工作。

关于cesium - 如何在 Cesium 中正确使用 unitQuaternion czml 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21338709/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com