2017-03-16 4 views
1

私はクワッドを持っていると言って、それにプールテーブルのテクスチャを適用しています。最初の3つの頂点(青で強調表示されています)ではUV座標がわかりますが、4番目ではありません。上記画像における例えば最初の3つからUV座標の4番目のセットを確定する

enter image description here

、Iは[1,0]左上座標は、[0、0]、右上座標は[1,0]であり、左下されていることを知っています。右下のUV座標を数学的に決定するにはどうすればよいですか?私はUV座標の4番目のセットが数学的に何であるかを知りたいので、UV座標がクワッドに収まるとわかる三角形のテクスチャが表示されます。

enter image description here

私は複雑な状況に対処できるようにする必要があります。私はそれが常に平らな面であることを知っていることを除いて、UV座標とX、Y、Z座標は何でもかまいません。

enter image description here

最後に、頂点の任意の数の面でこれを計算できるようにする必要があります。これまで私の最初のアプローチは、私が関係を見つけたが、私はそれに新しい例外を探し続けるまで、Uは、特定のX距離を超える変更を調整どのくらいのチェック、YとZのために、同じ関与

enter image description here

ロジックと私は単純な方法があるのだろうかと思っています。

UVを補間して4番目、5番目... 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 

これはのように書き換えることができる:ベクターV21 = P2 - P1V31 = P3 - P1上ベクターV = P - P1を投影

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 

を与える:

< V1, V2 >が3Dベクトル V1V2のドット積である
< V, V21 > = l2 < V21, V21 > + l3 < V31, V21 > 
< V, V31 > = l2 < V21, V31 > + l3 < V31, V31 > 

だから(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 
関連する問題