AnimationTool

new Cesium.AnimationTool(viewer, options)

Name Type Description
viewer Object 场景视图
options Object 附加选项
Name Type Default Description
toolType String 'routes' optional 工具类型,routes:动画漫游,point:绕点旋转
heading Number 90 optional 航向角(相机视角),绕Z轴旋转的弧度值。路径漫游时:跟随视角、第一视角、上帝视角下实时生效;绕视点旋转时:这个值是自增的,因此只有初始化时生效,不可实时修改
pitch Number 0 optional 俯仰角(相机视角),绕Y轴旋转的弧度值。路径漫游时:跟随视角,第一视角实时生效;绕视点旋转时:这个值可实时修改。
range Number 0 optional 相机距离,相机距离视点的距离,单位米。路径漫游时:跟随视角,上帝视角实时生效
distance Number 0 optional 绕点旋转时,相机定位点的平移距离(沿着相机视角的相反方向),米。绕视点旋转时,这个值可实时修改。不能为空或者是0。
duration Number 8 optional 绕点旋转时,动画持续时间
moveToStop Number true optional 绕点旋转时,移动鼠标,停止旋转。true激活该特性,false,不激活该特性。
animationType Number 2 optional 0:一般场景,不操作相机;1:跟随;2:锁定第一视角;3:上帝视角
isLoop Boolean false optional 是否循环
showPath Boolean false optional 是否显示路径 (默认不显示路径)
positions Array optional 漫游路径点 初始化可以不设置 但一定要在开始前设置好
speed Number 1 optional 漫游速度或者绕点旋转速度,默认1m/s(1米/秒)或1度/秒 特别提醒(漫游场景范围很大的时候,这个一定要设置大,比如飞机可能就是真实的几千米每秒 如果不按真实设置,会导致内部时间点插值过密,造成卡顿)。
speedupFactor Number 1 optional 加速因子(加速倍数) 默认为1
exHeight Number 2 optional 附加高程
showInfo Boolean false optional 是否显示提示信息
modelUrl Object optional 模型路径 默认为空不显示
model Object optional 动画漫游中的模型对象参数,详见ModelGraphics
complete function 完成回调 完成后的回调函数
interpolationAlgorithm Object LagrangePolynomialApproximation optional 插值算法 默认拉格朗日 还有线性插值 Cesium.LinearApproximation(埃尔米特插值插值)Cesium.HermitePolynomialApproximation
isProcessCorner Boolean false optional 是否需要将较大转弯点处理为圆弧
maxAngle Number 150.0 optional 设置判断为转弯点的角度的最大值,不超过150的转角会被执行插值,处理为圆弧
curveStep Number 0.05 optional 转弯处往圆弧曲线上插值点的步长,点个数=1/curveStep
headingTargetPosition Number 0.0 optional 动态可视域目标点绕Z轴旋转,角度制
pitchTargetPosition Number 0.0 optional 动态可视域目标点绕Y轴旋转,角度制
rollTargetPosition Number 0.0 optional 动态可视域目标点绕X轴旋转,角度制
rangeTargetPosition Number 1.0 optional 视点与目标点距离按照倍数增加
isAddScanEffect Boolean false optional 是否挂载动态扫描特效
scanEffect Object optional 扫描特效实例,可以是动态圆,也可以是雷达扫描
isGetRealHeight Boolean false optional 是否获取路径点的真实高程
speedArray Array [this._speed] optional 速度不同时,各个路径点的对应速度
timeArray Array [] optional 路径点与时间相对应
accelerationArray Array [0] optional 加速度数组
callback function optional 运动过程中的回调函数
Name Type Description
result Object optional 回调结果:对应的运动动画信息
Name Type Description
routePointIndex Number optional 模型在路径点哪个分段,是当前分段的第一个点的索引
currenPositionStatus Number optional 当前点状态:0代表点在线上,1代表点在拐点处
position Cartesian3 optional 实时位置
startTime JulianDate optional 运动开始时间
currentTime JulianDate optional 当前时间
stopTime JulianDate optional 运动结束时间
remainDistance Number optional 剩余运动距离
totalDistance Number optional 运动总距离
speed Number optional 运动速度
isSetModelPosture Boolean true optional 是否设置模型运动姿态,保持朝向与运动方向一致,默认为true,设置为false时,模型姿态不改变
startTime Object optional Date类型,用于设置漫游开始时间
startPositionIndex Number 0 optional Number类型,默认是0,是开始路径漫游跳转点的上一个路径点的索引,和offestStartPositionDistance一起用于判断漫游的具体跳转点位
offsetStartPositionDistance Number 0 optional Number类型,默认是0,是距离startPositionIndex索引点的距离,单位是meter
modelHeading Number 0 optional Number类型,默认是0,模型的方位角
modelPitch Number 0 optional Number类型,默认是0,模型的俯仰角
modelRoll Number 0 optional Number类型,默认是0,模型的倾斜角
firstPersonCameraFocusOffset Object {offsetX: 0,offsetY: 0,offsetZ: 0} optional 第一人称视角下,相机焦点的偏移值。向前:offsetX;向左:offsetY;向上:offsetZ
modelOffset Object {offsetX: 0,offsetY: 0,offsetZ: 0} optional 模型相对自身的平移值,单位为米。向前:offsetX;向左:offsetY;向上:offsetZ
Author:
  • 韩彦生 & zlf & 夏琨
Example:
//绕点旋转
 var options = {
                    //类型指定为point
                    toolType: 'point',
                    //绕Z轴旋转角度,弧度值,初始化时有效。
                    heading: 0,
                    //绕Y轴旋转,弧度值,可通过纬度值转化,可实时更改。
                    pitch: 0,
                    //持续时间,秒。注意duration属性只有在isLoop为false时生效
                    duration: 20,
                    //旋转速度,度/秒。注意speed属性只有在isLoop为true时生效
                    speed: 10,
                    //是否循环动画,true:一直循环,false:到结束时间就停止动画
                    isLoop: true,
                    //旋转中心点,设置为球心
                    positions: new Cesium.Cartesian3(0, 0, 0),
                    //绕点旋转时,相机定位点的平移距离(沿着相机视角的相反方向)
                    distance: 41000000,
                    //绕点旋转动画完成事件
                    complete: function () {
                        alert('完毕');
                    },
                    //绕点旋转时,每一帧的回调函数,暂停同时暂停返回结果
                    callback: function (result) {
                        console.log('heading:' + result.heading + ',pitch:' + result.pitch);
                    },
                }
 // 示例一:绕球心旋转
 options.positions = new Cesium.Cartesian3(0, 0, 0);
 var rotatePointTool = new Cesium.AnimationTool(viewer, options);
 // 示例二:绕某一点旋转
 options.positions = Cesium.Cartesian3.fromDegrees(108.96044700955785, 34.21796237686321, 60.99772929683282);
 var rotatePointTool = new Cesium.AnimationTool(viewer, options);
 // 示例三:持续旋转,不停止
 options.isLoop = true;
 // 请设置速度,否则就是默认值1度/秒
 options.speed = 10;
 var rotatePointTool = new Cesium.AnimationTool(viewer, options);
 //开始
 rotatePointTool.start();
 //暂停
 rotatePointTool.pause();
 //结束
 rotatePointTool.stop();
//动画漫游
         var options = {
            //类型指定为routes
            toolType: 'routes',
            //航向角(相机视角),绕Z轴旋转,在第一人称视角,上帝视角下支持设置
            heading: 0,
            //俯仰角(相机视角),绕Y轴旋转。在第一人称视角支持设置
            pitch: 0,
            //距离:单位是米,在第一人称视角,上帝视角下支持设置
            range:100000,
            //漫游路径点,初始化可以不设置 但一定要在开始前设置好
            positions:[],
            // 视角类型 0:一般场景,不操作相机;1:跟随;2:锁定第一视角;3:上帝视角
            animationType:1,
            //回调函数传回一组动画信息
            callback: function (result) {
                        console.log('动画信息:' + result);
                        //需要在模型运动到点索引为1,和点索引为5的分段改变姿态
                        if (result.routePointIndex===1||result.routePointIndex===5 ) {
                             animation.modelHeading = 45;
                             animation.modelPitch = 45;
                             animation.modelRoll = 45;
                         } else {
                             //其他分段还原姿态默认值
                             animation.modelHeading = 0;
                             animation.modelPitch = 0;
                             animation.modelRoll = 0;
                         }
                    },
            //是否设置模型运动姿态,保持朝向与运动方向一致,默认为true,设置为false时,模型姿态不改变
            //isSetModelPosture:true,
            //是否循环动画,true:一直循环,false:到结束时间就停止动画
            isLoop: false,
            //加速因子
            speedupFactor: 5,
            //模型路径 默认为空不显示
            modelUrl: '../../SampleData/models/CesiumMan/Cesium_Man.glb',
            model: {
                //放大比例
                scale: 10000,
                //固定大小设为0
                minimumPixelSize : 0
            },
            //开始路径漫游跳转点的上一个路径点的索引
            startPositionIndex:0,
            //距离索引点的距离,单位是meter
            offsetStartPositionDistance:0,
            //是否需要将较大转弯点处理为圆弧
            //isProcessCorner: false,

            //设置判断为转弯点的角度的最大值,不超过150的转角会被执行插值,处理为圆弧
            //maxAngle: 150.0,
            //转弯处往圆弧曲线上插值点的步长,点个数=1/curveStep
            //curveStep: 0.01,
            complete: function () {
                alert('完毕');
            }
        }
 // 示例:路径漫游
 options.positions = Cesium.Cartesian3.fromDegreesArray([
                117.213063, 31.812956, 117.213162, 31.812389, 117.212929, 31.812056, 117.213275, 31.811582,
                117.21348, 31.811513, 117.214141, 31.811682, 117.21497, 31.811691, 117.216318, 31.811454
            ]);
 var animation = new Cesium.AnimationTool(viewer, options);
//开始
 animation.start();
 //暂停
 //animation.pause();
 //结束
 //animation.stop();

Members

readonly animationModel : Number

动画模型

animationType : Number

动画漫游的类型

callback : function

回调函数,返回一组动画信息
Example:
callback: function (result) {
     console.log('到达站点' + result.index + ',站点坐标:' + result.position);
     console.log('当前点状态' + result.currenPositionStatus);
     console.log('实时位置' + result.position);
     console.log('运动开始时间' + result.startTime);
     console.log('当前时间' + result.currentTime);
     console.log('剩余运动距离' + result.remainDistance);
     console.log('运动总距离' + result.totalDistance);
     console.log('运动速度' + result.speed);
 }

deprecated disFactor : Number

用于判断当前点是否到达路径点

Deprecated: 在16.7.2版本中移除, 请使用AnimationTool#callback替代

偏移距离 (单位米)
附加高程

firstPersonCameraFocusOffset : Object

第一人称视角下,相机焦点的偏移值。向前:offsetX;向左:offsetX;向上:offsetZ

deprecated followSwitchMouseEvent : Boolean

布尔类型,默认为false,切换跟随视角下的鼠标点击事件

Deprecated: 在16.7.2版本中移除, 用户需要自定义鼠标控制逻辑,可在应用层参考screenSpaceCameraController鼠标事件设置

readonly followViewCameraHPR : Object

跟随视角下,相机的初始heading,pitch,range
航向角 (单位弧度)

headingTargetPosition : Number

根据Z轴旋转

isAddViewshedAnalysis : Boolean

是否挂载动态可视域

deprecated isGetPositionNow : Boolean

是否获取当前点坐标,默认为false,为true时,需配合返回当前点坐标的回调函数一起使用

Deprecated: 在16.7.2版本中移除, 请使用AnimationTool#callback替代

是否循环

isSetModelPosture : Boolean

是否设置模型运动姿态,保持朝向与运动方向一致

deprecated isShowPath : Boolean

是否显示漫游路径,计划废弃,请使用 AnimationTool#showPath 来控制漫游路径的显隐

Deprecated: true

modelHeading : Number

模型的方位角

modelOffset : Object

模型相对自身的平移值,单位为米。向前:offsetX;向左:offsetY;向上:offsetZ

modelPitch : Number

模型的俯仰角
模型的倾斜角

offsetStartPositionDistance : Number

距离startPositionIndex索引点在当前分段线上的距离,单位是meter

deprecated onPositionTag : Boolean

是否执行回调函数的功能,默认为false不执行

Deprecated: 在16.7.2版本中移除, 请使用AnimationTool#callback替代

控制动画的暂停
俯仰角 (单位弧度)

pitchTargetPosition : Number

根据Y轴旋转
坐标点
距离 (单位米)

rangeTargetPosition : Number

可视域视点到目标点视距增加倍数

rollTargetPosition : Number

根据X轴旋转

scanEffect : Object

扫描特效实例
是否显示提示信息
是否显示漫游路径
漫游速度
用于变速漫游中,设定各个点的速度

speedupFactor : Number

快进(设置倍数)

startPositionIndex : Number

用于记录开始路径漫游跳转点的上一个路径点的索引
用于变速漫游中,设定各个点通过的时间数组,时间使用Date()对象

viewshedAnalysis : Object

可视域实例

Methods

开始
Returns:
True
结束