Potree點云可視化卡片開發指南

03369c72a7ca9c283c8575772fa78ffa.png

本文由ScriptEcho平臺提供技術支持

項目地址:傳送門

Potree點云可視化卡片開發指南

應用場景介紹

Potree點云可視化卡片是一款基于Potree庫開發的Vue組件,它允許用戶在Web應用程序中輕松嵌入和交互式可視化大規模點云數據。該卡片特別適用于需要在Web環境中展示和分析三維空間數據的應用場景,例如建筑、測繪、地理信息系統(GIS)和虛擬現實(VR)。

代碼基本功能介紹

Potree點云可視化卡片的核心功能包括:

  • 加載和顯示點云數據:該卡片支持加載多種格式的點云數據,包括LAS、LAZ和PLY。
  • 交互式點云操作:用戶可以通過平移、旋轉和縮放手勢與點云交互,以獲得不同的視角和細節。
  • 場景設置:該卡片提供了一系列場景設置選項,例如視場(FOV)、點云預算和背景顏色,允許用戶根據需要定制點云顯示。
  • 屬性信息查看:用戶可以單擊點云中的點以查看其屬性信息,例如位置、顏色和強度。

功能實現步驟及關鍵代碼分析說明

加載Potree庫和資源

首先,需要加載Potree庫和必要的資源,包括CSS樣式表和JavaScript腳本。這些資源可以通過CDN或本地文件的方式加載。

const styleUrls = [
  '/sfc/potree/build/potree/potree.css',
  '/sfc/potree/libs/jquery-ui/jquery-ui.min.css',
  '/sfc/potree/libs/openlayers3/ol.css',
  '/sfc/potree/libs/spectrum/spectrum.css',
  '/sfc/potree/libs/jstree/themes/mixed/style.css',
]
const jqJsUrls = [
  '/sfc/potree/libs/jquery/jquery-3.1.1.min.js',
  '/sfc/potree/libs/jquery-ui/jquery-ui.min.js',
]
const jsUrls = [
  '/sfc/potree/libs/spectrum/spectrum.js',
  '/sfc/potree/libs/other/BinaryHeap.js',
  '/sfc/potree/libs/tween/tween.min.js',
  '/sfc/potree/libs/d3/d3.js',
  '/sfc/potree/libs/proj4/proj4.js',
  '/sfc/potree/libs/openlayers3/ol.js',
  '/sfc/potree/libs/i18next/i18next.js',
  '/sfc/potree/libs/jstree/jstree.js',
  '/sfc/potree/build/potree/potree.js',
  '/sfc/potree/libs/plasio/js/laslaz.js',
]

await Promise.all(styleUrls.map((styleUrl) => loadStyle(styleUrl)))
await Promise.all(jqJsUrls.map((jsUrl) => loadJavascript(jsUrl)))
await Promise.all(jsUrls.map((jsUrl) => loadJavascript(jsUrl)))

初始化Potree Viewer

加載資源后,可以使用Potree.Viewer類初始化Potree Viewer。Viewer負責管理點云的可視化和交互。

function initPotree() {
  window.viewer = new Potree.Viewer(
    document.getElementById('potree_render_area'),
  )
}

設置Viewer屬性

接下來,可以設置Viewer的各種屬性,例如視場(FOV)、點云預算和背景顏色。

viewer.setEDLEnabled(true)
viewer.setFOV(60)
viewer.setPointBudget(1_000_000)

加載點云數據

可以使用Potree.loadPointCloud()方法加載點云數據。該方法接受點云文件的URL和一個回調函數作為參數。

Potree.loadPointCloud(
  'https://scriptecho.cn/mschuetz/potree/resources/pointclouds/weiss/chiller/cloud.js',
  'Chiller',
  (e) => {
    let scene = viewer.scene
    let pointcloud = e.pointcloud
    scene.addPointCloud(pointcloud)
  },
)

添加點云到場景

加載點云數據后,可以將其添加到場景中。場景是Potree中管理點云和相機位置的容器。

scene.addPointCloud(pointcloud)

設置點云屬性

可以設置點云的各種屬性,例如點大小、形狀和顏色。

let material = pointcloud.material
material.size = 1
material.pointSizeType = Potree.PointSizeType.ADAPTIVE
material.shape = Potree.PointShape.SQUARE

設置相機位置和方向

可以使用Viewer的view屬性設置相機的位置和方向。

scene.view.position.set(26.94, -0.72, 21.52)
scene.view.lookAt(5.5, 6.86, 8.75)

總結與展望

開發Potree點云可視化卡片的過程是一個學習和探索的旅程。通過了解Potree庫的API和功能,我們能夠創建交互式且功能強大的點云可視化工具。

未來,該卡片功能可以進一步拓展和優化,例如:

  • 集成其他點云格式的支持

  • 添加點云切片功能以提高大規模點云的加載速度

  • 提供更多的場景設置選項,例如照明和紋理貼圖

  • 開發更多交互工具,例如測量和注釋

    更多組件:

    id-4ce17fa388108117d59faad17e65e5b7.png
id-f61a1230d82b049b7b96ac2f7525b664.png

獲取更多Echos

本文由ScriptEcho平臺提供技術支持

項目地址:傳送門

微信搜索ScriptEcho了解更多

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,412評論 6 532
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,514評論 3 416
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,373評論 0 374
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,975評論 1 312
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,743評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,199評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,262評論 3 441
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,414評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,951評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,780評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,983評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,527評論 5 359
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,218評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,649評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,889評論 1 286
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,673評論 3 391
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,967評論 2 374

推薦閱讀更多精彩內容