一、 簡介
基於web端的三維模型展示,這裡僅介紹three.js和potree。
three.js 是一款基於webgl的執行在瀏覽器中的 3d 開源引擎,用它建立各種三維場景。它類似於meshlab開源中的vcglib庫,後者是基於opengl進行封裝的3d開源庫,本質是相同的。所以,基於three.js會比較靈活,模型顯示不失真。但對初學者來說,學習難度較大。另外,它沒有對模型網格訪問與顯示做什麼優化,在模型檔案較大時,在瀏覽器開啟時會等待較長時間。
potree是一種基於webgl的點雲資料視覺化解決方案,包含點雲資料轉化,以及進行視覺化的原始碼。該解決方案的主要優勢在於對點雲資料進行了多尺度的管理,在資料傳輸和視覺化上都做了優化。它是一套開源的系統,基於three.js,由奧地利維也納理工大學的harvest4d專案貢獻。
二、 軟體環境
2.1 potree
2.2 potreeconverter
2.3 potree學習
/blob/master/docs/getting_started.md
2.4 three.js
2.5 three.js學習
三、 要點
3.1 轉換
potree在web上展示的點雲檔案,支援binary,las和laz三種資料格式。所以,對其它的三維模型檔案格式(例如:ply),需通過potreeconverter工具進行轉換。
如圖一所示,經過命令列形式轉換後,會生成下面內容:
整體資源打包,並生成乙個靜態html展示主頁,方便瀏覽。
圖一3.2 io支援
potree converter支援格式:
3.3 速度
採用了特殊的點雲檔案壓縮與分割處理,以及逐漸渲染方式,速度還是明顯很快的。經本人測試:potree官網提供的多個demo顯示,最長時間為20秒顯示完畢,一般性的都是10秒內顯示完畢。假設如果是在國內網訪問,理論上速度應該更快些。
3.4 瀏覽器支援
對目前主流的ie、chrome和firefox都支援,本人已在chromev 57.0.2970.0和microsoftedgehtml 14.14393測試通過。
3.5 操作支援
支援滑鼠左鍵旋轉、滾輪縮放、右鍵平移。另外,還提供強大的屬性操作介面,例如:角測量、高度測量、距離測量、面積測量、體積測量、多視角觀察等等。除了直接對模型進行編輯修改外,基本上其它功能都有。
3.6 中文支援
如圖二所示屬性操作介面,目前頁面是可以支援中文,但引用的i18next庫好象不支援中文,導致中文測試時顯示為亂碼。
圖二四、 web展示效果
經過在本地搭建web伺服器後,進行測試(例如:http://localhost/potree/test.html)。下面是一些potree在web上顯示效果與meshlab模型顯示的對比,實際上也相當於基於點的模型(點雲)檔案和原始三維模型(例如:ply)進行比較。
備註:採用potree converter進行轉換時,如果調整某些引數,理論上生成的點雲檔案應該會更清晰一些。
圖三五、 基於potree的解決方案
思路:在存放三維模型檔案的伺服器,存在乙個後台執行的程式:定時讀取新的三維模型檔案、呼叫potreeconverter控制台程式自動轉換模型檔案到potree支援的目錄、關閉potreeconverter控制台程式、將生成potree目錄資訊拼接成http**(例如:http://localhost/potree/test.html,其中localhost將被真實的網域名稱或ip取代),最後更新到關聯資料庫中。此後台程式將包裝成service api的形式(例如:restful方式)以供呼叫。當服務層每上傳乙個模型檔案成功後,呼叫該後台service api介面來獲到生成的**,將該**隨原客戶端資訊一起更新到資料庫中。這種由服務層直接拉的方式,可避免定時轉換問題、動態監測模型檔案、以及遠端更新資料庫的問題。
例如:potreeconverter控制台轉換命令:
potreeconverterd:\meshlab_model\20150602112021.ply –o c:\xampp\htdocs\potree –generate-page testcabinet
以下是我as格式的轉換命令
.\potreeconverter.exe e:\origindata\qinghai\las -o e:\origindata\qinghai\las --generate-page web --output-format las --material intensity
轉換後效果如下
拼接而成的**:
http://localhost/potree/testcabinet.html (本地測試用)
圖四六、 總結
經過一系列的測試、比較與分析,potree在速度方面已經基本達到要求。顯示質量方面略有不足,主要原因是它是基於點雲模型作為基礎來顯示,所以本身模型質量就比不上原始三維模型。不過,整體上看顯示效果還是差不多的,作為在瀏覽器上能快速**地目的,可以滿足此需求。
學習後總結,總結後再學習
學習後總結,總結後再學習 2010年畢業以來,讀了幾百本書籍,包括it技術 管理 歷史 營銷 金融 心理等等,在讀某商學院mba一年後感覺有些東西還是要寫寫,除了能增加自己對某些知識和理論的理解外,也許其他人也碰巧想關注一下,了解這方面的東西。我所寫的都是一些簡單的概念層面的解釋,不會做太深入的闡述...
學習總結 近期acm學習的總結
開學已經乙個月了,對acm的學習也乙個月了,做了一下總結 對自己不好的地方的反省 1.開學一開始學的是stl,不得不說stl是乙個很好的東西,熟練的運用stl大大的減少了 量,也使演算法容易實現。但是我在用stl後使自己產生了一種惰性思維。在兩個星期的stl練習後,我發現自己變得越來越懶,不願意自己...
深度學習學習總結
北京大學人工智慧實踐 tensorflow2.0 學習1 6章 複習1 4章 第4章需要寫乙個部落格 寫4,5,6章 吳恩達深度學習第四步 卷積神經網路 學習1 2周 複習1 2周 殘差網路和inception網路不太懂,目前用不到 三四周是目標定位,人臉識別,神經風格轉換目前用不到 油管最新最熱t...