com.supermap.data
类 Animation
- java.lang.Object
-
- com.supermap.data.InternalHandle
-
- com.supermap.data.Animation
-
public class Animation extends com.supermap.data.InternalHandle
动画信息类。动画模型效果是目前三维技术的一个热点技术。三维游戏中虚拟人物的奔跑,坦克炮塔的旋转,都是动画模型的实际应用。动画模型技术的重要意义在于使得三维场景中的模型对象运动起来,人们可以通过动画获取对象的动态视觉效果。动画模型技术应用在GIS产品中,使得地理信息系统的视觉体验更加趋向于真实。通过对动画模型的观察,使用者能够获取模型各个部位的动作信息,而不再只是静态的图像。
SuperMap GIS 对动画模型技术的实现,主要体现在对第三方动画模型的支持上。通过将第三方的动画模型文件导入,用户可以控制动画的播放,从而实现在三维场景中展现出动态的对象。
下图中活动的坦克和直升飞机便是动画模型的实际应用效果。
示意图:
实际效果:
- 示范代码:
- 以下代码示范如何在场景中显示模型动画,并对其进行设置。假设已经有一个 KML 文件(FireTruck.kml),并且由建模师制作好了一个模型 firetruck.SGM,同时获取了场景控件
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)
更新动画时间。
-
-
-
方法详细资料
-
getCurrentTime
public double getCurrentTime()
返回当前动画所在的时间位置。单位为毫秒。- 返回:
- 当前动画所在的位置。单位为毫秒。
-
setCurrentTime
public void setCurrentTime(double currentTime)
设置当前动画所在的时间位置。单位为毫秒。- 参数:
currentTime
- 当前动画所在的时间位置。单位为毫秒。
-
getStartTime
public double getStartTime()
返回动画的起始时间位置。单位为毫秒。- 返回:
- 动画的起始时间位置。单位为毫秒。
-
setStartTime
public void setStartTime(double startTime)
设置动画的起始时间位置。单位为毫秒。- 参数:
startTime
- 动画的起始时间位置。单位为毫秒。
-
getEndTime
public double getEndTime()
返回动画的结束时间位置。单位为毫秒。- 返回:
- 动画的结束时间位置。单位为毫秒。
-
setEndTime
public void setEndTime(double endTime)
设置动画的结束时间位置。单位为毫秒。- 参数:
endTime
- 动画的结束时间位置。单位为毫秒。
-
getLength
public double getLength()
返回动画的时间长度,单位为毫秒。- 返回:
- 动画的时间长度,单位为毫秒。
-
setEnabled
public void setEnabled(boolean enabled)
设置当前动画是否可用。- 参数:
enabled
- 当前动画是否可用。
-
isEnabled
public boolean isEnabled()
返回当前动画是否可用。- 返回:
- 当前动画是否可用。
-
setAutoUpdated
public void setAutoUpdated(boolean autoUpdated)
设置动画播放方式是否为自动更新时间。- 参数:
autoUpdated
- 一个布尔值,表示是否自动更新时间,true 表示自动更新,false 表示不自动更新。
-
isAutoUpdated
public boolean isAutoUpdated()
返回动画播放方式是否为自动更新时间。- 返回:
- 一个布尔值,表示是否自动更新时间,true 表示自动更新,false 表示不自动更新。
-
getPlayMode
public PlayMode getPlayMode()
返回动画的播放模式。- 返回:
- 动画的播放模式。
-
setPlayMode
public void setPlayMode(PlayMode playMode)
设置动画的播放模式。- 参数:
playMode
- 动画的播放模式。
-
update
public void update(double offset)
更新动画时间。- 参数:
offset
- 动画在当前的位置上向前或向后移动的秒数。单位为毫秒。
-
-
Copyright © 2021–2024 SuperMap. All rights reserved.