ArcGlobe三维开发之九————由指定路径创建动画(实现)

来源:互联网 发布:江苏省软件企业协会 编辑:程序博客网 时间:2024/04/28 17:17

上一篇博文主要介绍了根据路径实现飞行动画的接口,本篇博文则讲解其实现过程。这里我封装了一个生成动画的类,用于动画的操作,目前只是实现了动画的生成,动画的保存以及动画的加载,后面的博文再陆续探讨动画的播放控制等功能。创建动画类代码如下:

 /// <summary>    /// 根据路径创建飞行动画    /// </summary>    class AnimationCreator    {        #region"Create Animation from Path"        ///<summary> 由路径来创建一个Camera动画.这条路径有图层提供一条三维线要素</summary>        ///         ///<param name="globe">IGlobe接口</param>        ///<param name="layer">一个包含PolyLine的ILayer接口</param>        ///<param name="featureID">包含路径的要素ID.Example: 123</param>        ///          ///<remarks></remarks>        public void CreateAnimationFromPath ()        {            IGlobeDisplay globeDisplay = pGlobe.GlobeDisplay;            IScene scene = globeDisplay.Scene;            // 获取动画扩展            IBasicScene2 basicScene2 =  scene  as IBasicScene2;            IAnimationExtension animationExtension = basicScene2.AnimationExtension;            //获取路径            IFeatureLayer featureLayer = pLayer as IFeatureLayer;             IFeatureClass featureClass = featureLayer.FeatureClass;            IFeature feature = featureClass.GetFeature(pFeatureID);            IGeometry geometry = feature.Shape;            //创建AGAnimationUtils和AGImportPathOptions对象            ESRI.ArcGIS.Animation.IAGAnimationUtils agAnimationUtils = new AGAnimationUtilsClass();            ESRI.ArcGIS.Animation.IAGImportPathOptions agImportPathOptions = new AGImportPathOptionsClass();            // 设置AGImportPathOptions的属性            agImportPathOptions.BasicMap = (IBasicMap)pGlobe;            agImportPathOptions.AnimationTracks = (IAGAnimationTracks)pGlobe;             agImportPathOptions.AnimationType = new AnimationTypeGlobeCameraClass();            agImportPathOptions.AnimatedObject = pGlobe.GlobeDisplay.ActiveViewer.Camera; //动画对象            agImportPathOptions.PathGeometry = geometry;                      //动画轨迹            agImportPathOptions.ConversionType = ESRI.ArcGIS.Animation.esriFlyFromPathType.esriFlyFromPathObsAndTarget;            agImportPathOptions.LookaheadFactor = 0.05;            agImportPathOptions.RollFactor = 0;            agImportPathOptions.AnimationEnvironment = animationExtension.AnimationEnvironment;            IAGAnimationContainer AGAnimationContainer = animationExtension.AnimationTracks.AnimationObjectContainer;            //创建并保存动画            agAnimationUtils.CreateFlybyFromPath(AGAnimationContainer,agImportPathOptions);            if (System.IO.File.Exists(SaveFilePath))            {                System.IO.File.Delete(SaveFilePath);                agAnimationUtils.SaveAnimationFile(AGAnimationContainer,SaveFilePath,esriArcGISVersion.esriArcGISVersion10);            }                   }        #endregion    }
把生成的.aga文件导入即可播放。效果图如下:



2 0
原创粉丝点击