axSceneControl汽车沿着pollyline行驶
ILayer layer = axSceneControl1.SceneGraph.Scene.get_Layer(5);
IFeatureLayer featurelayer = (IFeatureLayer)layer;
IFeatureClass featureclass = featurelayer.FeatureClass;
IFeature feature = featureclass.GetFeature(0);
IPolyline polyline = (IPolyline )feature.Shape;
double d = polyline.Length;
IPoint point1 = new PointClass();
IPoint point2 = new PointClass();
for (int i = 2; i <= (int)d;i++ )
{
polyline.QueryPoint(esriSegmentExtension.esriNoExtension, i, false, point1);
polyline.QueryPoint(esriSegmentExtension.esriExtendAtFrom , i-150, false, point2);
point2 .Z =13;
point2.X= point2.X +-50;
ICamera camera = axSceneControl1.SceneViewer.Camera;
IPoint point3=new PointClass ();
point3.X = point1.X;
point3.Y = point1.Y;
point3.Z =13;
camera.Target = point3;
camera.Observer = point2;
IScene pscene = axSceneControl1.SceneGraph.Scene;
IMarker3DSymbol pmark3dsymbol = new Marker3DSymbolClass();
pmark3dsymbol.CreateFromFile("E:\\3dmax\\汽车.3DS");
IMarkerSymbol marksy = (IMarkerSymbol)pmark3dsymbol;
marksy.Size = 20;
marksy.Angle = 90;
IElement pelement = new MarkerElementClass();
IMarkerElement pmarkelement = (IMarkerElement)pelement;
pmarkelement.Symbol = (IMarkerSymbol)marksy;
pelement.Geometry = point1;
IGraphicsLayer player = axSceneControl1.SceneGraph.Scene.BasicGraphicsLayer;
IGraphicsContainer3D pgraphiccontainer3d = (IGraphicsContainer3D)player;
pgraphiccontainer3d.DeleteAllElements();
pgraphiccontainer3d.AddElement((IElement)pmarkelement);
axSceneControl1.SceneGraph.RefreshViewers();
}
用3DS文件填充点,移动点,使汽车行驶,并改变camera.