1. 程式人生 > >民航客機空中觀光遊覽虛擬三維實景應用方法及系統

民航客機空中觀光遊覽虛擬三維實景應用方法及系統

地形圖 計算機 廣告 質量 layer .cn 變化 精度問題 代碼

(一)背景技術:

這是一項提升民航旅客飛行體驗的一種新的應用,根據目前國內民航旅客飛行體驗狀況分析,旅客在飛行過程中,完全相當於是與世界失聯的狀態。旅客不清楚自己目前到底飛到了哪個位置,部分旅客想看飛機下面的風景也因為飛機巡航高度,座艙位置等等因素而受限制。經調查分析,得到一個有趣的現象是,在起飛著陸那個一小段時間裏,大多數的旅客都會伸著頭,看窗外的風景、以及飛機下面的建築等等。這說明人們普遍還是想從不同的角度看看地面的風景、看看自己生活的

城市。另外,在飛行過程中,實際上大多數人還是無聊的,只有少部分人看電影看書。即使在航空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模型,做出來的模型效果並不是特別好,而且因為精度問題,一些重要建築是需要通過人工作業;如果既要高精度又非人工進行三維建模,則需要用到雷達掃描進行建模,成本很高,很難推廣到普通的商用。這套三維數據采集、分析處理、最終生成滿足後期應用要求模型的方案,是經多次試驗得出的結果,具有操作流程簡單、效率高、人工成本低、經濟性好等特點;

  1. 利用國外開源Cesium項目,cesium開源項目既可用於商業也可用於非商用,是一個免費開放的項目,該發明應用是在Cesium項目的基礎上進一步進行開發,做成一個能投入具體實用、解決目前民航界旅客體驗問題的應用。在前人的已有的底層基礎上進行開發,站在巨人肩上,避免了重復造輪,省去了許多不必要的開發成本;

  2. 將無人機三維建模後的數據模型導入該應用,在該應用上進行展示,從另一種角度來說,這也相當於是個三維數據發布平臺,目前市面上的在線的三維模型數據發布展示平臺出名的且使用人數較多的幾個是Sketchfab、Altizure、wish3D,但是這幾個平臺能夠提供的功能僅僅是單獨的三維模型的展示,很難實現具體應用,也並不能達到模擬觀光遊覽旅遊的效果。而該應用可以將多個建築風景的三維模型在同一個容器中展示,並附帶許多其他實用的功能,具備實用性。

  3. 提供了航線跟隨功能,為了更好的給旅客顯示他們所乘坐飛機的位置,該應用調用了瀏覽器的地理定位API後,不僅僅將飛機的經緯度高度速度等參數顯示出來,而且還將飛機在地球上具體位置在三維空間中標註出來。隨著飛機位置變化,標註點也隨著變化,而虛擬遊覽視角會隨著標註點的變化而變化,隨著飛機的移動遊覽視角也會發生移動。這實際上是給旅客一個與以往不同的視角,觀察自己乘坐的飛機的具體位置、觀賞飛機周圍的風景、以及地面的景色。

  4. 為了更好的方便旅客在飛機上模擬觀光遊覽過程中探索其他未知環境、觀賞各處感興趣的風景,針對這一需求,為應用添加了鏡頭跟隨飛機與取消跟隨的功能,取消跟隨即是自由探索的視角,方便旅客看飛機周圍的風景、探索不同的環境;

為了避免自由探索後找不到飛機位置,相應的還提供鏡頭鎖定飛機位置的功能。

  1. 可在虛擬三維風景及建築上添加新的實體,例如標註,標註點開後顯示信息欄,方便旅客了解該地的信息;另外適當的時候還可在虛擬地球地面添加廣告牌,引入少量廣告商,帶來新的盈利點;

8.開源ceisum項目,三維建模,無人機,民航,空中觀光遊覽,幾個本風馬牛不相及的事情,在航空WiFi逐漸開放的大背景大趨勢下,結合到一起卻能產生1+1>2的效果。即可提高航空公司的飛行服務質量,也可提高旅客飛行體驗,另外也可以帶來巨大經濟價值,商業潛力不可小覷;

3、本項目的有益效果

   1.在瀏覽器裏更流暢地展示3D場景和三維模型,創建復雜的導航和數據可視化,免去了開發網頁專用渲染插件的麻煩,更輕易的創建具有復雜3D結構的網站頁面。

   2.具有操作流程簡單、效率高、人工成本低、經濟性好。

   3.在前人的已有的底層基礎上進行開發,站在巨人肩上,避免了重復輪子,省去了許多不必要的開發成本;

   4.達到可以投入實際使用的模擬觀光遊覽旅遊效果。

   5.更好的給旅客顯示他們所乘坐飛機的位置,給旅客一個與眾不同的視角,觀察自己乘坐的飛機位置,以及飛機周圍的環境。

   6.提供自由探索的視角,方便旅客看飛機下面對應的三維山水風景;以及更快速的找到並鎖定自己的飛機;

   7.標註方便旅客了解該地的信息,廣告牌引入廣告商,帶來新的盈利點;

   8.該發明集齊各家所長,能夠解決用戶實際需求,幫助航空公司解決實際問題,為社會帶來新的商業價值。

4、具體實施例:

https://foundspace.cn

民航客機空中觀光遊覽虛擬三維實景應用方法及系統