Creates an animation by changing and applying the keyframe in globe. The animation rotates the globe by changing the GlobeCamera keyframe and applying it in globe.
[C#]
///<summary>Creates an animation by changing and applying the keyframe in globe. The animation rotates the globe by changing the GlobeCamera keyframe and applying it in globe.</summary> /// ///<param name="globe">An IGlobe interface</param> /// ///<remarks></remarks> public void CreateAnimationFromKeyframes(ESRI.ArcGIS.GlobeCore.IGlobe globe) { // get Globe Camera in the globe display ESRI.ArcGIS.GlobeCore.IGlobeDisplay globeDisplay = globe.GlobeDisplay; ESRI.ArcGIS.Analyst3D.ISceneViewer sceneViewer = globeDisplay.ActiveViewer; ESRI.ArcGIS.Analyst3D.ICamera camera = sceneViewer.Camera; ESRI.ArcGIS.GlobeCore.IGlobeCamera globeCamera = (ESRI.ArcGIS.GlobeCore.IGlobeCamera)camera; // Explicit Cast // create keyframe ESRI.ArcGIS.Animation.IAGKeyframe agKeyframe = new ESRI.ArcGIS.GlobeCore.GlobeCameraKeyframeClass(); // set active properties ESRI.ArcGIS.esriSystem.ILongArray longArray = new ESRI.ArcGIS.esriSystem.LongArrayClass(); longArray.Add(4); // Observer Lat. longArray.Add(5); // Observer Lon. longArray.Add(6); // Observer Alt. agKeyframe.ActiveProperties = longArray; ESRI.ArcGIS.Animation.IAGAnimationType agAnimationType = new ESRI.ArcGIS.GlobeCore.AnimationTypeGlobeCameraClass(); ESRI.ArcGIS.Animation.IAGAnimationTrack agAnimationTrack = new ESRI.ArcGIS.Animation.AGAnimationTrackClass(); agAnimationTrack.AnimationType = agAnimationType; ESRI.ArcGIS.Animation.IAGAnimationContainer AGAnimationContainer = (ESRI.ArcGIS.Animation.IAGAnimationContainer)globe; // Explicit Cast // animation loop System.Double longitude; for (longitude = 0; longitude <= 360; longitude++) { agKeyframe.set_PropertyValue(4, 0.0); // set latitude agKeyframe.set_PropertyValue(5, longitude); // set longitude agKeyframe.set_PropertyValue(6, 20000.0); // set altitude agKeyframe.Apply(agAnimationTrack, AGAnimationContainer, globeCamera); // apply it globeDisplay.RefreshViewers(); } }
[Visual Basic .NET]
'''<summary>Creates an animation by changing and applying the keyframe in globe. The animation rotates the globe by changing the GlobeCamera keyframe and applying it in globe.</summary> ''' '''<param name="globe">An IGlobe interface</param> ''' '''<remarks></remarks> Public Sub CreateAnimationFromKeyframes(ByVal globe As ESRI.ArcGIS.GlobeCore.IGlobe) ' get Globe Camera in the globe display Dim globeDisplay As ESRI.ArcGIS.GlobeCore.IGlobeDisplay = globe.GlobeDisplay Dim sceneViewer As ESRI.ArcGIS.Analyst3D.ISceneViewer = globeDisplay.ActiveViewer Dim camera As ESRI.ArcGIS.Analyst3D.ICamera = sceneViewer.Camera Dim globeCamera As ESRI.ArcGIS.GlobeCore.IGlobeCamera = CType(camera, ESRI.ArcGIS.GlobeCore.IGlobeCamera) ' Explicit Cast ' create keyframe Dim agKeyframe As ESRI.ArcGIS.Animation.IAGKeyframe = New ESRI.ArcGIS.GlobeCore.GlobeCameraKeyframeClass ' set active properties Dim longArray As ESRI.ArcGIS.esriSystem.ILongArray = New ESRI.ArcGIS.esriSystem.LongArrayClass LongArray.Add(4) ' Observer Lat. LongArray.Add(5) ' Observer Lon. LongArray.Add(6) ' Observer Alt. agKeyframe.ActiveProperties = LongArray Dim agAnimationType As ESRI.ArcGIS.Animation.IAGAnimationType = New ESRI.ArcGIS.GlobeCore.AnimationTypeGlobeCameraClass Dim agAnimationTrack As ESRI.ArcGIS.Animation.IAGAnimationTrack = New ESRI.ArcGIS.Animation.AGAnimationTrackClass agAnimationTrack.AnimationType = agAnimationType Dim agAnimationContainer As ESRI.ArcGIS.Animation.IAGAnimationContainer = CType(globe, ESRI.ArcGIS.Animation.IAGAnimationContainer) ' Explict Cast ' animation loop Dim longitude As System.Double For longitude = 0 To 360 agKeyframe.PropertyValue(4) = 0 ' set latitude agKeyframe.PropertyValue(5) = longitude ' set longitude agKeyframe.PropertyValue(6) = 20000 ' set altitude agKeyframe.Apply(agAnimationTrack, agAnimationContainer, globeCamera) ' apply it globeDisplay.RefreshViewers() Next longitude End Sub