飞行路线,是三维应用中很基础、普通的一个功能。普通到,感觉不值得拿出来说。但是我还是写了这篇文章来记录我的实现思路。why? 哈哈,因为我踩坑了。而且过了很久,再次翻出来改bug的时候,才很意外的跳出坑来。这么惊喜的事情,必须拿出来讲一讲。

我设计的飞行路线功能,很简单。没有像Cesium沙箱中一样,用一个CZML的模型,然后用模型移动来达到效果。

不是的,我是通过Camera.FlyTo(),通过移动相机视角,模拟第一人称相机的观察效果。

FlyTo的实现方式很简单:

总结起来,就是FlyTo中不断递归第一个目标点(包括:到达下个一点的时间、姿态)。

但是,实现这个功能的过程中,我还是菜了几个坑:

1.飞行中,报错:maxium call stack size exceeded

原因:天真(傻傻)的我,采集目标点时,直接将:camera.position存了起来。

camera.position有点像强类型语言(Java、C#[原谅我,只写过这两种])中的引用类型,是会实时变化的。

所以,无论我中途采集了多少目标点,最终都指向同一块内存,变为最新的相机位置。

修改方式:new Cesium.Cartesian3(camera.postion.x,camera.postion.y,camera.postion.z)

2.飞行过程不平滑,在新的站点开始前,感觉会停一段时间,体验很不好。

原因:flyto方法中,提供了easingFunction,可以自定义或指定cesium提供的插值方法。

不幸的是,我对插值算法不是很了解,所以没办法展开来讲。但“线性插值”是接触最多的,可以使时间均匀分配。

因此,flyto中 设置:easingFunction:Cesium.EasingFunction.LINEAR_NONE

说起来很惭愧,这两个问题,是把功能放了很长一段时间后,又重新捡起来修改的时候,才找到的原因和方案。所以,我觉得,遇到问题,躺平、摆烂也许就是最佳的方式呢。躺平一段时间后,再起来,才会有新思路,新视角。哈哈哈,over。对比一下平滑前后的效果:

(1)临近站点,会停留一会的效果。

不平滑飞行

(2)平滑,不停顿飞行。

平滑飞行

Cesium空间分析-飞行路线相关推荐

  1. Cesium空间分析-填挖方计算(地形、模型通用)

    我的第一篇文章Cesium空间分析-填挖方计算 中,介绍了通过细化PolygonGeometry的颗粒度,进行填挖方计算.这里还是要感谢大神的分享. 这个思路,简单.清晰.但是有一个弊端-无法在模型上 ...

  2. Cesium空间分析、Cesium通视分析

    Cesium空间分析.Cesium通视分析 实现效果 关键代码 实现效果 直线通视分析 圆形通视分析 关键代码 //开始分析startnalysis() {// 计算射线的方向,目标点left 视域点 ...

  3. Cesium空间分析-填挖方计算

    Cesium提供的接口很基础,很专业.因此扩展起来非常灵活,但同时也有一定的门槛.而且目前关于Cesium相关的参考资料很少,因此实现功能后准备自己记录一下过程.也希望为后续的开发者们提供一些参考资料 ...

  4. Cesium空间分析-通视分析

    进入正题,前段时间做了一个通视分析的功能. 功能很简单:给定"观察点"与"目标点",判断两点之间是否有"阻碍点",并能够计算出阻碍点.效果如 ...

  5. Cesium专栏-空间分析之坡向分析(附源码下载)

    Cesium Cesium 是一款面向三维地球和地图的,世界级的JavaScript开源产品.它提供了基于JavaScript语言的开发包,方便用户快速搭建一款零插件的虚拟地球Web应用,并在性能,精 ...

  6. cesium获取模型高度_Cesium专栏-空间分析之剖面分析(附源码下载)

    Cesium Cesium 是一款面向三维地球和地图的,世界级的JavaScript开源产品.它提供了基于JavaScript语言的开发包,方便用户快速搭建一款零插件的虚拟地球Web应用,并在性能,精 ...

  7. Cesium专栏-空间分析之坡度分析(附源码下载)

    Cesium Cesium 是一款面向三维地球和地图的,世界级的JavaScript开源产品.它提供了基于JavaScript语言的开发包,方便用户快速搭建一款零插件的虚拟地球Web应用,并在性能,精 ...

  8. GIS空间分析 三维分析4 制作飞行动画

    目录 一.实验名称 二.实验目的 三.实验准备 1.数据 2.软件 四.实验步骤 本文数据免费下载 其他GIS空间分析文章 一.实验名称 三维分析之制作飞行动画 二.实验目的 掌握三维地形漫游及动画制 ...

  9. SuperMap iClient3D for WebGL教程(空间分析)- 地表开挖及修改

    地表开挖主要是为了显示出地下的场景,比如地下管网,而地形修改通常是为了让地表平整,便于跟模型匹配,接下来我们分别说说如何实现地表开挖和地形修改. 地表开挖 1.引用核心样式文件和库文件 <scr ...

最新文章

  1. Sql server 2005带来的分页便利
  2. 9月全球浏览器份额之争:IE领先Chrome21.73%
  3. ThinkPHP简单的验证码实现
  4. 了解如何使用Yii2 PHP框架创建YouTube克隆
  5. 从「及格线」到优等生,威马只用一台W6
  6. 怎么读服务器文件内容,服务器上读取文件内容
  7. MFC 强大功能函数
  8. [转载] opengl能做什么_python能做什么
  9. Linux的diff和git diff生成patch/打patch
  10. 使scp不用输入密码
  11. 下载百度文库的受限文件-冰点下载器
  12. [ExtJs6]随记--去除extjs trial水印
  13. 基于host的http代理--hproxy
  14. 使用QQ推广作为客服或留言
  15. 没有粉丝能开快手小店吗?做好有何技巧?
  16. OS X下的鼠标手感
  17. 使用marmaid让mrakdown支持作图
  18. java IO流之一 IO流介绍
  19. EF搜索数据自动将表名变复数问题
  20. 分享Silverlight/WPF/Windows Phone/HTML5一周学习导读(3月12日-3月18日)

热门文章

  1. tmux 命令使用汇总
  2. VS2008的破解方法
  3. Python TCP服务器v1.7 - PyQt5 server服务端来临
  4. 解决Mysqlf服务启动后停止。某些服务器在未由其他服务或程序使用时将自动停止的问题
  5. 视频教程-坦克大战-Java
  6. 深入学习MySQL、SQL优化、集群搭建
  7. c语言tinyxml使用方法,TinyXml使用方法
  8. 给suse系统添加源
  9. Android S5PV210 camera驱动(tw9912)小结
  10. mysql远程连接授权命令