SView Help Center
English (US)

动画

Author: sviewngts Last Updated: 2026-09-08 09:57

接口列表

接口名称 说明
初始化 初始化动画数据
播放 播放动画
暂停 暂停动画
继续播放 继续播放动画
设置进度 设置动画播放进度
切换步骤 切换动画步骤
设置速度 设置动画播放速度
上一步 切换到上一步骤动画
下一步 切换到下一步骤动画
循环播放 设置动画是否循环播放
自动漫游 设置动画是否自动漫游
退出动画 退出动画播放
动画监听 设置动画的事件监听

初始化动画数据

let animationPlayer = viewer.getAnimationPlayer();
//初始化动画仅需初始化一次即可
animationPlayer.getAnimation().then(() => {
   //解析成功后需初始化动画播放器
   animationPlayer.open();
}).catch(() => {
   //初始化动画数据失败
});

播放动画

//第一次播放动画需要在解析成功后并初始化动画播放器后调用
animationPlayer.playAll();
animationPlayer.setIsPlaying(true);
//若想从某个步骤播放,则调用如下方法
animationPlayer.play(stepId);
//若想从某个步骤播放到某个步骤,则调用如下方法
//参数为步骤的索引,例如仅想播放第一步,则start为0,end为1,
//若想播放完这些步骤后不再重头播放,则需要设置为不循环播放
animationPlayer.play(start,end);

暂停动画

animationPlayer.pause();
animationPlayer.setIsPlaying(false);

继续播放动画

animationPlayer.resume();
animationPlayer.setIsPlaying(true);

设置动画进度

//percent为整体进度,取值范围0-100
animationPlayer.setPercent(percent);
animationPlayer.resume();
animationPlayer.setIsPlaying(true);

切换动画步骤

//直接播放相应的步骤
animationPlayer.play(stepId);
animationPlayer.setIsPlaying(true);
//或者使用如下方法
//首先获取所有的动画任务列表
let animationProcessList = animationPlayer.getTaskList();
let step;
for(let i=0;i<animationProcessList.length;i++){
   let process = animationProcessList[i];
   let stepList = process.getStepList();
   for(let j=0;j<stepList.length;j++){
       step = stepList[j];
       break;
   }
}
//参数为AnimationStep
animationPlayer.setActiveTask(step);
animationPlayer.play();
animationPlayer.setIsPlaying(true);

设置动画播放速度

//播放速度,number类型,0-10之间(不包含)
animationPlayer.setSpeed(speed);

切换上一步动画

//当播放第一个步骤时,切换到上一步骤动画无效
animationPlayer.playPrevious();

切换下一步动画

//当前播放最后一个步骤时,切换到下一步骤,会根据是否循环播放决定是切换到第一个步骤还是无效
animationPlayer.playNext();

设置循环播放

//参数isLoop为boolean类型
animationPlayer.setLoop(isLoop);

设置自动漫游

//参数autoWalkCamera为boolean类型
animationPlayer.setAutoWalkCamera(autoWalkCamera);

退出动画

//退出所有动画
M3D.Animation.SimulationAnimationManager.getInstance().exitAll();
//重置动画播放器
animationPlayer.reset();
//清理动画播放监听,若不需要清理则不用执行
animationPlayer.clearTaskListeners();
//设置为不正在播放动画
animationPlayer.setIsPlaying(false);
//退出透视投影
scene.getCurrentViewPort().getCamera().setOrthographic(true);
//将当前步骤设置为-1
M3D.Animation.SimulationAnimationManager.getInstance().getAnimationStepManager()
   .getCurrentProcessManager().curProcessID = -1;
//执行复位命令
let commandManager = frame.getCommandsManager();
commandManager.execute('restore');