• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            天行健 君子當自強而不息

            三角網格(3)

             

            三角網可在三角形或頂點級保存額外信息。

             

            紋理映射坐標

            紋理映射是將位圖(稱作"紋理圖"或簡稱"紋理")貼到多邊形表面的過程。這里只給出一個高度簡化的解釋:我們希望將2D紋理貼到多邊形表面上,同時考慮多邊形在攝像機空間的方向。對多邊形中每個需要渲染的像素都要計算2D紋理映射坐標,這些坐標用以索引紋理圖,從而為相應像素著色。

            通常,在頂點保存紋理映射坐標,三角形面中其余各點的坐標通過插值進行計算。

             

            表面法向量

            許多應用程序中,網格上的各點都需要一個表面法向量。它可以用來:

            (1)計算光照。

            (2)進行背面剔除。

            (3)模擬粒子在表面"彈跳"的效果。

            (4)通過只考慮正面而加速碰撞檢測。

            表面法向量可能保存于三角形級或頂點級,或兩者皆有。

            三角形級法向量可以通過兩向量叉乘的方法輕松獲得,而頂點級法向量的計算則困難一些。首先,應注意到頂點處其實是沒有法向量定義的,因為此處網格表面不連續。第二,三角網是對連續表面的逼近,所以我們實際想要的是連續表面的法向量。根據產生三角網的方法,這種信息不一定現成可得。如果網格是自動生成的,比如說從參數曲面上,則可以直接獲得法向量。

            若法向量沒有提供,則必得有現成數據(頂點位置和三角形)生成。一個技巧是平均相鄰三角形的表面法向量并將結果標準化。當然,這要求知道三角形法向量。一般可以假設三角形頂點以順時針列出,通過叉乘計算外表面的法向量。如果頂點順序不能假設時,可使用Glassner建議的方法。

            通過平均三角形法向量求得頂點法向量是一種經驗性方法,大多數情況下都能工作得很好。但是有必要指出,某些情況下,其結果并不是所期望的。最明顯的例子是兩個法向量剛好相反的三角形共享一個頂點。這種情形常發生在"公告板"物體上。"公告板"由兩個三角形背靠背構成,它的兩個法向量方向恰好相反,其平均值為0不能標準化。為解決這種問題,必須拆開所謂的"雙面"三角形。

            平均頂點法向量的另一個問題會在應用Gouraud著色時發生,這里給出一個簡化的解釋:光照是按頂點法向量逐點計算的。如果使用平均三角形法向量計算的頂點法向量,某些應該有尖銳邊緣的地方會顯得"過于平滑"。以最簡單的盒子為例,邊緣處應該有一個劇烈的關照變化。如果我們使用平均頂點法向量,這個劇烈變化會消失。如圖14.8所示:

            根本問題在于盒子邊緣不連續,而這種不連續卻不能很好的被表達,因為每個頂點只有一個法向量。其實仍然可以使用面拆分解決問題:換句話說,重復不連續處的頂點。這樣做之后,人為的構造了一個不連續以防止頂點法向量被平均。這種"裂縫"在網格拓撲中可能會導致問題,但在如渲染、光線追蹤等任務中沒有問題。

            另一個小問題是這種平均會導致結果向較多擁有相同法向量的三角形偏移。例如,若干三角形共享一個頂點,但其中兩個共面。則平均出的法向量會發生偏移,因為共面三角形的法向量重復了兩次,相比于其他法向量有更多"發言權"。于是,即使表面并未變化,也會使頂點法向量發生改變。我們可以修正此錯誤,但幸運的是實踐中這并不是什么大問題,因為頂點法向量本來就是一種近似。

             

            光照值

            另一種常由頂點維護的信息是光照值。這些光照值用于沿表面的插值,典型的方法是Gouraud著色。有些時候,頂點處僅保存法向量,渲染時動態計算光照值。

             

            拓撲與一致性

            三角網格的拓撲是指當在三角網格中不考慮頂點位置與其他幾何性質的邏輯連通性時,兩個頂點數相同且三角形互聯方式一致的三角網格為同拓撲的,即使它們對應的物體完全不同。從另一方面說,盡管形狀不同,拉伸網格但不打破鄰接性,我們得到的是同拓撲的網格。

            有一種特殊網格稱作封閉網絡,又稱作"流形"。概念上,封閉網格完美地覆蓋物體表面,網格中沒有間隙,從外面完全無法看到任何三角形的背面。這是一種重要的網格,它的點和邊組成形式就像平面圖,即如果將頂點當成平面點,用直線連接頂點,此封閉網格可以畫在一個2D平面上,而且沒有邊交叉。平面圖符合Euler方程:v-e+f=2,其中v為頂點數,e為邊數,f為網格上的面數。

            實踐中,我們經常遇到拓撲異常的三角網格,導致網格不封閉:

            (1)孤立頂點:頂點未被任何三角形使用。

            (2)重復頂點:完全相同的頂點。使用這些點的三角形幾何上相鄰而邏輯上不相鄰,多數情況下,我們不希望看到這種現象,應該刪除。

            (3)退化三角形:使用一頂點超過一次的三角形。意味著這個三角形沒有面積,一般這種三角形應該刪除。

            (4)開放邊:僅為一個三角形所使用。

            (5)超過兩個三角形共享的邊:封閉網格中,任一邊必須為兩個三角形共享。

            (6)重復面:網格中包含有兩個或更多相同的面。這是不希望看到的,應該去掉多余面而只保留一個。

            根據應用的不同,上述異常可能是嚴重的錯誤,也可能是小錯誤,或者無關緊要。


            posted on 2008-03-02 15:28 lovedday 閱讀(2086) 評論(2)  編輯 收藏 引用

            評論

            # re: 三角網格(3)[未登錄] 2010-01-15 17:02 Jason

            這幾年從樓主的博客學到很多知識,非常感謝.  回復  更多評論   

            # re: 三角網格(3)[未登錄] 2010-01-15 17:02 Jason

            祝新年如意吉祥!  回復  更多評論   

            公告

            導航

            統計

            常用鏈接

            隨筆分類(178)

            3D游戲編程相關鏈接

            搜索

            最新評論

            国产综合久久久久久鬼色| 久久亚洲欧洲国产综合| 久久久无码人妻精品无码| 麻豆成人久久精品二区三区免费 | 精品久久久久久国产免费了| 精品久久久久久久中文字幕| 久久99国产精品久久99小说| 无码人妻久久一区二区三区免费丨| 国产V亚洲V天堂无码久久久| 国产精品99久久久久久宅男| 日本久久久久亚洲中字幕| 国产福利电影一区二区三区久久老子无码午夜伦不 | 国产精品久久一区二区三区| 久久久久国产一区二区| 亚洲色欲久久久综合网| 久久人人爽人爽人人爽av| 99久久99这里只有免费费精品| 欧美与黑人午夜性猛交久久久| 77777亚洲午夜久久多人| 久久精品无码一区二区三区免费| 亚洲国产精品久久久天堂| 久久国产视频网| 久久99国产精品久久99果冻传媒| 国产成人精品综合久久久| 久久久久亚洲AV成人网人人网站 | 久久久无码精品亚洲日韩京东传媒 | 天天爽天天狠久久久综合麻豆| 精品欧美一区二区三区久久久| 99久久国产综合精品麻豆| 亚洲午夜久久久久久久久久| 国产精品一区二区久久精品涩爱| 久久综合伊人77777麻豆| 国产精品久久久久一区二区三区| 国产高潮国产高潮久久久| 久久人人爽人人爽人人AV| 久久AV无码精品人妻糸列| 国产A级毛片久久久精品毛片| 青草久久久国产线免观| 亚洲国产精品无码久久青草| 嫩草影院久久99| 久久人人爽人爽人人爽av|