美文网首页开源
cesium 动画添加

cesium 动画添加

作者: gardenlike2 | 来源:发表于2019-06-26 17:04 被阅读0次

这里所说的动画不是cesium的Animation或者是czml,是浏览器上的动画requestAnimationFrame。之前我在threejs中使用过该动画,当时以为是threejs所特有的,在其中充当将静态网页动起来的重要对象。最近在cesium效果编写中觉得根据Animation或者是czml去绘制动画非常麻烦。得与cesium的时间轴相结合,我只需要点击后发生动画就行了。当然各有各的优势,对于简单的动画来说js的动画无非更加简单以及移植性更加好。

废话不多说,来先看下requestAnimationFrame的特性吧。 requestAnimationFrame
其实就是说递归,自己不断根据某个属性的变化来不断调用自身,使某个属性不断发生变化。比如说我想让3dtiles不断上升,可以解析为某个时间段让该3dtiles发生平移变换。想让3dtiles平移可以修改他的变换矩阵来实现。 API接口

传入一个变换矩阵来达到变换的效果。

var distance =0;
                    function animation(){
                        requestAnimationFrame(function(){
                            var translation=Cesium.Cartesian3.fromArray([-distance, distance, distance]);
                            var m= Cesium.Matrix4.fromTranslation(translation);
                            distance = distance+0.2;
                            self.map.tilesets["parkinglot1"]._modelMatrix = m;
                            self.map.tilesets["parkinglot"]._modelMatrix = m;

                            if(distance<15){
                                animation();//不断调用自身
                            }else{
                                addEntrance(self);
                                queryParkingNumber();
                            };
                        })
                    }

这样就会有动画效果了,是不是非常简单,同时如果你想让该动画发生在cesium的flyto函数执行之后,可以调用其完成后的回调函数。我用的是camera的flyto,viewer的flyto我没发现其回调接口。只要将其放入complete后就行了,代码中我做过封装,原理是一样的。

self.map.flyTo({
                        destination: new Cesium.Cartesian3(-2506686.9441362103, 4658206.935923001, 3552200.4119844055),
                        orientation: {
                            heading: 3.8527405078650916,
                            pitch: -0.531606095336215,
                            roll: 6.280831687840141
                        },
                        duration: 3,
                    },function (){
                        animation();

                    });

写的不好之处,还请大家指出来。

相关文章

网友评论

    本文标题:cesium 动画添加

    本文链接:https://www.haomeiwen.com/subject/kooccctx.html