三角網格(2)

2021-04-29 20:48:32 字數 1538 閱讀 7971

三角帶

三角帶是乙個三角形列表,其中每個三角形都與前乙個三角形共享一邊,圖14.2顯示了乙個三角帶的例子。

注意頂點列出的順序使得每三個連續的點都能構成乙個三角形。例如:

(1)頂點1、2、3構成第乙個三角形。

(2)頂點2、3、4構成第二個三角形。

(3)頂點3、4、5構成第三個三角形。

在圖14.2中,頂點以構成三角形帶的順序編號。"索引"資訊不再需要,因為頂點順序已經隱式定義了三角形。通常,列表前部有頂點數目,或末尾處有一特殊碼表示"列表結束"。

注意到,頂點順序在順指標和逆時針間不斷變換(見圖14.3)。某些平台上,需要指出第乙個三角形的頂點順序,而有些平台上順序是固定的。

最佳情況下,三角帶可用n+2個頂點儲存n個面。n很大時,每個三角形平均傳送乙個頂點,遺憾的是,這只是最佳情況。實踐中,很多網格是乙個三角形帶無法表達的,不僅如此,3個以上三角形共享的頂點還是要多次傳送給圖形卡。從另一方面說,每個三角形至少要傳送乙個頂點。但在頂點快取機制中,有可能將每個三角形傳送的頂點數降到乙個以下。當然,頂點快取需要額外的簿記資訊(索引和快取管理資料),可是儘管這些額外資訊對單個頂點來講相對較大,操作速度也會相對下降,但傳送頂點數最少的系統在特定平台上速度最快。

假設用一種生成三角帶的直接方法,用三角帶表示三角網需要的頂點數為t+2s,t為三角形數目,s為三角帶數目。每個三角帶的第乙個三角形對應三個頂點,以後每個三角形對應一頂點。因為我們希望最小化發往圖形卡的頂點數,所以三角帶的數目應盡可能少,即三角帶越長越好。stripe方法給出了一種三角帶數目接近理論下限的生成手段。

另乙個希望減少三角形帶數目的原因在於建立各三角形需要額外時間。從另一方面說,分別渲染兩個長為n的三角帶所需時間長於渲染乙個長為2n的三角帶,即使這個三角帶中的三角形數多於兩個分開帶中三角形數量的和。於是,我們經常通過使用退化三角形連線多個三角帶,從而將整個網格置於乙個連續的三角帶中,退化的意思是面積為0。圖14.4顯示了如何重複頂點以將兩個三角形合併為乙個。

圖14.4的含義不太明顯,但這裡有四個退化三角形用於連線兩個三角帶從而維持正確的順指標、逆時針順序。頂點7、8間的邊實際包含兩個退化三角形,圖14.5指出了圖14.4中包含的三角形。

退化三角形面積為0不需要渲染,所以不會影響效率。實際上要傳送到圖形卡的頂點仍然只是第一列的頂點:

1,2,3,4,5,6,7,8,9,10,11,12,13

這符合我們每三個連續頂點表示乙個三角形的約定。

一些硬體(如ps2上的gs)可以跳過三角帶中的三角形,方法是通過乙個頂點上的標誌位指出"不必繪製"此三角形。這給我們一種方法可以有效的從任意點開始新三角形帶而不必重複頂點或使用退化三角形。例如,圖14.4中的兩個三角帶可以如圖14.6那樣連線,其中灰色表示頂點被標記"不必繪製"。

三角扇

三角扇和三角帶類似,但不如三角帶靈活,所以很少使用。圖14.7所示即為三角扇。

三角扇使用n+2個頂點儲存n個面,和三角帶相同。但是,第乙個頂點必須為所有三角形共享,所以實踐中不太經常能找到大型三角扇應用的場合。並且,三角扇不能像三角帶那樣連線。所以,三角扇只能在特殊場合應用,對一般應用來說,三角帶更靈活。

三角網格(3)

三角網可在三角形或頂點級儲存額外資訊。紋理對映座標 紋理對映是將點陣圖 稱作 紋理圖 或簡稱 紋理 貼到多邊形表面的過程。這裡只給出乙個高度簡化的解釋 我們希望將2d紋理貼到多邊形表面上,同時考慮多邊形在攝像機空間的方向。對多邊形中每個需要渲染的畫素都要計算2d紋理對映座標,這些座標用以索引紋理圖,...

三角網格的主要生成方法

1 網格前沿演算法 advancing front method 又稱啟發式的網格生成演算法。演算法思路是以剖分域的邊界為網格的初始前沿,按預設網格單元的形狀 尺度等要求向域內生成節點 連線單元,同時更新網格前沿,如此逐層向剖分域內推進,直至所有空間被剖分 此法最大的特徵就是能夠生成複雜形狀的非結構...

計算三角網格的頂點法向量

原文 前段時間基本上完成了場景編輯器的大部分工作,現在已經可以用它生成自己需要的網格模型了。目前,在編輯器中對生成的網格是指定面的法向量,這對於用場景生成bsp等相關操作已經足夠了。不過為了測試bsp的健壯性,準備實現一下基於bsp的光線跟蹤演算法來看看效果,於是只是指定面的法向量就顯得不太夠用,因...