skyline二次开发如何创建动态物体

时间:2013-7-19    作者:悬浮的青春    分类: skyline二次开发


在skyline6中要创建动态物体和5有点不一样。

下面我先把5中用到的方式贴一下


要创建动态物体当然要先有路线。也就是线段。polyline对象。

5中创建线段的部分代码如下:

      ITerrainPolyline iTerrainPolyline = null;

 TerraExplorerClass terraExplorerClass = new TerraExplorerClass();
            IRgbColor iRgbColor;
            iRgbColor = new RgbColor();
            iRgbColor.RGB = System.Drawing.Color.FromArgb(255, 0, 0).ToArgb();
            iTerrainPolyline = terraExplorerClass.CreatePolyline(null, iRgbColor.RGB, HeightStyleCode.HS_ON_TERRAIN, 0, "路线");

然后在鼠标左键点击事件 void TE_OnLButtonDown(int Flags, int X, int Y, ref object pbHandled)

 IRender = (IRender5)TE;
            object x, y, flag;
            double terrainX, terrainY, terrainH;
            IRender.GetMouseInfo(out flag, out x, out y);
            IRender.ScreenToTerrain(Convert.ToInt32(x), Convert.ToInt32(y), out terrainX, out terrainY, out terrainH);
                //将地理坐标添加到鼠标点击创建的线中
                iTerrainPolyline.AddVertex(terrainX, 0, terrainY, (int)flag);

然后一个线段就创建完成了。下一步转为动态物体。

 //创建动态对象
            TerraExplorerClass terraExplorerClass = new TerraExplorerClass();
            IObjectManager51 objectCar = new TerraExplorerClass();
            String filename = Application.StartupPath + @"\Data\消防车\消防车.X";//这里可以是自己的模型
            ITerrainDynamicObject5 iTDynamicObject = objectCar.CreateDynamicObject(DynamicMotionStyle.MOTION_GROUND_VEHICLE,
            DynamicObjectType.DYNAMIC_3D_MODEL, filename, 2.0, HeightStyleCode.HS_ON_TERRAIN, 0,"消防车");
            iTDynamicObject.TurnSpeed = 200;
            iTDynamicObject.Distance = 300;
            iTDynamicObject.CircularRoute = 0;
            iTDynamicObject.ScaleFactor = 0.02;
            //添加路线里面的坐标
            int itemID = GetItemIDByName("上面画的线的名称");//获取线段的id
            ITerrainPolyline5 iTerrainPolyline5 = terraExplorerClass.GetObjectEx(itemID,"ITerrainPolyline5") as ITerrainPolyline5;
            //添加路线里的坐标点
            int NumofPoint = iTerrainPolyline5.NumOfVertices;
            object X, Height, Y;
            for (int i = 0; i <= NumofPoint - 1; i++)
            {
                iTerrainPolyline5.GetVertex(i, out X, out Height, out Y);
                iTDynamicObject.AddWaypoint((double)X, (double)Height, (double)Y,80, i);
            }
            //视角定位至路线的第一个点
            //terraExplorerClass.FlyTo((double)X, (double)Y, (double)Height, 123, 0, -90, "FlyToLocation");
            //飞至该路线并播放
            terraExplorerClass.FlyToObject(iTDynamicObject.ID, ActionCode.AC_PLAY);

这样在skyline5.1.3中一个动态物体就创建完成了~

明天再写6中如何创建

标签: skyline二次开发

WRITTEN BY

avatar


评论:

YLDM 2018-03-22 12:57
6.6中怎么创建呢
悬浮的青春 2018-04-16 15:58
@YLDM:6.6可以直接用6的方式写。