1、在看完CS代码后可以自己写程序了,我刚写了一个由线创建动态路径的代码,给大家参考。
2、配置完场景,加载完FDB。
3、代码片段

 _axcontrol.axRenderControl1.InteractMode = gviInteractMode.gviInteractEdit;crs = (new CRSFactory()).CreateFromWKT(_axcontrol.axRenderControl1.GetCurrentCrsWKT()) as ISpatialCRS;if (crs.CrsType == gviCoordinateReferenceSystemType.gviCrsGeographic)TYPE = gviObjectType.gviObjectTerrain;else if (crs.CrsType == gviCoordinateReferenceSystemType.gviCrsProject|| crs.CrsType == gviCoordinateReferenceSystemType.gviCrsUnknown)TYPE = gviObjectType.gviObjectReferencePlane;IGeometryFactory _geoFactory = new GeometryFactory();point = _geoFactory.CreatePoint(gviVertexAttribute.gviVertexAttributeZ);myline = _geoFactory.CreateGeometry(gviGeometryType.gviGeometryPolyline, gviVertexAttribute.gviVertexAttributeZ) as IPolyline;myline.SpatialCRS = crs;rootId = _axcontrol.axRenderControl1.ObjectManager.GetProjectTree().RootID;_axcontrol.axRenderControl1.RcMouseClickSelect += AxRenderControl1_RcMouseClickSelect;_axcontrol.axRenderControl1.RcRButtonUp += AxRenderControl1_RcRButtonUp;

4、上面是创建按钮里的代码,还有2个函数,一个是拾取函数代码,一个是右键结束代码

 //这个是鼠标点击拾取事件point.SetCoords(e.intersectPoint.X, e.intersectPoint.Y, e.intersectPoint.Z, 0, 0);myline.AppendPoint(point);ICurveSymbol cs = new CurveSymbol();cs.Color = 0xffff0000;cs.Width = 1;_axcontrol.axRenderControl1.ObjectManager.CreateRenderPolyline(myline, cs, rootId);
//这里是右键结束
_axcontrol.axRenderControl1.RcMouseClickSelect -= AxRenderControl1_RcMouseClickSelect;_axcontrol.axRenderControl1.InteractMode = gviInteractMode.gviInteractNormal;//从线创建动态对象ICameraTour tour = null;tour = _axcontrol.axRenderControl1.ObjectManager.CreateCameraTour(rootId);dynamicObject = _axcontrol.axRenderControl1.ObjectManager.CreateDynamicObject(rootId);dynamicObject.CrsWKT = tour.CrsWKT;for (int i = 0; i <myline.PointCount-1; i++){IVector3 vector0 = new Vector3(),vector1=new Vector3();vector0.Set(myline.GetPoint(i).X, myline.GetPoint(i).Y, myline.GetPoint(i).Z);vector1.Set(myline.GetPoint(i+1).X, myline.GetPoint(i+1).Y, myline.GetPoint(i+1).Z);tour.AddWaypoint(vector0, _axcontrol.axRenderControl1.Camera.GetAimingAngles(vector0, vector1), 0, gviCameraTourMode.gviCameraTourLinear);dynamicObject.AddWaypoint(vector0, 10);}IGeometryFactory gf = new GeometryFactory();IModelPoint mp = gf.CreateGeometry(gviGeometryType.gviGeometryModelPoint, gviVertexAttribute.gviVertexAttributeZ) as IModelPoint;mp.ModelName = AppDomain.CurrentDomain.BaseDirectory + "Character\\QiYeYuanGong.X";IMatrix matrix = new Matrix(); matrix.MakeIdentity();matrix.SetTranslate(myline.GetPoint(0).Position);mp.FromMatrix(matrix);skinMesh = _axcontrol.axRenderControl1.ObjectManager.CreateSkinnedMesh(mp, rootId);if (skinMesh == null){MessageBox.Show("骨骼动画创建失败!");return false;}skinMesh.Loop = true;skinMesh.Play();skinMesh.MaxVisibleDistance = 1000;skinMesh.ViewingDistance = 10;IMotionable m = skinMesh as IMotionable;position.Set(0, 0, 0);m.Bind2(dynamicObject, position, 0, 0, 0);dynamicObject.Play();_axcontrol.axRenderControl1.Camera.FlyToObject(skinMesh.Guid, gviActionCode.gviActionFollowBehind);_axcontrol.axRenderControl1.RcRButtonUp -= AxRenderControl1_RcRButtonUp;return false;

5、用到的变量

  private System.Guid rootId = new System.Guid();private ISpatialCRS crs = null;private gviObjectType TYPE = gviObjectType.gviObjectNone;IPolyline myline = null;private IVector3 position = new Vector3();private IEulerAngle angle = new EulerAngle();IPoint point = null;private IDynamicObject dynamicObject = null;private ISkinnedMesh skinMesh = null;

6、实现效果,绘制完自动跟随执行巡航

如需支持,请联系MrSun
sunhaihong@gvitech.com

CityMaker学习教程08 一个示例,创建漫游路径相关推荐

  1. CityMaker学习教程09 一个示例,多窗体,画中画,多屏幕显示

    1.CityMaker采用同一个父窗体,多个申请窗体的方式进行多屏功能,并非添加另一个控件,不存在另一个场景,只是在原来的场景中扩展,你可以想象为复制出来. 2.实现多屏幕很简单,主要靠一个属性来控制 ...

  2. CityMaker学习教程11 创建和移动标签

    1.加载一个FDB,并在加载结束的时候绑定函数RcMouseClickSelect: this.axRenderControl1.RcMouseClickSelect += new Gvitech.C ...

  3. 【GlobalMapper精品教程】034:创建漫游动画并制作漫游视频的方法

    本实例讲解在globalmapper中根据路径创建漫游动画,并制作漫游视频的方法. 文章目录 一.绘制漫游路径 二.创建3D虚拟漫游 三.播放虚拟漫游 四.保存虚拟漫游 实验数据可以是点云数据.DEM ...

  4. CityMaker学习教程02 软件的授权

    软件授权: 打开任意一款款软件,会提示:未检测到单机锁或网络授权失败,请插单机锁或设置网络授权信息后,重启程序. 这时候你如果申请过软授权了,那点击"设置验证"按钮,然后输入: 授 ...

  5. CityMaker学习教程14 水面图层的创建

    在CityMaker中,图层的创建稍显麻烦,现在讲下如何创建水面层. 1.打开Builder并创建一个空的场景. 2.创建一个空的数据源或者选择一个没加载的数据源. 3.右键数据源,创建个数据集,或者 ...

  6. CityMaker学习教程12 osg模型的创建

    1.加载一个FDB文件到场景. 2.加载完绑定事件 axRenderControl1.RcMouseClickSelect += AxRenderControl1_RcMouseClickSelect ...

  7. CityMaker学习教程07 示例代码的使用CSharp

    说明:目前针对学校和企业团体,只需要申请一个试用的授权License即可,配置到服务器上,别的机器在运行SDK的示例的时候,只需将网络授权添加即可. ILicenseServer license = ...

  8. CityMaker学习教程10 示例代码的使用Javascript

    示例代码中的CS版本和BS版本是对应的,基本都是一对一的,不过BS有些代码跑起来比较困难,比如说这里用到的获取文件位置的代码 var skyboxPath = getSamplesRelatePath ...

  9. CityMaker学习教程03 数据的导入

    了解了软件的模块分类和授权之后,我们便可以开始使用软件了,首先讲一下如何导入shape数据到平台内. 1.打.打开CityMaker Builder 2.点击新建场景,如果是WGS84场景,请自己选择 ...

最新文章

  1. Spring Cloud Alibaba 升级改造:老项目升级到微服务的重构策略
  2. 别的设计师比你又快又好,是因为你不知道他们在用介个!
  3. 中兴再夺PCT国际专利申请榜首:连续7年位居前三
  4. 使用SDWebImage淡入淡出的方式加载图片
  5. python布尔类型运算_9.python的布尔类型与流程控制
  6. linux终端背景透明度设置,Ubuntu Terminal标签背景颜色设置
  7. mysql存储过程类_mysql存储过程类
  8. PHP的单引号和双引号
  9. ue4 迁移模型_UE4换装系统(合并骨骼模型)
  10. 黄俊:电商系统的一些心得分享
  11. php博客好看的源码,一款好看的WordPress博客主题源码,可做资源教程发布网
  12. UDP通信多发多收(案例)和广播组播
  13. 活动图(Activity Diagram)—UML图(四)
  14. SQLite查询记录总数
  15. 如何选择电脑--送给我的大一学弟学妹
  16. BQ25504芯片解析
  17. pytorch.tensorboard的零基础使用
  18. VsCode 提示 import “XXX模块” could not be resolved问题解决
  19. inodemac_Inode Mac版
  20. Qt 开发使用VSCode 笔记2

热门文章

  1. 天文学 python_4个天文学入门Python工具
  2. 计算机视觉技术英语论文,计算机视觉技术论文(2)
  3. 内存管理_分代机制(年轻代、年老代、永久代)
  4. 利用Aria2和旧电脑打造一台下载机
  5. 数据库审计:DDL与DML
  6. 计算机所有接口都没反应,如何解决Win7系统USB接口没反应的问题
  7. 八进制在计算机系统中的应用场景,二进制、八进制、十进制、十六进制都能干什么? 十六进制计算器使用场景...
  8. 10款比较好用的网页设计工具
  9. 一些值得一看的博友文章地址
  10. Netty手动实现Dubbo(含视频教程)