opengl算法學習---實體造型


各種物體模型或虛擬環境的設計都是基於實體和曲線/曲面等造型技術。

若僅從計算機圖形顯示技術的角度來看,首先要按照物體的幾何數據關系所對應的數學函數來選擇造型模型的數據結構,然后將造型模型中的參數通過投影變換、裁剪、消隱、光照等過程顯示出來。

線框模型

只用頂點和棱邊表示物體,它沒有面的信息,不能表述內部和外部,拓撲關系不明,也無法進行剖切、消隱、光照等。

表面模型

包括兩種,一種是自由曲線/曲面造型,是由模擬物體或現象形狀的數學模型插值生成的模型(如汽車、飛機的外形) ;另一種是多邊形網格模型,由物體表面的采樣點連接成多邊形面片模型,通常用於表達復制場景對象表面(如地形起伏)

實體模型

最完善的模型定義,它能夠表達全部的形狀信息,如物體位置、面積、長度、體積、拓撲關聯等,同時也定義了物體的並、交、差集合運算和歐拉運算等。

造型方法概述

有效實體的必備性質如下:
(1)剛性(形狀不變性)。
(2)具有封閉的邊界,將空間划分為內部和外部兩部分。
(3)內部連通。
(4)占據有效的空間。
(5)經過集合運算后,仍然是有效的實體。
實際應用中,綜合運用各類造型方法生成復雜的三維場景表達。

實體造型方法

邊界表示-多邊形網格表示

邊界表示思想:
用許多簡單的元素如三角形表示形狀,而不是用少得多的但是更復雜\更精確的元素來表示形狀。

邊界表示模型是一種采用描述形體表面方法的幾何表示模型, Boundary representations (B-reps)
一個形體一般可以通過其邊界拆成一些有界的“面”或“小片”的子集來表示,而每一個面又可以通過其邊界的邊和頂點來表示

拆分+組裝是描述實體最常用的方法

實體的邊界需要滿足以下條件:
(1)每條鄰邊必須要有兩個已知坐標的端點
(2)每條邊只能被兩個面共享。
(3)每個頂點至少被三個面或三個邊所共享。

邊界表示的優點:
能夠顯式表示形體邊界,繪制時能快速計算法向和光照效果,算法簡單;在不改變拓撲關系的前提下便於局部幾何變換;便於多個形體做並、交、差等集合運算;可用歐拉公式判斷實體的有效正則性。

歐拉公式:頂點數-棱長數+表面數=2

多邊形網格表示法

多邊形網格表示法是目前最主流的三維模型表示方法,其基本思想是通過許多簡單的多邊形面片來表示三維模型

由多邊形彼此相接構成的網格:
多邊形稱為網格的面,多邊形頂點也稱為網格的頂點
一般要求兩張相鄰面的公共邊完全相同,即不能出現某一面的一個頂點在另一面的邊中間

圖形學表示一大類實體模型的標准方法
實體模型:立方體、四面體、球面、錐面

多邊形網格的類型

實體:多邊形網格形成一個封閉的空間區域
表面:不形成空間封閉區域,表示一個無限薄的曲面
兩者都稱為多邊形網格(polygonalmesh),有時簡稱為網格

網格的性質

實體:如果網格形成一個封閉的有界區域
連通性:如果任兩個頂點間存在由邊構成的連續路徑
簡單性:表示一個實體,且沒有孔洞,即可通過連續幾何形變到球面
平面性:如果所有面都是平面多邊形
●有些算法對平面多邊形更有效
●因此三角網格的實用性更加凸顯

邊界表示

按照體一面一環一邊一點的層次,詳細記錄了構成形體所有幾何元素的幾何信息及其相互連接的拓撲關系
邊界表示的一個重要特點是在該表示法中,描述形體的信息包括幾何信息(Geometry) 和拓撲信息(Topology)兩個方面
-幾何信息:指形體在歐氏空間中的位置和大小
-拓撲信息:是形體各分量的數目及其相互之間的連接關系

9種拓撲關系

幾何與拓撲

幾何:頂點的位置
拓撲:頂點和邊的連接關系
例如:多邊形就是頂點的有序列表,其中每條邊以相鄰的頂點為端點,同時最后一個頂點與第一個頂點連接
即使幾何信息改變了,拓撲信息可以保持不變.

邊界表示的數據結構

邊界表示法的數據結構有四種方法:直接表示、頂點表指針表示、邊表指針表示、翼邊表示、半邊表示

直接表示

以面為基礎,按照體、面、頂點坐標的樹結構層次組織元素數據

頂點表指針表示

以頂點/坐標和面/頂點序列兩張關系表表示
把幾何位置放在一個數組中
構造面時,利用指向各頂點的索引


{0, 1, 2}順序的頂點與{1,2, 0}順序的頂點定義等價{2, 1, 0}則不同
兩種方式定義的多邊形分別稱為多邊形的內與外
利用右手法則判別
OpenGL可把多邊形的內外面用完全不同的模式處理

邊表指針表示

以邊/頂點,頂點/坐標,面/邊三張關系表表示;

如何得到網格

直接對網格進行造型是非常困難的
存在實體的掃描
-得到實體上的點,然后采用一定的算法形成網格
幾何造型軟件可以把曲面轉化為近似的網格表示
任何表面都可以用多邊形網格逼近到任意光滑精度,這稱為多邊形網格的完備性

構建方法:
通過編寫程序來生成模型
使用建模程序
使用三維激光掃描儀對真實模型進行不同點采樣
根據同一個物體的一幅或多幅圖像進行重建

多邊形網格的優勢

容易表示
-數據結構簡單
容易變換
性質簡單
-每個面只有一個法向量
-容易確定內外側
容易繪制
-多邊形填充
-紋理映射

多邊形網格的缺點

1.難以編輯:不能同時移動多個頂點
2.並非總是非常緊湊的描述:需要很多平面元素才能使表面光滑
3-構造緩慢:需要很長時間進行構建

多邊形網格是OpenGL接受其它表示的中轉站
利用曲面造型,曲面需要被多邊形網格逼近,OpenGL才能顯示曲面

構造表示(CSG)

實體是內部屬性單一的三維物體。實體造型就是通過各種方法與運算生成一個封閉實體的過程。

構造實體幾何法

構造實體幾何法(Constructed Solid Geometry,簡稱CSG)是一種十分常用的實體構造方法。其基本思想是將簡單實體(又稱體素)通過集合運算組合成所需要的物體。

通過對體素定義運算而得到新的形體的一種表示方法。
體素也可以由多個半空間的集合運算來表示,半空間指一個無限大平面將三維空間分成兩個無限的區域。
由多個基本體素通過集合運算得到的實體也可以作為構造更復雜形體的體素。

體素可以是立方體、圓柱、圓錐等,也可以是半空間,其運算為變換或正則集合運算並、交、差。

CSG表示可以看成是一棵有序的二叉樹。
-其終端節點或是體素、或是形體變換參數。
-非終端結點或是正則的集合運算,或是變換(平移和/或旋轉)操作,這種運算或變換只對其緊接着的子結點(子形體)起作用。

優點

-數據結構比較簡單,內部數據的管理比較容易;
-控制性好:形狀比較容易修改。

缺點

-對形體的表示受體素的種類和對體素操作的種類的限制(CSG方法表示形體的覆蓋域有較大的局限性)。
-形體的邊界幾何元素(點、邊、面)是隱含地表示在CSG中,故顯示與繪制CsG表示的形體需要較長的時間。
-表示不唯一

推移掃描表示法

將物體A沿着軌跡P推移得到物體B,稱B為sweep體。
平移sweep--將一個二維區域沿着一個矢量方向推移
旋轉sweep--將一個二維區域繞旋轉軸旋轉一周
廣義sweep
-任意物體沿着任意軌跡推移
-推移過程中物體可以變形

優點

-容易構建,適合做圖形輸入手段

缺點

-繪制需要前處理:不能直接獲取形體的邊界信息
-表示形體的覆蓋域有限

細分表示

細分表示(Space-partitioning) :將形體按某種規則分解為小的更易於描述的部分,每一小部分又可分為更小的部分,這種分解過程直至每一小部分都能夠直接描述為止。

人們使用它或許是因為原始數據已是以這種形式存儲或原始數據容易轉換成這種表示。
在繪制CsG模型時,可以把CSG表示轉換成一個中間的含有體素的數據結構,然后從這個數據結構進行光線跟蹤繪制。

枚舉

形體空間細分為小的均勻的立方體單元
用三維數組C[I][J][K]表示物體,數組中的元素與單位小立方體一一對應
-當C[I][J][K] = 1時,表示對應的小立方體被物體占據
-當C[I][J][K] = 0時,表示對應的小立方體沒有被物體占據

八叉樹

八叉樹的表示應用三維形體的分解,它對一個外接立方體的形體進行前后、左右、上下等部分八個小立方體,如果小立方體單元為滿或為空,表示該立方體完全在形體中或完全不在形體中,則其停止分解;對部分形體占有的小立方體需進一步分解為八個子立方體,直至所有小立方體單元要么全部滿,要么全部空,或已分解到規定的分解精度為止。

八叉樹表示:
-對空間位置枚舉表示的空間分割方法作了改進:均勻分割 一> 自適應分割

八叉樹建立過程
-八叉樹的根節點對應整個物體空間
-如果它完全被物體占據,將該節點標記為F(Full),算法結束;
-如果它內部沒有物體,將該節點標記為E(Empty),算法結束;
-如果它被物體部分占據,將該節點標記為P(Partial),並將它分割成8個子立方體,對每一個子立方體進行同樣的處理

單元細分表示

對空間位置枚舉表示的空間分割方法作了改進:單一體素 一>多種體素

-三種空間分割方法的比較.

方法 特點
空間位置枚舉表示 同樣大小立方體粘合在一起表示物體
八叉樹表示 不同大小的立方體粘合在一起表示物體
單元細分表示 多種體素粘合在一起表示物體
細分表示優點

數據結構簡單,表示范圍較廣,可以表示任何物體
較好的控制性:容易實現物體間的交、並、差集合運算
消隱:八叉樹表示可簡化隱藏線(或面)的消除,因為其中形體上各元素已按空間位置排成了一定的順序

細分表示缺點

占用大量的存儲空間
沒有邊界信息,不適於圖形顯示

建模路線

兩條路線:
基於體的方法-構造表示
基於面的方法-曲線曲面-邊界表示

基於體的路線在CAD領域常用到,強調的是一種與實際加工過程相似的方法,如切\鑽等-實體造型研究如何在計算機內定義\表示一個三維物體

基於面的路線沒有體的概念,它認為所有物體都是由表面組成。它允許對物體表面直接操縱一曲面造型研究在計算機內如何描述一張曲面,如何對其形狀進行交互式顯示與控制。

曲面造型與實體造型相互支持相互補充。
光有曲面造型,無法計算和分析物體的許多整體性質如體積\重心;光有實體造型,無法准確地描述和控制物體的外部形狀。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM