com.supermap.data
类 Animation

java.lang.Object
  继承者 com.supermap.data.Animation

public class Animation
extends java.lang.Object

动画信息类。

动画模型效果是目前三维技术的一个热点技术。三维游戏中虚拟人物的奔跑,坦克炮塔的旋转,都是动画模型的实际应用。动画模型技术的重要意义在于使得三维场景中的模型对象运动起来,人们可以通过动画获取对象的动态视觉效果。动画模型技术应用在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 value)
          设置动画播放方式是否为自动更新时间。
 void setCurrentTime(double value)
          设置当前动画所在的时间位置。
 void setEnabled(boolean value)
          设置当前动画是否可用。
 void setEndTime(double value)
          设置动画的结束时间位置。
 void setPlayMode(PlayMode playMode)
          设置动画的播放模式。
 void setStartTime(double value)
          设置动画的起始时间位置。
 void update(double offset)
          更新动画时间。
 
从类 java.lang.Object 继承的方法
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

方法详细信息

getCurrentTime

public double getCurrentTime()
返回当前动画所在的时间位置。单位为毫秒。

返回:
当前动画所在的位置。单位为毫秒。

setCurrentTime

public void setCurrentTime(double value)
设置当前动画所在的时间位置。单位为毫秒。

参数:
value - 当前动画所在的时间位置。单位为毫秒。

getStartTime

public double getStartTime()
返回动画的起始时间位置。单位为毫秒。

返回:
动画的起始时间位置。单位为毫秒。

setStartTime

public void setStartTime(double value)
设置动画的起始时间位置。单位为毫秒。

参数:
value - 动画的起始时间位置。单位为毫秒。

getEndTime

public double getEndTime()
返回动画的结束时间位置。单位为毫秒。

返回:
动画的结束时间位置。单位为毫秒。

setEndTime

public void setEndTime(double value)
设置动画的结束时间位置。单位为毫秒。

参数:
value - 动画的结束时间位置。单位为毫秒。

getLength

public double getLength()
返回动画的时间长度,单位为毫秒。

返回:
动画的时间长度,单位为毫秒。

isEnabled

public boolean isEnabled()
返回当前动画是否可用。

返回:
当前动画是否可用。

setEnabled

public void setEnabled(boolean value)
设置当前动画是否可用。

参数:
value - 当前动画是否可用。

getPlayMode

public PlayMode getPlayMode()
返回动画的播放模式。

返回:
动画的播放模式。

setPlayMode

public void setPlayMode(PlayMode playMode)
设置动画的播放模式。

参数:
playMode - 动画的播放模式。

update

public void update(double offset)
更新动画时间。

参数:
offset - 动画在当前的位置上向前或向后移动的秒数。单位为毫秒。

setAutoUpdated

public void setAutoUpdated(boolean value)
设置动画播放方式是否为自动更新时间。

参数:
value - 一个布尔值,表示是否自动更新时间,true 表示自动更新,false 表示不自动更新。

isAutoUpdated

public boolean isAutoUpdated()
返回动画播放方式是否为自动更新时间。

返回:
一个布尔值,表示是否自动更新时间,true 表示自动更新,false 表示不自动更新。