網格簡化 二 、QEM演算法
簡化演算法的誤差測度(度量質量和誤差)
誤差測度用於度量模型簡化的質量和誤差,因此它對模型的簡化過程和最後的簡化結果都具有重要的影響。大多數簡化演算法採用物件空間(Object-space)的一種或綜合幾種形式的幾何誤差(Geometric errors)作為誤差測度,一些視點相關演算法通常將物件空間的誤差轉換為螢幕空間(Screen-space)的誤差值為誤差測度,有些演算法也考慮模型的顏色、法向量和紋理座標等屬性誤差(Attribute errors)。幾何誤差
幾何誤差測度一般採用歐式空間距離表示。通常有頂點到頂點、頂點到平面和平面到平面的距離等形式。
Hausdorff距離是現有演算法中常常用到度量頂點到表面、表面到表面距離的幾何誤差測度,該距離為兩個模型的頂點之間的最小距離中的最大值。
給定歐式空間的兩點集
,Haousdorff距離就是用來衡量這兩個點集間的距離。
演算法過程:
該演算法的時間複雜度是O(n,m),其中n和m分別為集合A和集合B中的點數。螢幕空間誤差計算
視點相關演算法常常需要將物件空間誤差轉換為螢幕空間誤差。設物件空間幾何誤差為e,x為以畫素表示的螢幕某方向的解析度,d是視點到模型物件的距離,θ為視野夾角,則e對應的螢幕空間誤差p為:
屬性誤差(材質、紋理)
網格模型上的三角面片、、法向量、紋理座標、頂點的顏色是其常見的屬性。
網格模型的顏色一般以(r, g, b)三元組形式來表示,各分量分別在[0, 1]中取值。最直接的方法是採用歐式空間距離求解方法來求取顏色的距離。設簡化過程的兩模型M1、M2的顏色分別表示為(r1, g1, b1)和(r2, g2, b2),則兩模型的顏色距離dc可以表示為:
兩個法向量的誤差距離dn通常採用角度值進行度量:
多邊形表面的紋理座標用(u, v)座標對來表示網格模型頂點到二維紋理空間的對映,其中,u,v通常在[0, 1]中取值。一般也是採用歐式空間距離求解方法來計算紋理座標誤差:
簡化演算法的約束條件或執行條件
模型簡化過程中或簡化演算法執行時往往存在一些限制條件,這些條件也決定了演算法採用的技術、演算法執行效果和模型簡化結構等。細節層次(LOD)
對於各種簡化細節層次的LOD模型的管理技術可以分成離散LOD(Discrete LOD)、連續LOD(Continuous LOD)和視點相關LOD技術。
早期簡化演算法大多采用離散LOD技術。這種技術首先採用離線(offline)方式對原始模型進行預處理,生成一系列不同解析度的簡化模型。在實際執行時,根據需要選擇已生成的某個簡化模型進行繪製。由於在實時顯示繪製時不需要再次進行簡化操作,因此該技術具有實時執行速度快、資料儲存結構簡單等優點。但是因為需要儲存多個預處理的中間簡化模型,所以佔用儲存空間大;且在簡化預處理時無法考慮視點及實時執行環境因素等要求,只能根據模型本身資訊進行簡化,因而簡化效率不高;同時由於技術限制,預簡化生成LOD模型數量不可能過多,粒度不可能太細,因此實時顯示繪製時候,在不同簡化模型切換過程中會出現畫面跳躍、視覺不連續等的效果。離散LOD簡化也稱為靜態簡化。
連續LOD技術是對傳統的離散LOD技術的改進和發展。與離散LOD技術不同,連續LOD技術的各簡化模型不是在預處理中生成,而是通過構造特定的資料結構進行編碼儲存,在實時顯示執行時根據需要生成對應細節層次的簡化模型。因此連續LOD技術具有更高的LOD粒度表示,佔用空間較小,執行時畫面連續性較好等優點;但由於執行時需要進行簡化模型的生成處理,因此實時顯示速度收到一定影響。連續LOD技術支援多邊形網格模型的傳輸,常被應用於網格模型的各種遞進簡化演算法中。簡化模型的拓撲結構保持
簡化過程中是否保持網格模型的拓撲結構不變也是區分不同簡化演算法的一個重要依據。網格模型的拓撲結構通常指構成網格模型的各三角網格之間的連線關係。衡量模型簡化演算法是否能保持拓撲結構一般是通過判斷網格表面的虧格(Genus)和流型(Manifold)是否在簡化過程中保持不變來確定。虧格採用網格表面的孔洞數量來計算。
下圖為兩種型別的頂點對:
模型試驗結果:
QEM演算法的基本操作基於邊摺疊,誤差測度採用的是二次誤差測度。二次誤差測度最早是由Garland提出,採用點到平面距離的平方作為誤差測度。它的優點是具有較高的計算速度,較小的記憶體消耗,而且得到的簡化網格具有較高質量。它是在速度非常快但簡化質量很差、速度很慢但簡化質量非常好的兩類方法之間的一種折中,是一種兼顧了速度和質量的較理想的誤差測度。
在三維歐氏空間中,一個平面可以表示為: 其中 時平面的單位法向量,d時常量。點 到該平面的距離就可以表示為:
表面屬性
在計算機圖形學中, 三角網格模型最常見的表面屬性有顏色、紋理和法線。為了使簡化模型同初始模型具有良好的相似性, 必須在保持模型幾何資訊的同時保留這些屬性特徵。由於點到平面的距離考慮了簡化操作對頂點周圍區域屬性值變化的影響, 可以比較準確地描述區域性屬性誤差, 同時又比點到表面或表面到表面的距離計算簡便快捷。因此, 採用點到平面的距離作為屬性誤差測度, 將二次誤差測度應用到屬性誤差的計算中。
網格模型的每個頂點除了空間座標外,還具有描述其屬性的數值。在網格模型的三角面上, 屬性值根據幾何位置插值得到。因此, 三角面上的屬性值是連續的, 而且兩個屬性值之間的距離用歐氏距離來度量。
比如對於顏色屬性,可以用三維向量r,g,bT 來表示(0≤r,g,b≤1 ),所有顏色向量構成了RGB彩色空間,在RGB彩色空間中點到平面的距離平方同樣可以用二次誤差Q(v)來計算。邊摺疊後的新頂點採用子集選擇法,不用重新計算頂點的空間位置和屬性值,在計算誤差的時候不用考慮空間座標和屬性值的相關性,只需分別建立幾何二次誤差測度和屬性二次誤差測度,並計算幾何和屬性誤差。
邊摺疊操作的代價
採用帶有顏色屬性的模型應用演算法,帶有其他屬性的網格模型可以同理推出。三角網格模型的每個頂點vg=x,y,zT 和vc=r,g,bT (0≤r,g,b≤1 )來表徵幾何和顏色資訊。為每個三角面建立幾何二次誤差測度Qfg 和顏色二次誤差測度Qfc 。各頂點的二次誤差測度之和:
當邊摺疊(v1 , v2 )到頂點v的時候,總的二次誤差測度為:
故而邊摺疊引起的幾何誤差Eg=Qgvg ,顏色屬性誤差Ec=Qcvc 。則總的邊摺疊代價為:
其中α為顏色屬性誤差在總代價中的影響係數,可以根據實際情況進行調節
參考資料:
相關文章
- QEM 網格模型簡化演算法模型演算法
- 網格簡化 QEM 方法詳解
- 網格簡化-QEM 頂點二次度量的最佳化
- 可能是史上最詳盡的 QEM 網格簡化演算法解釋演算法
- 網格缺陷檢測(二值化閾值分析)
- 基於 Wasm 和 ORAS 簡化擴充套件服務網格功能ASM套件
- 交易策略-網格策略(四):示例操作二
- 極簡風格電商網站案例網站
- 簡單的量子演算法(二):Simon's Algorithm演算法Go
- Event loop的化繁為簡(二)OOP
- 網路安全網格概念以及特點簡單普及
- 二維網格的遷移(java實現)Java
- (演算法競賽)簡單易懂二分圖演算法
- VuePress 部落格之 SEO 優化(二)之重定向Vue優化
- 因數分解演算法、週期查詢演算法(簡化)演算法
- 現代化網站品牌和風格網站
- Ol4網格生成以及優化優化
- UE | Procedural Mesh 程式化網格體
- 簡述JavaScript模組化程式設計(二)JavaScript程式設計
- 網站效能優化實戰(二)網站優化
- 哈?原來css網格佈局這麼簡單!!!CSS
- TP5 極簡類部落格個人網站網站
- 酷站欣賞:8個簡約風格的網站作品網站
- Mokore-Wordpress二次元簡約個人部落格主題二次元
- [譯] 簡單的響應式現代 CSS 網格佈局CSS
- 簡直神器!一鍵生成靚麗的部落格網站,真香!網站
- 淺解前端必須掌握的演算法(二):簡單選擇排序前端演算法排序
- 簡明線性迴歸演算法中的最小二乘法演算法
- Istio旨在成為容器化微服務的網格管道微服務
- 視覺化學習:使用WebGL實現網格背景視覺化Web
- 【GIS前沿技術】什麼是網格化(Gird)GIS?
- 演算法金 | 最難的來了:超引數網格搜尋、貝葉斯最佳化、遺傳演算法、模型特異化、Hyperopt、Optuna、多目標最佳化、非同步並行最佳化演算法模型非同步並行
- 動作與射擊漫談:格鬥遊戲進化簡史遊戲
- JAVA開發之簡化Dao層、提高開發效率(二)Java
- BiLSTM演算法(二)演算法
- 演算法簡介演算法
- 簡單演算法演算法
- 自制真•簡單部落格