时间: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二次开发
评论: