為了獲得更真實的細節(jié),一張或多張紋理映射將會應(yīng)用到物體的表面,正如下圖所顯示的。物體表面上每一點的紋理像素都能在紋理映射中找到,它們遵循光照公式以某種方式與光照結(jié)合在一起。在最簡單的情況下,一個從漫反射紋理映射得到的樣例可以用于調(diào)節(jié)漫反射的顏色。
讓顏色T代表表面上一點對應(yīng)的紋理映射中的過濾樣本。使用這個顏色來調(diào)節(jié)漫反射顏色將會產(chǎn)生漫反射光照方程的擴展版本:
注:漫反射光照方程為:
正如紋理映射可以用于調(diào)節(jié)光照方程中的漫反射部分一樣,我們也可以使用紋理映射來調(diào)節(jié)鏡面反射。這樣的一個紋理有時被稱作高光貼圖(gloss map),它決定了表面上每一點的鏡面光澤程度。使用顏色來表示高光貼圖中的一個過濾樣本,我們可以這樣擴展鏡面反射方程:
注:鏡面反射光照方程為:
從紋理映射得到的樣本真實顏色決定于其對應(yīng)的物體紋理坐標。紋理坐標要么是預(yù)先計算好的,存儲在三角形網(wǎng)格的每個頂點中,要么是在運行時計算來產(chǎn)生一些特殊效果。在渲染三角形面片的的時候,紋理坐標使用公式
來進行紋理坐標的插值。對于紋理圖的每個頂點而言,可能有1到4個坐標,它們被標記為s,t,p和q。接下來的幾個章節(jié)將會介紹幾種不同的紋理映射,以及每種紋理映射中,我們?nèi)绾问褂眉y理坐標在紋理映射中找到對應(yīng)點。
標準紋理映射
在一,二或三維的紋理映射,我們使用對應(yīng)的紋理坐標來查找紋理像素。正如下圖所顯示的,紋理映射的整個寬度,高度以及深度分別對應(yīng)著s,t以及p方向0到1之間的坐標值。
一個一維的紋理映射可以被看作一個只有單一高度方向像素的二維紋理映射。同樣地,一個二維的紋理映射可以被看作是一個只有單一深度方向像素的三維紋理映射。如果t和p坐標沒有被特別標注,那么我們就認為它們?yōu)?。
投影紋理映射
第四個紋理坐標將在投影紋理映射中使用,它的應(yīng)用將在這一部分介紹。q坐標值和齊次坐標中的w非常類似,在沒有特別說明的情況下,它的值一般是1。坐標s,t,p的值將除以q的坐標值。對于一個兩個端點紋理坐標分別為(s1,t1,p1,q1)和(s2,t2,p2,q2)的掃描線,我們可以使用方程
來計算內(nèi)插值s3和q3,其中含中間參數(shù)這兩個值的商給出了紋理映射樣本中的s坐標:
類似的表達式可計算出投影的t,p的紋理坐標。
一些投影坐標映射是點光源投影周圍環(huán)境圖像的模擬,正如下圖所顯示的,圖像的投影隨著與點光源的距離增大而增大。這樣的效果是由使用一個4X4的矩陣把物體的頂點位置坐標映射到紋理坐標(s, t, 0, q)上得到的,這樣再除以q,就能產(chǎn)生正確的投影圖像的2D紋理映射坐標(s,t)。
假設(shè)處在P點的點光源朝向為Z。讓單位向量S和T處在與向量Z垂直的平面上,讓它們與投影紋理圖像所處的s,t坐標方向重合。點光源照射的表面上的每個頂點位置(x,y,z,1)首先必須被轉(zhuǎn)換到以點光源為原點的坐標系統(tǒng)中,其中x,y和z坐標對應(yīng)著S,T和Z向量的方向。使用列為向量S,T,Z和P的矩陣的逆可以實現(xiàn)這一點。如果向量S和T是相互垂直的(i.e.,投影圖像不是傾斜的),那么變換可以寫作:
注意這個矩陣轉(zhuǎn)換到了左手坐標系,
因為S X T = - Z
現(xiàn)在,我們需要用第二個矩陣來乘以上面這個矩陣,來完成投影。正如我們定義視角平截體的焦距一樣,我們以頂端夾角a的形式來定義點光源投影的焦距:
令a為紋理映射的縱橫比,這等價于它的高度除以它的寬度。每個頂點位置都需要被投影到與點光源距離為e的平面上,在這里我們想要把x方向處在[-1,1]區(qū)間的點映射到[0,1]上,以及把y方向上處在[-a,a]范圍的點映射到[0,1]上。這個矩陣
完成了這樣的映射,并且在s,t坐標除以q后完成了投影的過程。結(jié)合前面給出的兩個矩陣(M1M2),我們可以用矩陣M = M2M1來推出投影點光源圖像。
立方體紋理映射
另外一種映射物體紋理的方法是通過使用立方體紋理映射完成的。立方體紋理映射經(jīng)常用于在模型表面近似環(huán)境光的反射。如下圖,立方體紋理映射包含了六個二維成分,它們分別對應(yīng)著立方體的六個面。s,t和p坐標表達了從立方體中心發(fā)出的指向樣本像素的方向向量。
樣本對應(yīng)哪一個面取決于絕對值最大的坐標的符號。另外兩個坐標將除以最大的坐標值,然后利用下面這張表重新映射到[0,1]范圍內(nèi),以產(chǎn)生2D紋理坐標(s',t')。這個坐標將用于對相應(yīng)的立方體紋理映射面采樣二維紋理映射,下圖顯示了立方體映射坐標和對應(yīng)的六個面的朝向。
紋理坐標和立方體紋理映射的結(jié)合通常是在運行時產(chǎn)生的。例如,環(huán)境映射可以通過計算相機方向的反射并把它來存儲到三角形網(wǎng)格每個點的(s,t,p)坐標來實現(xiàn)。反射方向的計算一般是在硬件中完成的,所以這可以非常高效的完成。
立方體紋理映射在一些圖形硬件中的應(yīng)用是標準化向量。一個標準化立方體映射,是一個在六個面存儲按RGB顏色編碼的向量組,而不是存儲顏色圖像的立方體紋理映射。它存儲的向量數(shù)組的形式如下:
立方體映射中,存儲在每個面像素點的向量,是像素采樣的單位長度向量(s,t,p)。標準化立方體映射的使用在執(zhí)行一些每像素光照時非常合適,因為在三角形表面進行法線插值,可以產(chǎn)生一些長度小于1的法線向量。
-
反射
+關(guān)注
關(guān)注
0文章
67瀏覽量
15862 -
紋理映射
+關(guān)注
關(guān)注
0文章
4瀏覽量
1758
原文標題:紋理映射原理詳解
文章出處:【微信號:Imgtec,微信公眾號:Imagination Tech】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論