public class Animation
extends com.supermap.data.InternalHandle
动画模型效果是目前三维技术的一个热点技术。三维游戏中虚拟人物的奔跑,坦克炮塔的旋转,都是动画模型的实际应用。动画模型技术的重要意义在于使得三维场景中的模型对象运动起来,人们可以通过动画获取对象的动态视觉效果。动画模型技术应用在GIS产品中,使得地理信息系统的视觉体验更加趋向于真实。通过对动画模型的观察,使用者能够获取模型各个部位的动作信息,而不再只是静态的图像。
SuperMap GIS 对动画模型技术的实现,主要体现在对第三方动画模型的支持上。通过将第三方的动画模型文件导入,用户可以控制动画的播放,从而实现在三维场景中展现出动态的对象。
下图中活动的坦克和直升飞机便是动画模型的实际应用效果。
示意图:
实际效果:
sceneControl
。
public void animationModel(SceneControl sceneControl) { // 从场景控件获取三维场景 Scene scene = sceneControl.getScene(); // 向三维场景中添加kml文件,返回kml图层对象kmlLayer String kmlPath = "../../Models/FireTruck.kml"; Layer3D kmlLayer = scene.getLayers().add(kmlPath, Layer3DType.KML, true); // 新建GeoModel对象,并获得动画模型的路径 GeoModel geoModel = new GeoModel(); String modelPath = "../../Models/FireTruck/firetruck.SGM"; Point3D point = new Point3D(116, 39, 5); Boolean isSuccess = geoModel.fromFile(modelPath, point); if (isSuccess) { // 将模型添加进layer的features kmlLayer.getFeatures().add(geoModel); Feature3D feature = kmlLayer.getFeatures().findFeature(1, Feature3DSearchOption.ALLFEATURES); GeoModel animationModel = (GeoModel)feature.getGeometry(); // 获取Animation 对象 Animation animation = animationModel.getAnimation(); // 设置模型动画是否可用及动画模式 animation.setEnabled(true); animation.setPlayMode(PlayMode.ONCE); // 设置动画是否自动更新,及其更新时间 animation.setAutoUpdated(true); animation.update(50); // 设置动画的开始时间和结束时间,查看效果 animation.setStartTime(5000); animation.setEndTime(10000); } }
限定符和类型 | 方法和说明 |
---|---|
double |
getCurrentTime()
返回当前动画所在的时间位置。
|
double |
getEndTime()
返回动画的结束时间位置。
|
double |
getLength()
返回动画的时间长度,单位为毫秒。
|
PlayMode |
getPlayMode()
返回动画的播放模式。
|
double |
getStartTime()
返回动画的起始时间位置。
|
boolean |
isAutoUpdated()
返回动画播放方式是否为自动更新时间。
|
boolean |
isEnabled()
返回当前动画是否可用。
|
void |
setAutoUpdated(boolean autoUpdated)
设置动画播放方式是否为自动更新时间。
|
void |
setCurrentTime(double currentTime)
设置当前动画所在的时间位置。
|
void |
setEnabled(boolean enabled)
设置当前动画是否可用。
|
void |
setEndTime(double endTime)
设置动画的结束时间位置。
|
void |
setPlayMode(PlayMode playMode)
设置动画的播放模式。
|
void |
setStartTime(double startTime)
设置动画的起始时间位置。
|
void |
update(double offset)
更新动画时间。
|
public double getCurrentTime()
public void setCurrentTime(double currentTime)
currentTime
- 当前动画所在的时间位置。单位为毫秒。public double getStartTime()
public void setStartTime(double startTime)
startTime
- 动画的起始时间位置。单位为毫秒。public double getEndTime()
public void setEndTime(double endTime)
endTime
- 动画的结束时间位置。单位为毫秒。public double getLength()
public void setEnabled(boolean enabled)
enabled
- 当前动画是否可用。public boolean isEnabled()
public void setAutoUpdated(boolean autoUpdated)
autoUpdated
- 一个布尔值,表示是否自动更新时间,true 表示自动更新,false 表示不自动更新。public boolean isAutoUpdated()
public PlayMode getPlayMode()
public void setPlayMode(PlayMode playMode)
playMode
- 动画的播放模式。public void update(double offset)
offset
- 动画在当前的位置上向前或向后移动的秒数。单位为毫秒。Copyright © 2021–2024 SuperMap. All rights reserved.