cesium入门(七)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/liyangyang08/article/details/79831110

cesium入门(七)

可视空间数据

  • 3D贴图支持开源的几种模型还有CAD,BIM,点云,相机模型这几种模型的交互。
  • 有时候模型可能有偏差,这时我们可以自己修改每个点的模型值,最好是传入一个转换矩阵这样的会就会进行一次全新的变换
/ Adjust the tileset height so its not floating above terrain
var heightOffset = -32;
city.readyPromise.then(function(tileset) {
    // Position tileset
    var boundingSphere = tileset.boundingSphere;
    var cartographic = Cesium.Cartographic.fromCartesian(boundingSphere.center);
    var surface = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, 0.0);
    var offset = Cesium.Cartesian3.fromRadians(cartographic.longitude, cartographic.latitude, heightOffset);
    var translation = Cesium.Cartesian3.subtract(offset, surface, new Cesium.Cartesian3());
    tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation);
});

3D模型的加载

  • cesium支持新型的模型格式glTF,现在支持到2.0,同样也提供怎么通过私有的api把加载模型,以及其它格式到glTF的转换操作
var scene = viewer.scene; 
var modelMatrix = Cesium.Transforms.eastNorthUpToFixedFrame(
    Cesium.Cartesian3.fromDegrees(-75.62898254394531, 40.02804946899414, 0.0));
var model = scene.primitives.add(Cesium.Model.fromGltf({
    url : '../../SampleData/models/CesiumGround/Cesium_Ground.gltf',
    modelMatrix : modelMatrix,
    scale : 200.0
}));
  • 同样我可播放glTF的动画如下
Cesium.when(model.readyPromise).then(function(model) {
    model.activeAnimations.addAll({
        loop : Cesium.ModelAnimationLoop.REPEAT,
         speedup : 0.5,
    reverse : true
    });
});
  • 拾取不太懂
var handler = new Cesium.ScreenSpaceEventHandler(scene.canvas);
handler.setInputAction(
    function (movement) {
        var pick = scene.pick(movement.endPosition);
        if (Cesium.defined(pick) && Cesium.defined(pick.node) && Cesium.defined(pick.mesh)) {
            console.log('node: ' + pick.node.name + '. mesh: ' + pick.mesh.name);
        }
    },
    Cesium.ScreenSpaceEventType.MOUSE_MOVE
);

猜你喜欢

转载自blog.csdn.net/liyangyang08/article/details/79831110
今日推荐