XYZ aus UV berechnen
Übersicht BlitzMax, BlitzMax NG Allgemein
ThoemBetreff: XYZ aus UV berechnen |
Sa, Jan 22, 2011 21:02 Antworten mit Zitat |
|
---|---|---|
Hallo...
Kennt jemand von euch einen gängigen Algorithmus XYZ Koordinaten aus UV's innerhalb eines Dreiecks zu berechnen. Gegeben seien die XYZ- sowie die UV-Texturkoordinaten der Deiecksecken. Ich möchte nun die 3D-Position eines Punktes im 3D-Raum anhand seiner UV-Pendants bestimmen. |
||
Thoem... |
Vertex |
So, Jan 23, 2011 0:21 Antworten mit Zitat |
|
---|---|---|
Mein Ansatz (aber noch nicht zu Ende gedacht) benutzt die Parameterdarstellung einer Ebene:
(Parameterdarstellung) Die Ebene sei die jenige, auf der das Dreieck liegt. Die Ortsvektoren der Eckpunkte des Dreiecks nenne ich mal e1, e2 und e3 Dabei ist - q der Ortsvektor Deines gesuchten Punktes - p ein Punkt auf der Ebene. Beispielsweise wissen wir von e1, dass dieser auf der Ebene liegt also p = e1 - v1 und v2 sind die Spannvektoren nehmen wir v1 = (e2 - e1) und v2 = (e3 - e1) - s und t die Parameter, um den Punkt q auf Ebene zu beschreiben. Mit der Annahme, dass der 3D-Raum linear in den UV-Raum abgebildet werden kann, machen wir so eine Parameterdarstellung auch für die "UV-Ebene": q' = p' + s*v1' + t*v2' mit: - q' deine gegebenen UV-Koordinaten - p' den UV-Koordinaten vom Eckpunkt 1 - v1' = UV-Koordinaten von Eckpunkt 2 - UV-Koordinaten von Eckpunkt 1 - v2' = UV-Koordinaten von Eckpunkt 3 - UV-Koordinaten von Eckpunkt 1 Die Gleichung musst Du nach s und t umstellen und dann setzt Du s und t in die erste Ebenengleichung ein und erhälst q, also Deine gesuchten XYZ-Koordinaten. Das ist allerdings jetzt aus dem Bauch heraus entstanden, also keine Garantie, dass es funktioniert Ciao Olli |
||
Vertex |
So, Jan 23, 2011 3:06 Antworten mit Zitat |
|
---|---|---|
Hey, funktioniert tatsächlich. Hatte irgendwie Lust das mal umzusetzen (Dein Glück ) und das kam dabei heraus.
BlitzBasic: [AUSKLAPPEN] Type TVector3f Also der rote Punkt auf der Textur markiert die gegebene UV-Koordinate, und der gelbe Cube Marker ist die ausgerechnete XYZ-Koordiante. Die Rechnungen für C (Hilfsfaktor), S und T entstammen einem simplen Gleichungssystem. q' = p' + s*v1' + t*v2' die erste Gelichung erhälst Du durch betrachten der aller X-komponenten und die zweite durch betrachten aller Y-Komponenten. Das Gleichungssystem habe ich dann gelöst, indem ich die zeite Gleichung mit C multipliziere und dann mit der ersten Gleichung addiere. C ist so gewählt, dass dabei die erste Unbekannte T verschwindet und ich nach S umstellen kann. Mit dem errechneten S kann man dann an T heran kommen. Ciao Olli |
||
vertex.dreamfall.at | GitHub |
Thoem |
So, Jan 23, 2011 19:38 Antworten mit Zitat |
|
---|---|---|
Hab ganz vielen Dank.
Das ist genau das, was ich gesucht hatte. Ich war schon dabei, mich mit Baryzentrischen Koordinaten auseinanderzusetzen. |
||
Thoem... |
Übersicht BlitzMax, BlitzMax NG Allgemein
Powered by phpBB © 2001 - 2006, phpBB Group