張泊平,女,碩士,副教授,中國計算機學會高級會員,畢業于鄭州大學電子信息工程學院。現任許昌學院信息工程學院數字媒體技術系主任。長期從事數字媒體技術、虛擬現實等領域的科研和教學工作。近年來主持省部級項目10項,發表學術論文30余篇,出版專著2部。獲得河南省教學大獎賽一等獎,獲得河南省優秀教師、教學標兵、優秀青年骨干教師等榮譽稱號。
第3章虛擬現實三維建模技術
在虛擬現實系統中構造一個具有真實感的三維虛擬場景非常重要。這就需要建設三維模型,它是指在三維空間中對場景表面以及地表以上的各種自然與人工地物三維模擬表現,以便產生與真實場景相同體驗、感知與印象的數字景觀。因此,三維場景模型建立的任務,是依據不同類型地物的各自特點,建立能夠反映各自特征的三維模型,以盡可能真實地表現區域真實景觀。
三維場景需要由多種數據來進行構造,包括數字化高程模型、遙感影像數據、二維矢量數據、圖片數據、三維模型數據等。三維場景建造質量的高低直接關系到實時三維漫游的效果。要在計算機中模擬現實世界,就必須構建出在外形、光照、質感等各方面都與真實對象相似的對象模型。
3.1精確三維建模方法
虛擬現實建模技術應用主要是考慮到模型的精確性,為了準確真實地對工程施工過程進行仿真模擬,就必須使虛擬模型滿足工程應用需要的精度。為了獲得足夠精確的DWG 模型,一般采用逆向建模技術進行模型重建。
3.1.1逆向建模技術
逆向建模主要通過三維掃描技術來獲得實體表面的三維點云數據并得到對應點的紋理來構建虛擬現實模型,從而利用計算機技術對虛擬模型進行分析、模擬。逆向建模過程主要包括4個環節,分別是實體工程點云數據采集、點云數據處理、模型重構、模型修飾,如圖31所示。
圖31逆向建模過程
1. 工程點云數據采集
目前,工程點云數據主要有接觸式和非接觸式兩種采集方式。
接觸式主要使用三坐標測量機進行,通用性強,精度相對較高,對所測物體的材質和表面色澤無特殊要求,已經廣泛應用到電子、機械制造、汽車和航空航天等領域。但在測量柔軟物體時有很大局限性,而且會損傷儀器和被測物體,對工作環境要求也很高。
非接觸式主要是利用某種與物體表面發生相互作用的物理現象來獲取實體的三維信息。利用光學原理發展起來的三維測量形狀的方法應用*為廣泛,如三維激光掃描儀投影光柵法、激光線結構光掃描、數字照相系統等方法,以及新出現的切層法、計算機斷層掃描(CT)法等。非接觸式測量具有測量速度快以及不用和實物接觸等優點,在實際中得到廣泛應用,它利用三維激光掃描儀采集點云數據,在進行測點布置時要遵循以下原則。
(1) 掃描區域要在掃描儀控制的角度和量程范圍內。
(2) 測點密度分布均勻、合理。
(3) 每站掃描目標必須有公共區域和明顯的特征點以便后續模型拼接。
(4) 高溫或者大風等天氣不宜進行數據采集。
(5) 在沒有明顯的特征點時可以做合適的站標作為特征點。
(6) 測點*好布置在硬化路面上,保持掃描儀穩定。
虛擬現實理論與實踐第3章虛擬現實三維建模技術2. 三維模型重構
任何測量設備在進行數據采集時,都會有一定的范圍和距離限制,同時由于非掃描目標遮擋,特別是對大型的土建工程進行三維掃描,一次掃描是不可能獲得較為完整的點云數據,因此,就必須對掃描目標進行多次、重復的測量,獲得多組掃描數據結果,利用相關點云處理技術或相關軟件對采集的數據進行拼接、整合、模型接縫處理、非掃描目標點云數據刪除等數據處理,將數據統一到同一坐標系統下,從而構建目標對象的三維點云數據模型。
3. 點云數據處理
目前使用的掃描儀種類繁多,輸出數據的質量參差不齊,因此需要通過編輯以獲得高質量的數據。此外,即使數據的質量很高,仍然需要在曲面重構之前對這些數據進行編輯,一般需要完成包括噪點刪除、數據調整、數據光順、區域修剪、復制、數據密度修改、尖角保留等步驟方可使用,數據處理過程要結合實際情況,同時依賴于操作者的經驗;特別要避免因初始數據改變而造成得形狀扭曲和精度降低等問題。一般要進行以下幾個方面的工作。
(1) 噪點刪除。
噪點大致可分為兩類: *類,掃描目標上的奇異點集;第二類,非掃描目標的點集,即所在目標之外的對象點云數據。在修改*類噪點時,需將奇異點調回至“原位”,而第二類噪點需要做刪除處理。刪除噪點的方法通常是先通過圖形交互,采用手工刪除處理,但此法不適用于數據量大的點云數據處理。除此之外,還可以采用下述方法來刪除噪點。
① 將測量點沿特定方向平移,消除數據波動,修改范圍一般由用戶通過圖形交互設定。
② 考慮兩個連續點之間的角度,若某點與它前一點的角度超過某一規定值,則剔除該點。
③ 把奇異點移到平均位置。
(2) 數據插補。
受測量設備和測量方法的影響,必然產生測量數據點分布密度和范圍不均的結果。
在掃描盲區,缺少測量數據,圖形擬合時容易失真所以在重構模型時需要對數據進行加密、插值,否則會產生較大的波動。因此,對于某些局部數據的不足,可用相鄰點插值和屏幕方式等方法來進行插補。
(3) 數據點精簡。
數據精簡可以根據一定要求精簡測量點的數量來提高點云數據在曲面重構時的效率和質量。精簡方式要根據點云類型加以選擇,*小包圍區域法和等分布密度法適用于網格化點云數據精簡。隨機采樣方法適用于散亂點云數據精簡;而等間距精簡、量精簡等和倍率精簡等方法則適用于掃描線點云和多邊形點云數據精簡。
(4) 數據平滑。
數據平滑通常采用標準平均(Averaging)、高斯(Gaussian)等濾波算法。平均濾波算法采用數據點的統計值的平均值,在消除數據尖楞時效果較好;若要較為完整地保存原始數據形貌,則采用高斯算法較好,因為其對數據的平均化小。實際操作時,需點云質量及以后建模要求靈活選擇濾波算法。
(5) 數據分割。
數據分割是根據實物外形曲面的組成類型,將同一子曲面類型的數據劃分為互不重疊而又特征單一的數據組,為后續模型重建提供方便。目前數據分割方法主要有: 基于邊、面、群簇的方法。
① 基于邊。
主要是根據數據點的局部幾何特性集中檢測到邊界點后對邊界點進行連接,再根據檢測的邊界將整個數據分割為多個獨立的點集。不過,該方法計算量大,過程也相對煩瑣。
② 基于面。
該方法是根據指定的曲面方程通過自下而上或自上而下的方法迭代擬合數據點集。自下而上的方法是從特征點開始擬合,按某種規則不斷加進周圍點;自上而下的方法是假設所有點屬于同一個面,擬合過程中誤差超出要求時,則把原集合分為兩個子集。此方法的難點在于分割閾值的選擇和控制,為了簡化擬合過程可采用直線分割。
③ 基于群簇。
該方法通過群簇技術把局部幾何特征參數相似的數據點聚集為一類,但聚類方法需要預先指定分類的個數,容易出現細碎而片,往往要對碎片進一步處理。
(6) 冗余數據。
隨著測量精度要求的提高,三維激光掃描儀獲取的點云數據包含了大量的冗余數據,必須對數據進行篩選和壓縮處理。一般的篩選和壓縮方法就是設定一個*小距離,然后沿掃描線方向比較相鄰兩點的距離,小于閾值的就刪除;還可以連接掃描線首末兩點,從中間點中選取與兩點距離*接近的點作為中斷點,然后以*點與中間點之間、中間點與*后一點之間重復上述過程,直到所求的距離小于設定閾值,然后再將點重新排序即可。斜率法和曲率不連續法也常用作數據點的判斷篩選方法。
4. 三維模型數據導出與AutoCAD導入
目前通過三維激光掃描儀獲得的海量點云數據信息,可以通過掃描儀本身的軟件進行數據的格式轉換,轉換到的格式如XYZRGBI、3DV、BLF、IVA、PTX、RAW、XYZ等格式。本系統針對海量點云數據的轉換格式XYZRGBI、3DV、BLF、IVA、PTX、RAW、XYZ分別進行了的格式研究,進行轉換生成DXF標準格式,提供AutoCAD使用。其轉換流程如圖32所示。
圖32三維模型轉換流程3.1.2AutoCAD等其他軟件三維建模
基于CAD的建模方法是采用AutoCAD、3ds Max等建模軟件建立三維城市模型,三維模型已經成為三維場景的一個重要數據來源。一個三維模型由一個或多個多邊形模型構成,它能夠表達建筑物詳細的幾何特征。在CAD系統中,物體三維模型的信息是通過對圖形進行實體拉伸和計算各種設計參數來實現的。CAD系統在三維空間數據處理方面的應用已經取得較大的進展,其在圖形處理與三維建模方面具有獨特的技術優勢,基于CAD建模的優點是可以逼真表示規劃設計成果的精細結構和材質特征,這種方法可以達到較高水平的細節程度,但缺點是CAD三維模型的建模過程包含復雜的人機交互過程和大量的手工操作,建模時間長、成本高。
3.1.3基于遙感影像的三維城市建模方法
利用數字航空攝影系統進行三維量測和成圖是目前城市三維數據采集的核心方法。基于遙感影像的建模方法是利用立體影像數據和數字攝影測量技術,根據影像間的相互關系得到地物點坐標,建立數字地表模型,然后通過紋理映射,建立建筑物模型。遙感影像數據能夠提供下列數據建筑物的三維幾何模型和數字正射影像。數字攝影測量系統的推出為三維城市數據的獲取提供了經濟、快捷的方法,攝影測量方法使得同時獲取大量復雜的三維城市模型之幾何信息和紋理信息的自動化成為可能,特別是隨著近年來高分辨率遙感技術和計算機圖形圖像處理技術的發展,數字攝影測量被普遍認為是當前*適于用來獲取大范圍高精度三維城市模型數據的主要手段。但是,基于遙感影像建立的三維建筑模型不能詳細描述建筑物表面所有細節和特征,難以滿足用戶近距離觀察和室內漫游的需求。因此該方法在城市初次建立三維空間模型時可考慮使用。
3.1.4基于激光、雷達的建模方法
隨著GPS和慣性導航系統(INS)技術的不斷成熟和發展,利用激光、雷達等技術快速獲取建筑物平面和高度數據的方法日益成熟并得到快速應用。*近幾年,激光掃描系統在多等級三維空間目標的實時獲取方面取得了較為廣泛的應用。根據搭載平臺的不同,激光掃描系統可以分為機載激光掃描系統、車載激光掃描系統和地面激光掃描系統,后者往往又稱為近距離激光掃描系統。將地面與車載激光掃描系統用于三維城市重建和局部區域空間信息獲取,已經成為激光掃描技術發展的一個重要方向。
3.1.5圖形數據格式轉換
由于虛擬現實場景多是基于一些虛擬現實平臺,國外的如Unity3D、Quest3D、Virtools等,國內的如VRP、Convers3D等來實現的,而這些平臺所支持的比較好的模型格式多為3DS、OBJ等,為了更好地在這些平臺運行建立好的三維模型就需要進行數據格式轉換。本書虛擬現實場景采用國際知名虛擬現實引擎Unity3D,Unity3D的建模工具采用3ds Max,而3ds Max的標準模型數據格式為3DS,采用逆向建模技術建立三維模型時可以先利用三維掃描儀獲得三維數據并結合AutoCAD進行建模,*終得到模型格式為DWG,必須轉為3DS,才能進行模型優化和材質處理,進而得到較為真實的紋理。DWG文件是AutoCAD繪圖文件格式,可以導入3ds Max會自動將其轉換為3DS格式。
3.2輔助三維建模方法
輔助三維建模方法分為使用三維軟件手動建模方法和程序建模兩種,下面以3ds Max為例進行說明。
3.2.13ds Max人工建模
3ds Max人工建模方法大體可以分為幾何體建模、修改器建模、網格建模、NURBS建模、面片建模、多邊形建模。各種建模方法各有優缺點,在三維建模時選擇合適的建模方法有利于高效地進行建模,下面就這幾種建模方法做一簡單介紹。
(1) 幾何體建模。在3ds Max中幾何體分為標準幾何體和擴展幾何體,標準幾何體主要有Box(長方體)、Sphere(球體)、Cone(椎體)、Cylinder(圓柱體)、Torus(圓環體)等;擴展幾何體則有Hedra(異面體)、Capsule(膠囊體)、Prism(軟管)等,利用已有的幾何體可以實現參數化和快速構建場景中規則的物體,配合修改器可建立更為復雜的物體。
(2) 修改器建模。所謂修改器建模就是指給已創建的對象添加相應的修改器命令,然后對修改器的相關參數進行修改已達到編輯效果。其功能主要有以下幾點。
① 改變對象的幾何造型,如Bend、Taper 修改器。
② 改變對象的創建參數。
③ 將對象轉換為可編輯物體,如Edit Mesh、Edit Poly 等修改器。
④ 對對象的次物體進行編輯。
(3) 網格建模。創建了幾何體后,可以給幾何體添加“編輯網格”命令或者直接轉換為EditMesh,即“可編輯網格”物體,這樣幾何體變為一個網格對象,可以對網格對象的點、邊、面、多邊形等次物體進行編輯。網格對象有點、邊、面、多邊形和元素5個次物體級別,可分別對其進行點的位移變換操作、焊接、切角,邊的切角、分割,多邊形的切割、擠壓和倒角等,這些次物體的編輯是網格建模的關鍵。
(4) NURBS建模。NURBS是NonUniform Rational BSplines(非均勻有理B樣條曲線)的縮寫,是純粹的計算機圖形學的數學概念,是用數學表達式構建的,NURBS數學表達式則是一種復合體。NURBS是一種非常優秀的建模方式,NURBS能夠比傳統的網格建模方式更好地控制物體表面的曲線度,從而能夠創建出更逼真、生動的造型。
NURBS曲線和NURBS曲面在傳統的制圖領域是不存在的,是為使用計算機進行3D建模而專門建立的。在3D 建模的內部空間用曲線和曲面來表現輪廓和外形。
(5) 面片建模。面片是多邊形網格和NURBS之間的一種建模類型。在許多建模方法里,面片優于普通的網格對象。面片的邊是Bezier曲線,因此面片可以變形。面片對象的另外一個優點是能有效地表示對象的幾何形狀。因為面片網格只在每個面片的角上有一個控制頂點,而每個面片能包含若干個面。
(6) 多邊形建模。這種建模技術,用三角形、矩形或其他多邊形等小平面來對曲面進行模擬,從而簡單、方便和快速地構建各種形狀的三維物體,但是在構建光滑曲面時顯得稍有不足,比較適合于形狀規則的物體的構建。如果對模型結構的把握程度和對模型網格分布控制得較好的,此種建模應該是虛擬現實建模的理想選擇。
3.2.23ds Max程序建模
MaxScript語言是為了擴展3ds Max功能而專門設計的一種腳本語言,是面向對象編程語言中的一種。MaxScript可以運用各種數學工具來完成高級復雜的程序設計任務,可以對含有大量對象的集合進行操作。例如,在復雜的場景中選擇物體,可以把大量物體放置在精確的位置上,如在山或路邊放置一些樹木,使用MaxScript 操作起來非常方便。
3ds Max程序建模是指利用3ds Max自帶的腳本語言MaxScript 實現精確建模,但其應用范圍相對人工建模要狹窄很多,主要用來創建一些形狀規則、結構簡單、多重排列的單體模型,同時還可以對其位移、位置、角度、縮放等進行參數化精確控制,這是其相對于人工建模的一大優勢。MaxScript建模為3ds Max精確建模提供一個很好的發展方向,也為3ds Max實現工程精確建模的應用提供一個可能的平臺。
3.3三維建模紋理數據的獲取
除了建筑物的幾何模型,構建三維建筑物還需要紋理數據。生成真實感的三維模型需要在城市地物模型表面粘貼真實的紋理影像。獲取紋理數據的方法除了利用貼圖素材庫和實地拍攝采樣,*經濟的方法是從遙感影像中提取。建筑物模型表面紋理影像主要來源于航空影像,由于航空影像是從空中向下投影,因此屋頂紋理可以很方便地在航空影像上直接提取。而建筑物的墻面在航空影像上卻是不可見的,此時則需要采用實地近景拍攝的影像。
建筑物的三維紋理獲取主要依靠數碼相機拍攝,在拍攝的過程中要注意以下幾點。
(1) 選擇天氣比較晴朗的天氣拍攝,這樣獲取的紋理數據比較美觀。
(2) 盡量拍攝建筑物的正面,便于下一步的修圖工作。
(3) 采集完整的建筑物的紋理,如果某些面有遮擋物,需要換視角拍攝一幅以上的影像,后期再進行拼接處理。
(4) 為了保證后面紋理處理時對建筑物整體結構的把握,對每一地物必須在不同方向拍攝一定數量的全貌照片。
(5) 紋理的文件名在整個數據采集區域必須是*的,因為紋理必須與三維模型的每一個面一一對應。
紋理數據獲取后,接下來需對三維建筑紋理數據進行處理。一般采用Photoshop等軟件對圖像進行復原和裁剪,確保建筑物主要立面的紋理完整真實,減少降低圖像清晰度的操作,消除地物紋理陰影的遮擋,并保持工作區內所有紋理影像色調的均衡。在處理貼圖時應該注意紋理數據的大小與命名原則。一般而言,一個建筑物建模完成需要幾種甚至十幾種紋理,如果每一種紋理數據增加一點,那么整個三維模型增加的就是海量數據,影響系統后期的管理與應用。但紋理數據過小又會影響建筑模型的精細質量。因此,在實際工作中通過認真的研究,確定紋理數據大小的原則為簡單的紋理數據應小于20K,如單色的墻面、瓦等紋理,這類紋理在粘貼紋理時主要用平鋪的方法,所以像素的大小應設置為2n×2n,復雜的紋理單張數據*好不超過1024×1024。
接下來就需要考慮如何將紋理映射到相關的建筑物上,紋理映射是用圖像來替代物體模型中的可模擬或不可模擬細節,紋理影像映射也是至關重要的一個環節。紋理映射技術是把二維的紋理圖像映射到三維物體表面,其關鍵點就是建立物體空間坐標與紋理空間坐標之間的對應關系。在進行各種類型三維地物的面與紋理影像映射過程中,只有確保紋理數據與面映射的正確性,才能真實地模擬現實建筑物,從而提高顯示的逼真度和速度。紋理映射技術是一個簡化復雜幾何模型的有效辦法,可以生成真實的視覺效果,真正做到虛擬現實。
3.4材質燈光技術
在場景中賦予物體貼圖紋理是為了再現物體原貌,然而這種再現與現實中的物體還有差距,因為在現實世界中所有物體都有是光照的,光源的不同物體展現的面貌也就不同。這一思想應用到三維建模技術上是為了場景更加真實,所以場景中不僅要給物體添加貼圖,也需要給場景建立燈光,這就是材質燈光技術。在三維場景里燈光不僅僅是為了照亮物體,而是要利用燈光增強物體的紋理和真實感,有時燈光也烘托一種氣氛。所以不同的物體和場景要進行不同的貼圖和燈光設置,比如白天和夜晚、陰天和晴天、玻璃、水、木質、石頭等。
如果說三維世界的肉體是建模,那么三維世界的靈魂則是燈光。燈光在彌補模型細節不足、增強藝術氛圍中始終扮演著不可或缺的角色。3ds Max默認場景有兩盞燈,是幫助人們創建模型的,當人們創建新的燈圖33燈光設置
光后,默認兩盞燈則會自動關閉。3ds Max共由8種燈光組成,其中使用頻率*高的是目標聚光燈和泛光燈。目光聚光燈有發射點和目標點,呈錐形向外反射,猶如日常生活中手電筒的發射光線。目標平行光也包括發射點和目標點,燈光呈圓筒形發射。泛光燈的光線向外發射,猶如燈泡或太陽光。天光則與泛光燈相異,燈光從360°方向向內發射,猶如陰天的天光。由于是反方向的向內發射,天光則沒有角度與位置差異。例如,某室內燈光做如下設置,室外合適的位置放置一個泛光燈,將陰影設置為光線跟蹤,適當調整亮度,如圖33所示。
……