Mode7-ähnliche Perspektive in Leinwand verwandeln?

Ich mache eine Canvas-basierte Game-Engine und frage mich, ob jemand gute Informationen darüber hat, wie man eine Perspektive für die Draufsicht erreicht. Was ich suche, ist irgendwo in der Mitte zwischen der traditionellen Vogelperspektive und der alten SNES-Modus7-Ansicht. Nur ein kleiner Winkel, um die Illusion von 3D zu erzeugen.

Ich versuche herauszufinden, was der beste Weg ist, um mit dem Perspektivversatz umzugehen. Ich mache keine Rotationen, damit 3D-Matrix-Inhalte über Bord gehen, aber ich muss in der Lage sein, die Kartenebenen in einem konsistenten Winkel darzustellen, und es wäre schön, wenn der Winkel einstellbar wäre. Ich muss mich auch mit der Tiefenverzerrung befassen. Grundsätzlich sollte die untere Pixelreihe 1: 1 Pixel breit und hoch sein, dann würde sie für jede Zeile zum Beispiel 5% kleiner werden oder so ähnlich. Was ich möchte, ist, in der Lage zu sein, eine große Leinwand als Textur und dann einen Kamerawinkel zwischen 0 und 90 zu liefern, wobei 0 perfekt horizontal und 90 aus der Vogelperspektive ist.

Hat jemand ähnliche Tutorials oder Beispielcodes? Ich habe ein bisschen online gesucht, aber alles, was ich gefunden habe, scheint entweder für die Verwendung in dieser bestimmten Anwendung ungeeignet oder übermäßig komplex zu sein und alle möglichen verrückten 3D-Schräglauf- und Rotationsaufgaben zu erledigen. Ich möchte nur das normale gekachelte Gitter nehmen und es ein wenig zurücklehnen, keine Rotationen oder komplizierte Dinge wie diese.

Hier ist ein Beispiel dafür, was ich will; Hier ist ein Beispiel. http://img801.imageshack.us/img801/2176/perspectivesample.jp

Die untere Pixelreihe hat ein Pixelverhältnis von 1: 1, und jede Zeile darüber wird horizontal und vertikal zunehmend kürzer. Die Quelltextur des oberen Mittenbereichs ist normalerweise etwa halb so hoch wie der untere Mittenbereich, wurde jedoch vertikal und horizontal geschrumpft, um der Perspektive zu entspreche

Was ich denke, funktioniert am besten, wenn Sie den aktuellen Ansichtsfensterstatus in einer flachen Ansicht aus der Vogelperspektive auf eine andere Leinwand rendern, mit ca. 50% mehr Platz oben und an den Seiten die tatsächlich sichtbare Leinwand.

Das einzige Problem ist, dass ich beim Berechnen von Winkeln und Ähnlichem an Mathe scheiße.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage