2017-03-16 49 views
1

假設我有一個四邊形,並且正在對其應用一個池表紋理。我知道前三個頂點的UV座標(用藍色突出顯示),但不是第四個頂點。從前三個確定第四組UV座標

enter image description here

例如上述圖像中,我知道左上角的座標[0,0],右上座標[1,0]和左下方是[0,1] 。我如何在數學上確定右下角的UV座標是[1,1]?我想弄清楚第四組紫外線座標在數學上是什麼,這樣三角形中顯示的紋理我知道紫外線座標將適合四邊形。

enter image description here

我需要能夠處理複雜的情況。 UV座標和X,Y和Z座標可以是任何東西,除非我知道它始終是一張平坦的臉。

enter image description here

最後,我需要能夠計算出本作與任意數量的頂點的面。

enter image description here

我對這個最初的方法涉及檢查你多座標超過一定距離X的變化,那麼同樣的Y和Z,直到我發現了一個關係,但我一直在尋找新的例外情形邏輯和我想知道是否有一個更簡單的方法。

如何內插UV來計算第四,第五...第n點?沒有特定的編碼語言 - 我只是在尋找方法。

回答

1

計算缺失U/V屬性的頂點的barycentric coordinates,並使用這些座標來外推缺失的屬性(U/V或任何其他實際值)。

下面是一個完整的推導和溶液額外面頂點與P位置和U/V座標T

P1 = (x1, y1, z1), T1 = (u1, v1) 
P2 = (x2, y2, z2), T2 = (u2, v2) 
P3 = (x3, y3, z3), T3 = (u3, v3) 
P = (x , y , z), T = (u , v) = ? 

上支撐所述三角形(P1P2P3)(該平面上的點P從而對整個面)具有重心座標l1l2l3

P = l1 P1 + l2 P2 + l3 P3 

with l1 + l2 + l3 = 1 

這可以被改寫爲:

P - P1 = (l1 - 1) P1 + l2 P2 + l3 P3 
     = -(l2 + l3) P1 + l2 P2 + l3 P3 
     = l2 (P2 - P1) + l3 (P3 - P1) 

with l1 = 1 - l2 - l3 

投影矢量V = P - P1到矢量V21 = P2 - P1V31 = P3 - P1給出:

< V, V21 > = l2 < V21, V21 > + l3 < V31, V21 > 
< V, V31 > = l2 < V21, V31 > + l3 < V31, V31 > 

其中< V1, V2 >是3D的點積矢量V1V2

所以(l1l2l3)可以P通過求解線性系統找到:

G L = (< V21, V21 > < V31, V21 >) (l2) = (< V, V21 >) = D 
     (< V21, V31 > < V31, V31 >) (l3) (< V, V31 >) 

L = (l2) = G^-1 D 
    (l3) 

and l1 = 1 - l2 - l3 

這可以明確地解決:

d = < V21, V21 > < V31, V31 > - < V21, V31 >^2 

l1 = 1 - l2 - l3 
l2 = (< V31, V31 > < V, V21 > - < V21, V31 > < V, V31 >)/d 
l3 = (< V21, V21 > < V, V31 > - < V21, V31 > < V, V21 >)/d 

注意,由於位置P附加頂點在三角形之外(P1,P2,P3),不等式l1, l2, l3 >= 0不一定會持有。

最後計算外推的U/V座標的附加頂點的T

T = l1 T1 + l2 T2 + l3 T3