民航客机空中观光游览虚拟三维实景应用方法及系统
李基伟(中国民航大学 天津300300)
(一)背景技术:
这是一项提升民航旅客飞行体验的一种新的应用,根据目前国内民航旅客飞行体验状况分析,旅客在飞行过程中,完全相当于是与世界失联的状态。旅客不清楚自己目前到底飞到了哪个位置,部分旅客想看飞机下面的风景也因为飞机巡航高度,座舱位置等等因素而受限制。经调查分析,得到一个有趣的现象是,在起飞着陆那个一小段时间里,大多数的旅客都会伸着头,看窗外的风景、以及飞机下面的建筑等等。这说明人们普遍还是想从不同的角度看看地面的风景、看看自己生活的
城市。另外,在飞行过程中,实际上大多数人还是无聊的,只有少部分人看电影看书。即使在航空WIFI越来越普及的今天,这种在空中看地面风景的需求还是有的,因为即使有WIFI旅客可以刷微信微博看视频什么的,但旅客可能在机场候机时就已经刷得差不多了。旅客只有处在那种特定的飞行环境才会有那种特殊的需求,即 从空中看地面景色,以及了解自己具体飞到哪个位置哪个城市了。该发明可实现在空中让旅客虚拟观光游览三维实景,镜头视角可跟随到飞机目前所处的位置,让旅客了解自己确切位置。这一应用可以很大程度上满足旅客在空中陌生环境探索未知的欲望,满足旅客的需求。这一应用要是被航空公司采用,可以很大程度提高航空公司服务质量,提升旅客的飞行体验。
若是利用该应用来进行商业化收费,商业前景亦是巨大。经发明者分析,2016年全国民航客运量接近5亿人次,平均一天下来140万人次,假设一天只有5万人次使用,飞行全程使用一次收费2元,一天就是10万收入,一年就是3600万收入,这种使用比例仅仅还是3.5%,平均下来相当与一架载客100多人的飞机上只要有3-4个人使用就能达到这种规模收入。
另外对现有技术现状的分析,国外的谷歌公司虽然有谷歌三维地球,但是因为一些限制,国内用户基本上用不了,而且并没有提供跟随旅客航班的功能;国内的百度高德腾讯地图只是平面图并不存在三维地形图,也没有建筑实景三维图,他们所谓的街景也只能算是2.5D不能算3D,而且百度腾讯高德地图放大后清晰度不高,达不到那种虚拟观光游览的使用要求。
(二)技术内容:
l 方法描述:
l 1.该应用对于三维地形的实现,
l 步骤一:在国外Cesium开源地理空间项目的基础上,通过其底层代码创建一个带有Cesium容器的Cesium.viewer对象设为viewer,将其属性baseLayerPicker设为false,关闭其手动选择地图层的小部件;步骤二:为该容器创建一特定imageryProvider属性,属性值设为一对象:Cesium.ArcGisMapServerImageryProvider, 设置该对象的第一个属性url:指向https://services.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer‘,将Arcgis服务器端的开源地理图层
l 加载到该容器中,为了应用的良好体验性,设置该对象的另一属性enablePickFeture设为false,避免用户点击图层时不会跳出一些不必要的信息;
l 步骤三:创建一个Ceisum.CeisumTerrianProvider对象,设置该对象的url属性指向https://assets.agi.com/stk-terrain/v1/tilesets/world/tiles,另为其设置一requestWaterMask属性,值为true,添加动态海水模型到容器中。最后将该对象传递到ceisum容器中,为容器设置一个属性terrainProvider,属性值为该对象。
l 步骤四:设置viewer.scene.globe.depthTestAgainstTerrain
l 为true,让实际高度低于地形的物体的实体都隐藏。
l 2.该应用对于三维建筑、三维景点的实现:
l 步骤一:三维建筑利用无人机三维现场还原建模技术,利用Pix4Dmapper,或是Altizure,Dji 公司的GSPRO等地面端软件,对无人机所需要采集数据的建筑、景点进行飞行航线的规划,这几个应用都可设置无人机的预定飞行航线,以及设置巡航速度,采集图像的间隔。而经过之前个人多次测试分析,最好的采集数据的方案是用Altizure作为地面端,无人机采用DJI 4 Advanced,或DJI 4 Pro,飞行航线设为两个不同高度层,飞行高度设为最高建筑物上方45m-70m,两个不同的高度层互相垂直,图像采集时间间隔设为2s,相机倾斜角度设为45°- 60°。
l 步骤二:将采集后的图像数据通过Contextcapture4.4以上版本处理计算建模、重建区块,完成之后新建重建项目,将重建项目格式转化为Cesium 3d tiles格式,模型数据保存到一个文件夹,另为这个项目生成一JSON文件。为提高计算速度,采用多台计算机集群运算,分任务块处理,最后将细分任务合并在一起。
l 步骤三:将Contextcapture重建的模型添加到cesium容器中;在容器中创建一Cesium.Cesium3DTileset对象,为该对象设置一个url属性值指向之前的json数据文件,通过json文件为容器加载模型数据。
l 步骤四:解决之前三维模型加入到容器后无法和三维地形图层完美契合的问题;在contextcapture为重建模型生成的json文件里,需要另外为children对象添加一geometricError属性,弥补高度错误;
l
l
l 3.获取飞机地理位置,飞行高度,速度,航向,并显示于主界面;
l 步骤一:通过调用用户手机或者平板浏览器的地理定位api实现地理定位,得到altitude,speed,heading,longitude,latitude等参数,通过HTML DOM方式将得到的位置在界面上显示出速度,高度,航向,经纬度。通过确定旅客位置的方式来确定飞机位置。
l 步骤二:创建一函数,功能是一旦获取到浏览器位置,就立即在容器中生成一个实体对象设为entity,对象外形显示为一个点,position属性值设为从浏览器获取到的(latitude,longitude,altitude),将该实体显示出来,就是目前飞机位置;
l 步骤三:刷新飞机位置,创建一watchLocation函数
l 调用地理定位api的navigator.geolocation.watchPosition函数监控浏览器目前的位置变化,一旦检测到变化,就将将获取的位置信息传入实体的position属性改变原有位置。
l 4.实现空中模拟观光视角随着飞机位置的变化而变化;
l 在创建实体entity后,设置容器trackedEntity的值为entity。目的是让容器跟踪实体。
l 5.实现镜头跟随飞机,以及镜头取消跟随飞机的功能
l 为方便用户探索飞机周围以及飞机下面的风景,设定镜头取消跟随功能,创建一个函数viewSide,当调用这个函数时将viewer的trackedEntity属性值设为undefined,即镜头不再跟踪实体;创建一个viewFlight函数,在需要跟随飞机时调用这个函数,将viewer.trackedEntity属性值设为entity。
l 6.添加功能按钮
l 调用Sandcastle内置Sandcastle.addToolbarMenu函数,创建相应功能列表。
l 系统附图
2、本项目的创新点
1.用一开源Javascript库实现在浏览器中展示一个基于WebGL的三维地球,WebGL可为HTML5 Canvas提供硬件加速3D加速渲染,这样可轻松的借助系统显卡来在浏览器里更流畅地展示3D场景和三维模型,还能创建复杂的导航和数据可视化,利用WebGL技术标准免去了开发网页专用渲染插件的麻烦,更轻易的创建具有复杂3D结构的网站页面。
2.利用无人机三维现场快速还原建模,实现对建筑物、景点的三维数据的采集、处理分析、生成符合要求的模型。该套数据采集方案是集各家之所长,综合无人机成本和续航和航拍性能的因素,无人机使用大疆的无人机DJI 4 Advanced或DJI 4 Pro,2000万像素的航拍镜头已足够满足
采集清晰具有一定重叠度的三维图像的需求,飞行续航能力在大疆无人机中已经算很强,且这两款无人机价格相对来说不算太高;无人机地面站使用香港科技大学团队开发的Altizure地面站,为无人机规划航线预设飞行任务,经过之前多次测试,Altizure是目前市面上多款地面站中最适合设定无人机采集三维数据的任务的地面站,采集面积可以设很大,而且相比其他地面站Altizure具有重新载入上一次中断任务的功能、接着上一次未完成的飞行计划,这对大面积采集景点数据十分有帮助;数字三维建模软件使用Contexcapture4.4,能够较好地将采集到的数据进行处理分析,生成满足后期应用要求的且数据是b3dm格式的重建项目,且支持大规模数据并行运算的处理形式、提高了运算效率;考虑到现如今谷歌地球的三维模型是利用卫星和高飞航拍建模出来的2.5D而并非3D模型,做出来的模型效果并不是特别好,而且因为精度问题,一些重要建筑是需要通过人工作业;如果既要高精度又非人工进行三维建模,则需要用到雷达扫描进行建模,成本很高,很难推广到普通的商用。这套三维数据采集、分析处理、最终生成满足后期应用要求模型的方案,是经多次试验得出的结果,具有操作流程简单、效率高、人工成本低、经济性好等特点;
- 利用国外开源Cesium项目,cesium开源项目既可用于商业也可用于非商用,是一个免费开放的项目,该发明应用是在Cesium项目的基础上进一步进行开发,做成一个能投入具体实用、解决目前民航界旅客体验问题的应用。在前人的已有的底层基础上进行开发,站在巨人肩上,避免了重复造轮,省去了许多不必要的开发成本;
- 将无人机三维建模后的数据模型导入该应用,在该应用上进行展示,从另一种角度来说,这也相当于是个三维数据发布平台,目前市面上的在线的三维模型数据发布展示平台出名的且使用人数较多的几个是Sketchfab、Altizure、wish3D,但是这几个平台能够提供的功能仅仅是单独的三维模型的展示,很难实现具体应用,也并不能达到模拟观光游览旅游的效果。而该应用可以将多个建筑风景的三维模型在同一个容器中展示,并附带许多其他实用的功能,具备实用性。
- 提供了航线跟随功能,为了更好的给旅客显示他们所乘坐飞机的位置,该应用调用了浏览器的地理定位API后,不仅仅将飞机的经纬度高度速度等参数显示出来,而且还将飞机在地球上具体位置在三维空间中标注出来。随着飞机位置变化,标注点也随着变化,而虚拟游览视角会随着标注点的变化而变化,随着飞机的移动游览视角也会发生移动。这实际上是给旅客一个与以往不同的视角,观察自己乘坐的飞机的具体位置、观赏飞机周围的风景、以及地面的景色。
- 为了更好的方便旅客在飞机上模拟观光游览过程中探索其他未知环境、观赏各处感兴趣的风景,针对这一需求,为应用添加了镜头跟随飞机与取消跟随的功能,取消跟随即是自由探索的视角,方便旅客看飞机周围的风景、探索不同的环境;
为了避免自由探索后找不到飞机位置,相应的还提供镜头锁定飞机位置的功能。
- 可在虚拟三维风景及建筑上添加新的实体,例如标注,标注点开后显示信息栏,方便旅客了解该地的信息;另外适当的时候还可在虚拟地球地面添加广告牌,引入少量广告商,带来新的盈利点;
8.开源ceisum项目,三维建模,无人机,民航,空中观光游览,几个本风马牛不相及的事情,在航空WiFi逐渐开放的大背景大趋势下,结合到一起却能产生1+1>2的效果。即可提高航空公司的飞行服务质量,也可提高旅客飞行体验,另外也可以带来巨大经济价值,商业潜力不可小觑;
3、本项目的有益效果
1.在浏览器里更流畅地展示3D场景和三维模型,创建复杂的导航和数据可视化,免去了开发网页专用渲染插件的麻烦,更轻易的创建具有复杂3D结构的网站页面。
2.具有操作流程简单、效率高、人工成本低、经济性好。
3.在前人的已有的底层基础上进行开发,站在巨人肩上,避免了重复轮子,省去了许多不必要的开发成本;
4.达到可以投入实际使用的模拟观光游览旅游效果。
5.更好的给旅客显示他们所乘坐飞机的位置,给旅客一个与众不同的视角,观察自己乘坐的飞机位置,以及飞机周围的环境。
6.提供自由探索的视角,方便旅客看飞机下面对应的三维山水风景;以及更快速的找到并锁定自己的飞机;
7.标注方便旅客了解该地的信息,广告牌引入广告商,带来新的盈利点;
8.该发明集齐各家所长,能够解决用户实际需求,帮助航空公司解决实际问题,为社会带来新的商业价值。
4、具体实施例:
原文地址:http://blog.51cto.com/12983244/2111101