铯3D模型定向和滚动

时间:2019-01-15 14:22:33

标签: 3d cesium

我是Cesium的新手,我有3D模型,如下所示:

this.model = scene.primitives.add(Cesium.Model.fromGltf({
  url : './assets/cesium/myPlane.glb',
  modelMatrix : modelMatrix,
  minimumPixelSize : 128,
  maximumScale : 20000
}));
  1. 如何更改模型的“滚动”(倒置显示)
  2. 如何将其“头”更改为与moovingf方向相同的方向(如果平面向左移动,则其头将向左改变角度)

谢谢,
拉里

2 个答案:

答案 0 :(得分:0)

您可以将模型加载为czml并设置方向。参见下文:

    var position = Cesium.Cartesian3.fromDegrees(<lon>, <lat>, <alt>);
    var pheading = Cesium.Math.toRadians(<heading>);
    var pitch = Cesium.Math.toRadians(0);
    var roll = Cesium.Math.toRadians(0);
    var hpr = new Cesium.HeadingPitchRoll(pheading, pitch, roll);
    var orientation = new Cesium.ConstantProperty(Cesium.Transforms.headingPitchRollQuaternion(position, hpr));


    var czml = [
        {
            "id": "document",
            "name": "CZML Model",
            "version": "1.0"

        }, {
            "id": id,
            "name": id,

            "position": {
                "cartographicDegrees": [
                    lon, lat, alt
                ]
            },

            "model": {

                "gltf": <gltfpath>



            }

        }
    ];

    var promise = olcesium.nc.viewer.dataSources.add(Cesium.CzmlDataSource.load(czml));
    promise.orientation = orientation;
    promise.then(function (dataSource) {

        for (var i = 0; i < dataSource.entities.values.length; i++) {
            dataSource.entities.values[i].orientation = orientation;
        }

    });

答案 1 :(得分:0)

这听起来像您的模型未与Cesium的轴约定正确对齐。您有两种选择:

  1. 在建模软件(blender,3ds max等)中重新定向模型。
  2. 引入一个中间坐标系,以重新定位应用程序中的模型(不过需要一些数学运算)。

我的建议是尝试第一种方法,如果该方法不起作用或无法修改模型,请尝试第二种方法。

提示:为了在Cesium中调试模型,inspector确实很有帮助,因为您可以显示参考框架。 sandbox是您的模型的外观:

inspector: model axes

希望有帮助!