張 躍 安 娜
1,2沈陽師范大學 (110034) 1遼寧裝備制造職業技術學院( 沈陽 110164 )
紋理映射技術可將任意的平面圖形或圖像覆蓋到幾何模型的表面上,在模型表面形成逼真的色彩花紋。本文討論的紋理映射失真修復的方法主要是針對三維地形,在保持地形曲面不變的前提下,對每個三角形給出了紋理失真的度量方法及失真修復的方法。
在一個加了紋理的三角網模型中,三角形的每個頂點都記錄了三維幾何空間中的幾何坐標vg和紋理空間中的紋理坐標vt,在給模型進行紋理映射時,三角形內部的紋理坐標可以根據三個頂點的紋理坐標值進行插值來得到。圖1給出一個實際模型的例子來說明紋理失真的形成,圖1(a)中三角形的頂點v1g,v2g,v3g分別對應了圖1(b)中的v1t,v2t,v3t。所以最后的紋理映射結果如圖1(c)所示。從圖中可以看出,紋理圖像上的直角三角形對應了一個幾何空間中的非直角三角形,紋理圖案在紋理映射過程中發生了形變。由于紋理圖像是二維的,物體模型是三維的,這就導致模型上大小相似的三角形,某些對應了較大的紋理,某些對應了一些小塊的紋理,所以導致了紋理的失真。

圖1 三角形紋理失真的過程
關于三維地形紋理映射過程中所產生的失真情況較少有人研究,試圖從糾正失真不均衡的角度出發對紋理映射后失真紋理進行修復。紋理失真修復的算法主要有紋理重投影和結合紋理特征的模型簡化算法。而采用的算法主要針對三維地形曲面上的紋理進行修復,算法主要分為紋理失真系數的確定、失真大小的向量度量方法、投影平面上點的平移方法3個步驟。
在對三角網模型進行紋理映射時,先將空間的三角網格投影到二維平面上,得到投影平面上的三角網模型,這樣投影平面上的每一個三角形都對應著空間三角網中的一個三角形。對于失真系數的確定,首先選取投影平面上三角形的重心,然后做平行于X、Y軸的直線與三角形的兩邊相交得到一截線段,稱為投影截線段,再找到投影截線段在空間三角網中所對應的線段,我們稱為空間截線段。則空間截線段與投影截線段的長度的比值,稱為失真系數。而失真系數與 1的差值就是此三角形的失真增量。這樣針對每個三角形都可以求出 X,Y方向二個失真系數,作為對這個三角形X,Y兩個方向失真的度量方法。
由于失真系數和失真增量是一個標量,所以無法根據失真系數確定投影平面上三角形的失真方向,也就無法挪動點來對失真進行修復。但是根據投影平面上三角形在X軸、Y軸兩個方向上的失真增量,在二維直角坐標系中可以確定四個方向向量K1,K2,K3,K4,如圖2所示。把這四個方向中的一個稱為失真向量。為了給出失真向量的方向,我們過投影平面三角形的檢索點(要挪動的點)做其對邊的平行向量,這里把B點作為檢索點,EF為平行向量,由于失真是投影平面的三角形被拉伸造成的,則可排除平行向量EF與 B點的對邊AC所夾的兩個方向向量K1,K4。再取檢索點B對邊AC的中點P,由P和檢索點B可確定一個由B到P的向量我們稱其為中點向量BP,判斷另兩個方向向量K2,K3與中點向量 BP的夾角大小,選取與中點向量BP的夾角較小的方向向量 K3為失真向量的方向,而失真向量的大小即為失真增量與中點向量模長的乘積。每個檢索點對應每個三角形都有唯一的失真向量,這個失真向量就代表這個三角形的失真程度,也代表檢索點在投影平面上點的挪動方式。

圖2 失真向量的確定
確定了投影平面上各個三角形失真向量的大小和方向后,對于投影平面上的任一檢索點都可以求出與此檢索點相關的所有三角形的失真向量,再對每一個失真向量在X和Y方向進行矢量分解,求出X方向上的總的矢量和,Y方向上總的矢量和。最終得到X和Y兩個方向上的向量,分別稱其為X方向平移向量和Y方向平移向量,平移向量的方向即為檢索點的移動方向,平移向量的大小即為檢索點移動的距離。如圖3所示,點B就是三角網中的一個檢索點,在它周圍有5個三角形,求出B點關于這五個三角形的失真向量,然后X,Y方向進行分解,在做矢量和,求出B點X,Y方向平移向量,就是 B點要挪動的方向和距離。然后對挪動后的平面重新進行紋理映射,就可以得到比較均衡的紋理圖片。

圖3 點的挪動
這種算法針對三維地形中每個三角形給出了失真系數的確定以及失真大小的向量度量方法,解決了一定的紋理失真問題,修復后的圖片紋理比較均勻,能比較好的刻畫紋理的細部特征。但是本文中只是針對三維地形中DEM模型進行了紋理失真的修復,也存在一定的局限性。如果能加以擴展,將有更廣的應用價值。圖4、圖5為修復前和修復后的圖片。

圖4 修復前的圖片

圖5 修復后的圖片
[1]吳亞東,韓永國等.一種基于三角形面片模型的二維紋理貼圖方法.計算機應用與軟件,2004.21(1).
[2]Eric Lengyel.詹海生等.3D游戲與計算機圖形學中的數學方法.北京:清華大學出版社,2004.(1).