Wie wende ich die richtige Perspektive auf diese OpenGL ES-Textur an?

Ich möchte mein Ziel beschreiben und ein Feedback zu einer vorgeschlagenen Lösung erhalten. Ich bin ziemlich neu in OpenGL ES (oder OpenGL überhaupt), sei also bitte sanftmütig. Ich möchte auch erwähnen, dass es sich bei der Plattform um ein iPad (iOS) handelt, das Einschränkungen unterliegt.

Zielsetzung: Damit der Benutzer Scheitelpunkte platzieren kann, in denen eine Textur ordnungsgemäß in der richtigen Perspektive (oder zumindest in einer einstellbaren Perspektive) gezeichnet werden soll. Um zu erklären, was ich meine, betrachten Sie das folgende Beispiel.

Nehmen wir an, wir haben ein Foto eines Hauses mit einem entsprechenden Rasen davor. Nun möchte ich einen (benutzerspezifischen) Pfad mit Kacheln (Textur) so pflastern, dass die Perspektive richtig aussieht. Wenn die Ansicht nur orthogonal ist, sind die Kacheln vollständig quadratisch, was nicht realistisch ist, wenn das Bild eine gewisse Tiefe aufweist.

Ein Ansatz wäre nun, eine perspektivische Ansicht mit einem Kegelstumpf auf OpenGL ES einzurichten. Dann lege ein Flugzeug (wie unten) und lege die Bildtextur für den Anfang drauf.

Nun, wie Sie es von dem obigen Bild erwarten, wird das Bild verzerrt. Aber es ist in Ordnung, denn wenn wir die Ebene nach hinten kippen (so dass sie perfekt an die Grenzen der Anzeige angepasst ist), wird das Bild quadratisch angezeigt.

Wenn der Benutzer jetzt den zu befestigenden Bereich definiert, können wir diese Punkte in demselben Winkel wie die geneigte Ebene platzieren und dann einfach eine Textur mit quadratischen Kacheln einfügen, und sie werden mit einer Perspektive angezeigt. Wenn unser Neigungswinkel falsch ist, kann der Benutzer ihn manuell einstellen. In diesem Fall werden die Eckwinkel der Ebene in der obigen Abbildung angepasst und die Ebene wird anders geneigt, um sie an die Anzeige anzupassen. Die Kacheltextur erscheint dann aus einem anderen Blickwinkel.

Ist dies ein praktikabler Ansatz oder gibt es einen anderen, besseren Weg, dies zu tun? Ich denke, es ist ein hässlicher Hack, der möglicherweise mit meinen begrenzten Fähigkeiten in der 3D-Programmierung zu tun hat.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage