Cesium空间分析-飞行路线
飞行路线,是三维应用中很基础、普通的一个功能。普通到,感觉不值得拿出来说。但是我还是写了这篇文章来记录我的实现思路。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空间分析-飞行路线相关推荐
- Cesium空间分析-填挖方计算(地形、模型通用)
我的第一篇文章Cesium空间分析-填挖方计算 中,介绍了通过细化PolygonGeometry的颗粒度,进行填挖方计算.这里还是要感谢大神的分享. 这个思路,简单.清晰.但是有一个弊端-无法在模型上 ...
- Cesium空间分析、Cesium通视分析
Cesium空间分析.Cesium通视分析 实现效果 关键代码 实现效果 直线通视分析 圆形通视分析 关键代码 //开始分析startnalysis() {// 计算射线的方向,目标点left 视域点 ...
- Cesium空间分析-填挖方计算
Cesium提供的接口很基础,很专业.因此扩展起来非常灵活,但同时也有一定的门槛.而且目前关于Cesium相关的参考资料很少,因此实现功能后准备自己记录一下过程.也希望为后续的开发者们提供一些参考资料 ...
- Cesium空间分析-通视分析
进入正题,前段时间做了一个通视分析的功能. 功能很简单:给定"观察点"与"目标点",判断两点之间是否有"阻碍点",并能够计算出阻碍点.效果如 ...
- Cesium专栏-空间分析之坡向分析(附源码下载)
Cesium Cesium 是一款面向三维地球和地图的,世界级的JavaScript开源产品.它提供了基于JavaScript语言的开发包,方便用户快速搭建一款零插件的虚拟地球Web应用,并在性能,精 ...
- cesium获取模型高度_Cesium专栏-空间分析之剖面分析(附源码下载)
Cesium Cesium 是一款面向三维地球和地图的,世界级的JavaScript开源产品.它提供了基于JavaScript语言的开发包,方便用户快速搭建一款零插件的虚拟地球Web应用,并在性能,精 ...
- Cesium专栏-空间分析之坡度分析(附源码下载)
Cesium Cesium 是一款面向三维地球和地图的,世界级的JavaScript开源产品.它提供了基于JavaScript语言的开发包,方便用户快速搭建一款零插件的虚拟地球Web应用,并在性能,精 ...
- GIS空间分析 三维分析4 制作飞行动画
目录 一.实验名称 二.实验目的 三.实验准备 1.数据 2.软件 四.实验步骤 本文数据免费下载 其他GIS空间分析文章 一.实验名称 三维分析之制作飞行动画 二.实验目的 掌握三维地形漫游及动画制 ...
- SuperMap iClient3D for WebGL教程(空间分析)- 地表开挖及修改
地表开挖主要是为了显示出地下的场景,比如地下管网,而地形修改通常是为了让地表平整,便于跟模型匹配,接下来我们分别说说如何实现地表开挖和地形修改. 地表开挖 1.引用核心样式文件和库文件 <scr ...
最新文章
- Sql server 2005带来的分页便利
- 9月全球浏览器份额之争:IE领先Chrome21.73%
- ThinkPHP简单的验证码实现
- 了解如何使用Yii2 PHP框架创建YouTube克隆
- 从「及格线」到优等生,威马只用一台W6
- 怎么读服务器文件内容,服务器上读取文件内容
- MFC 强大功能函数
- [转载] opengl能做什么_python能做什么
- Linux的diff和git diff生成patch/打patch
- 使scp不用输入密码
- 下载百度文库的受限文件-冰点下载器
- [ExtJs6]随记--去除extjs trial水印
- 基于host的http代理--hproxy
- 使用QQ推广作为客服或留言
- 没有粉丝能开快手小店吗?做好有何技巧?
- OS X下的鼠标手感
- 使用marmaid让mrakdown支持作图
- java IO流之一 IO流介绍
- EF搜索数据自动将表名变复数问题
- 分享Silverlight/WPF/Windows Phone/HTML5一周学习导读(3月12日-3月18日)