![]() |
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