Hallo Zusammen,
ich hänge grad an einem mathematischem Problem, wo ich merke, ich bin etwas eingerostet. Ich brauche es für ein Spiel, bei dem ich UI in ein 3D-Quad rendern kann. Damit ich vernünftige Hittests machen kann, möchte ich die 2D-Koordinate relativ zum 3D-Quad in einer vorgegeben Zielauflösung haben. Ich habe es aufgezeichnet:
Es handelt sich also um ein 3D-Quad, welches die Breite a und die höhe b im Worldspace hat. Zusätzlich ist die Worldposition in der Mitte (p). Zu diesem ebenen Quad sei mir auch die dazu gehörige Normale n bekannt, die in Richtung des Betrachter orientiert ist.
Ich möchte jetzt, wenn ich mit der Maus über das Quad fahre, die projizierte 2D-Koordinate d für das Koordinatensystem in grün haben. Die Skalierung des Koordinatensystems kann identisch sein wie zu den Weltkoordinaten sein.
Mein Weg ist bisher wie folgt:
1) Projektion von Screenkoordinate zu 3D-Ray mittels Rückprojektion
2) Plane-Ray intersection, Zielpunkt auf der Ebene bestimmen -> nennen wir diesen Punkt i
3) Differenzvektor von p zu i bilden.
Allerdings kann ich jetzt natürlich nicht die Komponenten des Differenzvektors aus 3) relativ zur oberen Linken ecke nehmen, weil das Quad ja gedreht ist. Ich hoffe jemand kann mir folgen und mir einen Tipp geben, wie ich an die Position herankomme.