ориентация и вращение 3D модели цезия - PullRequest
0 голосов
/ 15 января 2019

Я новичок в Цезии, и у меня есть 3D-модель, я отображаю ее как показано ниже:

this.model = scene.primitives.add(Cesium.Model.fromGltf({
  url : './assets/cesium/myPlane.glb',
  modelMatrix : modelMatrix,
  minimumPixelSize : 128,
  maximumScale : 20000
}));
  1. как мне изменить «прокатку» модели (она отображается вверх ногами)
  2. как мне изменить его "голову", чтобы она была направлена ​​наружу в направлении движения moovingf (если плоскость сместится влево, то ее голова изменит угол влево)

Спасибо
Ларри

1 Ответ

0 голосов
/ 30 января 2019

Вы можете загрузить свою модель в формате 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;
        }

    });
...