This document is archived and information here might be outdated. Recommended version. |
Creates an animation by interpolating between two keyframes in the globe. The animation makes the Globe layer transparent by interpolating between the keyframes.
///<summary>Creates an animation by interpolating between two keyframes in the globe. The animation makes the Globe layer transparent by interpolating between the keyframes.</summary> /// ///<param name="globe">An IGlobe interface</param> ///<param name="layer">An ILayer interface</param> /// ///<remarks></remarks> public void CreateAnimationByInterpolatingBetweenTwoKeyframes(ESRI.ArcGIS.GlobeCore.IGlobe globe, ESRI.ArcGIS.Carto.ILayer layer) { ESRI.ArcGIS.GlobeCore.IGlobeDisplay globeDisplay=globe.GlobeDisplay; ESRI.ArcGIS.Analyst3D.IScene scene=globeDisplay.Scene; // Get a handle to the animation extension ESRI.ArcGIS.Analyst3D.IBasicScene2 basicScene2=(ESRI.ArcGIS.Analyst3D.IBasicScene2)scene; // Explicit Cast ESRI.ArcGIS.Animation.IAnimationExtension animationExtension=basicScene2.AnimationExtension; // create an animation track ESRI.ArcGIS.Animation.IAGAnimationTrack agAnimationTrack=new ESRI.ArcGIS.Analyst3D.AnimationTrackClass(); ESRI.ArcGIS.Animation.IAGAnimationTrackKeyframes agAnimationTrackKeyframes=(ESRI.ArcGIS.Animation.IAGAnimationTrackKeyframes)agAnimationTrack; //Explicit cast // set the type before adding keyframes ESRI.ArcGIS.Animation.IAGAnimationType agAnimationType=new ESRI.ArcGIS.GlobeCore.AnimationTypeGlobeLayerClass(); agAnimationTrack.AnimationType=agAnimationType; // create four keyframes and add them to the track ESRI.ArcGIS.Animation.IAGKeyframe agKeyframe; System.Int32 nKeyframes=4; System.Int32 numKeyframe; for (numKeyframe=0; numKeyframe <= nKeyframes - 1; numKeyframe++) { agKeyframe=new ESRI.ArcGIS.GlobeCore.GlobeLayerKeyframeClass(); agAnimationTrackKeyframes.InsertKeyframe(agKeyframe, -1); agKeyframe.TimeStamp=1.0 * numKeyframe / (nKeyframes - 1); // set transparency values agKeyframe.set_PropertyValue(0, true); // set visibility agKeyframe.set_PropertyValue(1, 100 * numKeyframe / (nKeyframes - 1)); // set transparency } // set active properties in the track ESRI.ArcGIS.esriSystem.ILongArray longArray=new ESRI.ArcGIS.esriSystem.LongArrayClass(); longArray.Add(0); longArray.Add(1); agAnimationTrackKeyframes.ActiveProperties=(ESRI.ArcGIS.esriSystem.ILongArray)longArray; // Explicit Cast // attach the track to the first layer in TOC agAnimationTrack.AttachObject(layer); // animation loop ESRI.ArcGIS.Animation.IAGAnimationContainer agAnimationContainer=animationExtension.AnimationTracks.AnimationObjectContainer; System.Double time; System.Double iteration; for (iteration=0; iteration < 500; iteration++) { time=iteration / 500; // interpolate by using track agAnimationTrack.InterpolateObjectProperties(agAnimationContainer, time); globeDisplay.RefreshViewers(); } }
'''<summary>Creates an animation by interpolating between two keyframes in the globe. The animation makes the Globe layer transparent by interpolating between the keyframes.</summary> ''' '''<param name="globe">An IGlobe interface</param> '''<param name="layer">An ILayer interface</param> ''' '''<remarks></remarks> Public Sub CreateAnimationByInterpolatingBetweenTwoKeyframes(ByVal globe As ESRI.ArcGIS.GlobeCore.IGlobe, ByVal layer As ESRI.ArcGIS.Carto.ILayer) Dim globeDisplay As ESRI.ArcGIS.GlobeCore.IGlobeDisplay=globe.GlobeDisplay Dim scene As ESRI.ArcGIS.Analyst3D.IScene=globeDisplay.Scene ' Get a handle to the animation extension Dim basicScene2 As ESRI.ArcGIS.Analyst3D.IBasicScene2=CType(scene, ESRI.ArcGIS.Analyst3D.IBasicScene2) ' Explicit Cast Dim animationExtension As ESRI.ArcGIS.Animation.IAnimationExtension=basicScene2.AnimationExtension ' create an animation track Dim agAnimationTrack As ESRI.ArcGIS.Animation.IAGAnimationTrack=New ESRI.ArcGIS.Analyst3D.AnimationTrackClass Dim agAnimationTrackKeyframes As ESRI.ArcGIS.Animation.IAGAnimationTrackKeyframes=CType(agAnimationTrack, ESRI.ArcGIS.Animation.IAGAnimationTrackKeyframes) ' Explicit Cast ' set the type before adding keyframes Dim agAnimationType As ESRI.ArcGIS.Animation.IAGAnimationType=New ESRI.ArcGIS.GlobeCore.AnimationTypeGlobeLayerClass agAnimationTrack.AnimationType=agAnimationType ' create four keyframes and add them to the track Dim agKeyframe As ESRI.ArcGIS.Animation.IAGKeyframe Dim nKeyframes As System.Int32=4 Dim numKeyframe As System.Int32 For numKeyframe=0 To nKeyframes - 1 agKeyframe=New ESRI.ArcGIS.GlobeCore.GlobeLayerKeyframeClass agAnimationTrackKeyframes.InsertKeyframe(agKeyframe, -1) agKeyframe.TimeStamp=1 * numKeyframe / (nKeyframes - 1) ' set transparency values agKeyframe.PropertyValue(0)=True ' set visibility agKeyframe.PropertyValue(1)=100 * numKeyframe / (nKeyframes - 1) ' set transparency Next numKeyframe ' set active properties in the track Dim longArray As ESRI.ArcGIS.esriSystem.ILongArray=New ESRI.ArcGIS.esriSystem.LongArrayClass longArray.Add(0) LongArray.Add(1) agAnimationTrackKeyframes.ActiveProperties=CType(LongArray, ESRI.ArcGIS.esriSystem.ILongArray) ' Explicit Cast ' attach the track to the first layer in TOC agAnimationTrack.AttachObject(layer) Dim agAnimationContainer As ESRI.ArcGIS.Animation.IAGAnimationContainer=animationExtension.AnimationTracks.AnimationObjectContainer ' animation loop Dim time As System.Double Dim iteration As System.Double For iteration=0 To 500 time=iteration / 500 ' interpolate by using track agAnimationTrack.InterpolateObjectProperties(agAnimationContainer, time) globeDisplay.RefreshViewers() Next iteration End Sub