在skyline中利用现成路径转换为动态物体DynamicObject进行动态演示

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


 画好现成的线段转化成动态物体路径,这个线段可以是创建fly文件时就已经创建好的
也可以是打开自己写的软件自己画的。当然命名的话可以按我写的固定的名称。路线来调用。
也可以再优化一下。动态命名或者选定某条画好的线进行转化。

大致代码如下所示:



/// <summary>
     /// 根据画线的结果创建动态路径
     /// </summary>
        private void buttonX5_Click(object sender, EventArgs e)
        {
            //创建动态对象
            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("路线");
            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);
        }

标签: skyline二次开发

WRITTEN BY

avatar


评论:

qxq255 2018-03-22 18:22
博主,6.6的怎么写啊,能不能指导一下
qxq255 2018-03-22 16:34
博主 你好 6.6中添加坐标那里怎么写
怒奔的菜鸟 2013-12-12 15:16
你好,博主,我想问问skyline中动态物体按路径运动过程中,视角是怎么控制的,谢谢!
悬浮的青春 2013-12-12 18:43
@怒奔的菜鸟:有个朝向的属性。FlyToObject(iTDynamicObject.ID, ActionCode.AC_FOLLOWBEHIND);里面的ActionCode可以控制你飞的过程中看向哪边。我这个是在物体的后上向前下看。