簡介
在三維計算機圖形學中,多邊形造型是用多邊形表示或者近似表示物體曲面的物體造型方法。多邊形造型非常適合於掃描線渲染,因此實時計算機圖形處理中的一項可以使用的方法。其它表示三維物體的方法有 NURBS 曲面、細分曲面以及光線跟蹤中所用的基於方程的表示方法。
多邊形造型所用的基本對象是三維空間中的頂點。將兩個頂點連線起來的直線稱為邊。三個頂點經三條邊連線起來成為三角形,三角形是歐幾里德空間中最簡單的多邊形。多個三角形可以組成更加複雜的多邊形,或者生成多於三個頂點的單個物體。四邊形和三角形是多邊形造型中最常用的形狀。通過共同的頂點連線在一起的一組多邊形通常當作一個元素。組成元素的每一個多邊形就是一個表面。
在歐幾里得幾何中,任何三點都可以確定一個平面。因此,三角形總是位於一個平面,但是對於更加複雜的多邊形來說可能並非如此。三角形的平面特性使得曲面法線的確定變得很簡單,曲面法線是垂直於三角形所有邊的一個三維矢量。曲面法線對於光線跟蹤中確定光線傳輸非常有用,並且在流行的 Phong shading 模型中它也是一個關鍵成分。有一些渲染系統使用頂點法線取代曲面法線來獲得效果更好的光照系統,這樣做的代價就是計算量的增加。注意每個三角形都有兩個方向相反的曲面法線。在許多系統中,只有一個法線是有效的,根據需求可以定義成可見或者不可見;另外一條法線稱為 背面。
許多造型程式並沒有嚴格地遵守幾何理論;例如,兩個頂點之間在同樣的空間位置可以有兩個截然不同的邊。同樣可能能在同樣的空間坐標有兩個頂點或者同樣的位置有兩個表面。這樣的狀況並不是所期望的結果,因此許多軟體包都可以自動地清除它們。如果無法自動清楚,就必須進行手動清除。
通過共有的邊連線在一起的一組多邊形叫作一個格線。為了增加格線渲染時效果的真實性,它必須是非自相交的,也就是說多邊形內部沒有邊,另外一種說法就是格線不能穿過自身。並且格線不能出現任何的錯誤,如重複的頂點、邊或者表面。另外對於有些場合,格線必須是流形,即它不包含空洞或者奇點(格線兩個不同部分之間通過唯一的一個頂點相連)。
多邊形格線的構建
儘管可以通過定義頂點和表面手動構建格線,但是更加常用的方法是用工具來完成。有許多不同的三維圖形軟體包可以用來構建多邊形格線。
其中最流行的格線構建方法是盒狀造型,它使用兩個簡單的工具:
1)子分工具:通過添加新的頂點將表面及邊切分成更小的部分。例如,通過在正方形的中心以及每條邊的中點分別添加一個頂點,這樣就分區成四個更小的正方形。
2)拉伸工具:用於一個或者一組表面。它生成同樣大小和形狀的一個新的表面,並且與現有的通過一個表面連線起來。這樣,在一個正方形表面上進行拉伸操作將生成一個與該表面連在一起的立方體。
第二種常見的造型方法有時也稱為膨脹造型或者拉伸造型。在這種方法中,用戶創建一個跟蹤照片或者素描中物體輪廓的二維形狀,然後,根據另外一張不同角度的照片將按照輪廓從二維形狀拉伸到三維。這種方法在生成人臉與頭部的場合中非常常見。通常,藝術家創作出頭部的一半,然後相對於同一平面在相對的方向複製頂點,最後將兩部分連線到一起。這樣就能保證得到一個對稱的結果。
另外一種常用的多邊形格線生成方法是將不同的體元或者圖元連線到一起,體元和圖元是造型環境中預先定義的多邊形格線。常用的體元與圖元有:
1)立方體
2)稜錐
3)圓柱
4)二維圖元,如正方形、三角形、圓形
5)特殊的特定套用體元,如 Utah Teapot 或者 Suzanne、Blender 的猴子福神
6)球 - 通常球用下面的兩種方法之一表示:二十面球和UV 球。二十面球是用二十面體表示球體;UV 球 由四邊形組成,就像在一些地球儀上看到的那樣——四邊形在距離赤道較近的地方較大,在距離兩極較近的地方較小,最後在兩極縮成頂點。
最後,還有一些特殊的構建不同細節層次格線的方法。草圖造型是一種界面友好的快速構建細節要求不高的模型的方法,三維掃瞄器可以用近乎自動地方式根據真實世界的物體生成細節層次豐富的格線。這些設備都非常昂貴,並且通常只有研究人員或者專業人員才使用,但是它們可以生成低於毫米精度的數字表示結果。
優缺點
用多邊形表示物體有很多缺點。多邊形沒有辦法精確地表示曲面,因此為了實現較好的觀察效果必須使用大量的多邊形進行近似。複雜模型的使用帶來處理速度的降低。在掃描線渲染中,不管多邊形的尺寸如何,每個多邊形都要進行變換然後進行顯示,而通常每個時刻螢幕上都會有大量的模型出現。為了減少需要渲染的多邊形數量,程式設計師經常需要使用不同的細節層次表示同一個物體。
這種方法的一個主要優點是它比其它的表示方法處理速度快。儘管一些先進的圖形卡能夠以每秒 60 幀甚至更高的速度顯示非常細緻的場景,光線跟蹤這種顯示非多邊形模型的主要方法,如果實現同樣的細節根本無法達到 10 幀每秒的互動幀速。