Wie ordne ich eine quadratische Textur einem Dreieck zu?


13

Ich möchte die Texturkoordinaten für Punkt P finden. Ich habe die Eckpunkte des Dreiecks und ihre entsprechenden UV-Koordinaten.

Die Zahlen in den kleinen Quadraten in der Textur repräsentieren Farbwerte.

Wie werden die UV-Koordinaten von P berechnet?

Bildbeschreibung hier eingeben


Es gibt eine affine Transformation, die jede Ecke ihrer Texturkoordinate zuordnet. Mit dieser Transformation können Sie P ihrer UV zuordnen.
Ratschenfreak

@ratchetfreak könntest du mir einen Link geben?
John John

Es gibt eine gute aufzuschreiben, wie der Schnittpunkt Berechnung zu tun sowie barycentric Kabel Berechnung in einem Rutsch in diesem Papier . Dies läuft im Wesentlichen darauf hinaus, das Dreieck zu transformieren.
Joojaa

Antworten:


14

Dies wird durch Barycentric Interpolation erreicht .

Erstens haben wir die baryzentrischen Koordinaten finden . Schwerpunktkoordinaten stellen dar, wie viel Gewicht jeder Scheitelpunkt zum Punkt beiträgt, und können verwendet werden, um jeden Wert zu interpolieren, der an den Scheitelpunkten über die Fläche eines Dreiecks bekannt ist.P

Betrachten Sie die 3 inneren Dreiecke , P B C und P C A .ABPPBCPCA

Bildbeschreibung hier eingeben

Wir können sagen, dass die Schwerpunktskoordinate oder das Gewicht des Scheitelpunkts auf dem Punkt P proportional zu dem Verhältnis der Fläche des inneren Dreiecks P B C zur Fläche des gesamten Dreiecks A B C ist .APPBCABC

Dies ist intuitiv klar , wenn man bedenkt , dass als nähert sich A das Dreieck P B C größer wird und die beiden anderen werden kleiner.PAPBC

1

Die Methode zur Berechnung der Schwerpunktkoordinaten ist:

BaryA=(ByCy)(PxCx)+(CxBx)(PyCy)(ByCy)(AxCx)+(CxBx)(AyCy)BaryB=(CyAy)(PxCx)+(AxCx)(PyCy)(ByCy)(AxCx)+(CxBx)(AyCy)BaryC=1BaryABaryB

Die Herleitung und Argumentation wird im Wikipedia-Artikel erklärt .

P

Puv=BeinryEINEINuv+BeinryBBuv+BeinryCCuv

Die Argumentation wird auch in dieser Präsentation sehr gut erklärt .

Siehe auch diese Frage für effiziente Berechnungsmethoden.


BaryB(AyCy)

Ich glaube nicht. Es ist dasselbe im Wikipedia-Artikel und es scheint korrekt zu sein, nach einer Testberechnung, die ich durchgeführt habe.
Rotem

(AyCy)ACy=(AyCy)

1
P
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.