


全文預(yù)覽已結(jié)束
下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
王東甫1 ,侯文廣2( 1.廣東省電力設(shè)計(jì)研究院 , 廣東 廣州 510600; 2.武漢大學(xué) 遙感信息工程學(xué)院, 湖北 武漢 430079)摘 要: 介紹基于O penGL的點(diǎn)云數(shù)據(jù)的顯示與更新, 主要針對(duì)點(diǎn)云數(shù)據(jù)的前期處理。給出了三維場(chǎng)景繪制、雙緩存技術(shù)的運(yùn)用、坐標(biāo)轉(zhuǎn)換等過程及部分實(shí)現(xiàn)代碼。關(guān)鍵詞: 點(diǎn)云; O penGL; 交互操作;動(dòng)態(tài)更新Display and Updating of Point Cloud Data Based on OpenGLWANG Dong fu1, HOU We ng ua ng 2( 1.Guangdong Electric Power Design Institute, Guangzhou 510600, China;2.School of Remote Sensing and Information Engineering,Wuhan University, Wuhan 430079, China)Abstr act : In order to deal with the data of point cloud, the ways of display and updating based on OpenGLhave been introduced. The paper provides process and parts of program including drawing 3D scene, application of double buffer technique, transformation of coordination etc.Key wor ds: point cloud; OpenGL; mutual operation;dynamic updating激光掃描系統(tǒng)與結(jié)構(gòu)光測(cè)量系統(tǒng)正越來越廣泛地用于工業(yè)生產(chǎn)各個(gè)方面, 這兩種系統(tǒng)所提供主要數(shù)據(jù) 是具有三維空間坐標(biāo)的點(diǎn)云。在一些比較高檔的激光 掃描系統(tǒng)中, 提供配套應(yīng)用軟件或二次開發(fā)軟件包, 使得用戶能夠?qū)υ键c(diǎn)云數(shù)據(jù)進(jìn)行可視化管理。但是 有多種中低檔激光掃描系統(tǒng)和自行開發(fā)的結(jié)構(gòu)光測(cè)量 系統(tǒng)沒有相應(yīng)的后期可視化處理軟件。在多數(shù)情況 下, 這些系統(tǒng)所提供的原始點(diǎn)云數(shù)據(jù)是通過市場(chǎng)上已 有 三 維 建 模 與 可 視 化 軟 件 進(jìn) 行 管 理 , 如 AutoCAD、3DMax等。三維模型和進(jìn)行三維實(shí)時(shí)交互。本文主要針對(duì)前期據(jù)的簡(jiǎn)單處理, 如空間坐標(biāo)三維顯示、點(diǎn)云的旋轉(zhuǎn)平移、縮放以及點(diǎn)云數(shù)據(jù)的刪除與更新等。三維場(chǎng)景繪制的初始化1在Windows環(huán)境下,三維場(chǎng)景繪制程序必須先行圖形渲染場(chǎng)景( Rendering Context) 的初始化,括設(shè)置繪圖格式、調(diào)色板、映射模式等其它圖形性。像素格式的設(shè)定是設(shè)置繪圖格式的第一步操作OpenGL 通 過 設(shè) 置 PIXSELFORMATDESCRIPTOR 結(jié)的 各 項(xiàng) 參 數(shù) 來 設(shè) 置 像 素 格 式 , 其 中 包 括 顏 色 模( RGBA 顏色索引) 、單 雙緩存、顏色深度及其它 些屬性, Win32通常的設(shè)定如下:PIXELFORMATDESCRIPTOR pfd = sizeof ( PIXELFORMATDESCRIPTOR) , /p結(jié)構(gòu)的大小由于這些軟件本身針對(duì)性不強(qiáng),對(duì)僅僅具有三維空間坐標(biāo)的點(diǎn)云數(shù)據(jù)進(jìn)行可視化管理時(shí)存在諸多不便,因此本文提出一種簡(jiǎn)單實(shí)用方法基于OpenGL的點(diǎn) 云數(shù)據(jù)的顯示與管理。OpenGL是目前流行的開放式的 三維圖形標(biāo)準(zhǔn), 提供了一種圖形與硬件的接口。它包括了120余個(gè)圖形函數(shù),開發(fā)者可以用這些函數(shù)來建立收稿日期: 2005- 04- 02!Analyst Raster Calculator, 輸 入 表 達(dá) 式int ( Calcula-參考文獻(xiàn)tion ) , 點(diǎn)擊Evaluate,生成新的圖層Suitbility。劉云越, 劉源月. 城市生活垃圾衛(wèi)生填埋場(chǎng)選址綜合 1析 J .中國(guó)測(cè)試技術(shù), 2004, 30 ( 5) : 7475結(jié)語3顏維安, 杭德榮. 用地理信息系統(tǒng)評(píng)價(jià)垃圾填埋場(chǎng)選 2的研究 J .中國(guó)衛(wèi)生工程學(xué), 2003, 2 ( 3) : 133134本文利用GIS的建模思想,借助其制圖功能和空劉云斌.城市生活垃圾填埋場(chǎng)選址模糊綜合評(píng)判系統(tǒng) M 3間分析功能將選址 中 的 限 制 性 因 子 制 作 成圖地理空間信息2006 年 38 1,PFD_DRAW_TO_WINDOW |/版本號(hào)/支持在窗口中基于雙緩存技術(shù)的動(dòng)態(tài)操作3在OpenGL中,實(shí)現(xiàn)三維場(chǎng)景的動(dòng)態(tài)操作操作是繪圖通過雙緩存技術(shù)實(shí)現(xiàn)的。當(dāng)三維模型在窗口中執(zhí)行旋/支持 OpenGL/雙緩存模式PFD_SUPPORT_OPENGL |PFD_DOUBLEBUFFER, PFD_TYPE_RGBA,轉(zhuǎn)、平移、縮放等操作時(shí),程序分別在后臺(tái)緩存和前臺(tái)緩存中進(jìn)行繪制, 需要更新時(shí)則交換前后臺(tái)緩存,從而實(shí)現(xiàn)連續(xù)不斷的動(dòng)態(tài)效果。在視圖類的OnDraw顏 色 模/RGBA式() 函數(shù)中調(diào)用雙緩存技術(shù),在后臺(tái)緩存和前臺(tái)緩存/24位顏色深度/忽略顏色位/沒有非透明度緩24,0, 0, 0, 0, 0, 0,0,繪制的中間加入相應(yīng)的操作代碼。在堆棧中實(shí)現(xiàn)對(duì)模型的旋轉(zhuǎn)、平移、縮放的代碼如下:glDrawBuffer (GL_BACK) ; /指 定 在 后 臺(tái) 緩 存 中 繪制glMatrixMode (GL_MODELVIEW) ; /初始化變 換 矩陣glLoadIdentity () ;存/ 忽略移位位/ 無累加緩存/ 忽略累加位/ 32 位深度緩存/ 無模板緩存/ 無輔助緩存/ 主層/ 保留/ 忽略層0,0,0, 0, 0, 0,32,0,0, PFD_MAIN_PLANE,0,0, 0, 0glClear (GL_COLOR_BUFFER_BIT|GL_DEPTH_BUFFER_BIT) ;glTranslatef (m_fxtran/20,m_fytran/20,0.0f) ; /進(jìn)行 平移變換glRotatef (m_fxrot,1.0,0.0,0.0) ; /進(jìn)行旋轉(zhuǎn)變換glRotatef (m_fyrot,0.0,1.0,0.0) ;glRotatef (m_fzrot,0.0,0.0,1.0) ;glScalef ( m_fscale/5,m_fscale/5,m_fscale/5) ; /進(jìn) 行縮放變換取 得 此 數(shù) 據(jù) 結(jié) 構(gòu) 后 通 過 ChoosePixelFomatSetPixelFormat () 兩個(gè)函數(shù)選擇設(shè)定像素格式。和()在以VisualC+平臺(tái)建立的工程中, 啟動(dòng)ClassWiz-ard, 并在視圖類中添加OnCreate ()、OnSize ()、OnDe-/將矩陣壓入堆棧glPushMatrix () ;RenderScene () ;/調(diào)用繪制點(diǎn)云的函數(shù)glPopMatrix () ; /將矩陣彈出堆棧glFinish () ;SwapBuffers (wglGetCurrentDC () ;/交 換 前 后 緩stroy () 三個(gè)消息響應(yīng)函數(shù)。其中OnCreate ()函數(shù)執(zhí)行場(chǎng)景的初始化,前述的設(shè)置像素格式操作均在此函數(shù)中進(jìn)行。通過OnSize () 消息響應(yīng)函數(shù),當(dāng)窗口大小發(fā)生變化時(shí), 相應(yīng)改變視口大小和投影變換方式。On-Destroy () 函數(shù)相應(yīng)退出程序操作并釋放內(nèi)存。存glDrawBuffer (GL_FRONT) ; /繪制前景以上操作均是在OnDraw () 函數(shù)中實(shí)現(xiàn)的, 為實(shí) 現(xiàn) 人 機(jī) 交 互 式 的 動(dòng) 態(tài) 操 作 , 只 需 要 響 應(yīng)OnLButton- Down ( ) ,OnMouseMove ( ) ,OnKeyDown ( ) 等 函 數(shù) ,在其中加入旋轉(zhuǎn)、平移、縮放的量即可, 在此不給出詳細(xì)代碼。點(diǎn)云三維空間坐標(biāo)的載入點(diǎn)云三維空間坐標(biāo)數(shù)據(jù)必須在窗口創(chuàng)建完成之后2一次性載入內(nèi)存, 因?yàn)閯?dòng)態(tài)操作需要反復(fù)進(jìn)行繪制,如果每次繪制都調(diào)用坐標(biāo)信息,勢(shì)必造成程序運(yùn)行速度的減慢和內(nèi)存的極大消耗。在此定義了2種點(diǎn)的結(jié)構(gòu),們分別是:typedef struct float x; float y; float z; Cood;typedef struct Cood Pt; BOOL bSel; Points;它點(diǎn)云數(shù)據(jù)的動(dòng)態(tài)刪除與更新點(diǎn)云數(shù)據(jù)的刪除與更新是前期數(shù)據(jù)處理的核心。 因?yàn)闊o論哪種激光掃描系統(tǒng)得到的數(shù)據(jù)都含有大量的 冗余信息, 對(duì)所有點(diǎn)云數(shù)據(jù)進(jìn)行可視化, 并選擇刪除4顯見其中第一種為點(diǎn)的三維空間坐標(biāo), 第二種定那些明顯是多余信息的數(shù)據(jù),既直觀也給后續(xù)處理減義了一個(gè)布爾型的標(biāo)志,用作標(biāo)識(shí)點(diǎn)云數(shù)據(jù)在刪除與少了工作量, 最重要的是可以減小后續(xù)處理出錯(cuò)的可能性。更新時(shí)的狀態(tài), 當(dāng)bSel為TRUE時(shí)表示點(diǎn)已經(jīng)被選中,需要?jiǎng)h除更新。實(shí)現(xiàn)點(diǎn)云數(shù)據(jù)能夠動(dòng)態(tài)交互式的刪除與更新,及 到 從 三 維 空 間 坐 標(biāo) 到 屏 幕 二 維 坐 標(biāo) 的 映 射 ,OpenGL的成像機(jī)理。這是一個(gè)極其復(fù)雜的過程,涉即 涉調(diào)用OnInitiaUpdate ()函數(shù)裝載點(diǎn)云三維空間坐標(biāo),由于得到的各種初始空間坐標(biāo)的坐標(biāo)系統(tǒng)不一致性, 為程序的通用性考慮,需在裝載時(shí)進(jìn)行坐標(biāo)的重及 到 多 種 矩 陣 運(yùn) 算 和 一 些 攝 影 測(cè) 量 的 知 識(shí) 。 好 在心化處理,同時(shí)設(shè)定bSel表識(shí)為FALSE,表示初始載OpenGL提 供 了 多 種 查 詢 函 數(shù) ,并 在 實(shí) 用 庫( glu.h)入的點(diǎn)全部未被選中。兩種坐標(biāo)之間的轉(zhuǎn)換。圖1坐標(biāo)轉(zhuǎn)換原理GLdoubleGLdoubleGLintmodelview 16 ;projection 16 ;viewport 4 ;圖2含有大量冗余數(shù)據(jù)的車門點(diǎn)云圖glGetDoublev (GL_MODELVIEW_MATRIX, mod- elview) ; /獲取模型矩陣glGetDoublev( GL_PROJECTION_MATRIX, pro- jection) ; /獲取投影矩陣glGetIntegerv (GL_VIEWPORT, viewport) ; /獲取 視口矩陣欲選擇部分點(diǎn)執(zhí)行刪除操作時(shí), 用鼠標(biāo)在屏幕 上選擇一個(gè)范圍, 并調(diào)用gluProject 函數(shù)進(jìn)行坐標(biāo)轉(zhuǎn)換。在獲取了各點(diǎn)屏幕坐標(biāo)后,判斷是否在鼠標(biāo)選取的范圍內(nèi),如在范圍內(nèi)則將bSel 設(shè)置為TRUE,表示這是待刪除點(diǎn)。更新圖像后, 刪除點(diǎn)不會(huì)執(zhí)行繪制。需要輸出更新后的點(diǎn)云數(shù)據(jù)時(shí), 只用判斷點(diǎn)的bSel,當(dāng)為FALSE值的時(shí)才輸出 ( 圖2, 圖3, ) 。結(jié)語5圖3經(jīng)過刪除和更新后的車門點(diǎn)云圖在本文中,我們給出了一種簡(jiǎn)單實(shí)用的點(diǎn)云數(shù)據(jù)的前期可視化操作與管理的方法。針對(duì)初始的僅 2張祖勛, 蘇國(guó)中, 鄭順義,等.O penGL成像機(jī)理及其具有的三維空間坐標(biāo)的點(diǎn)云數(shù)據(jù),實(shí)現(xiàn)了模型的動(dòng)攝影測(cè)量方位元素的相關(guān)分析 J .武漢大學(xué)學(xué)報(bào)(態(tài)交互式操作, 并支持點(diǎn)云的動(dòng)態(tài)刪除與更新。文中提到的基于OpenGL的三維動(dòng)態(tài)操作的實(shí)現(xiàn) 方法, 如渲染場(chǎng)景、雙緩存技術(shù)、坐標(biāo)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 檢測(cè)公司委托協(xié)議書范本
- 互聯(lián)網(wǎng)企業(yè)典當(dāng)質(zhì)押貸款協(xié)議
- 民用建筑租賃合同范本及詳細(xì)條款
- 轉(zhuǎn)租合同協(xié)議書樣板范本
- 免除房款協(xié)議書范本
- 車輛牌照租賃與綠色出行激勵(lì)政策合同
- 甜品店品牌區(qū)域代理合作協(xié)議
- 綠色制造廠房租賃安全與節(jié)能減排協(xié)議
- 財(cái)務(wù)結(jié)算財(cái)務(wù)擔(dān)保合同范本
- 住宅小區(qū)新能源汽車充電樁車位租賃合同
- JBT 11699-2013 高處作業(yè)吊籃安裝、拆卸、使用技術(shù)規(guī)程
- 家長(zhǎng)會(huì)課件:初中七年級(jí)家長(zhǎng)會(huì)課件
- 廈門大學(xué)2023年826物理化學(xué)考研真題(含答案)
- 市政工程施工安全臺(tái)帳范本12本(含內(nèi)容)
- 《食管胃底靜脈曲張》課件
- 周圍性面癱的分期治療技術(shù)課件
- AutoCAD 2020中文版從入門到精通(標(biāo)準(zhǔn)版)
- 初中英語2023年中考專題訓(xùn)練任務(wù)型閱讀-判斷正誤篇
- 2022年江西南昌高新技術(shù)產(chǎn)業(yè)開發(fā)區(qū)人民檢察院聘用制檢察輔助人員招聘考試真題
- 小學(xué)安全隱患排查表
- 學(xué)校財(cái)務(wù)人員述職報(bào)告范文
評(píng)論
0/150
提交評(píng)論