Frage

Ich plane eine geflieste Welt mit OpenGL zu schaffen, mit leicht gedrehten Fliesen und Häusern und Gebäuden der Welt wird aus Modellen werden. Kann mir jemand vorschlagen, was Projektion (Orthogonal, Perspektive) soll ich verwenden und wie die View-Matrix-Setup (unter Verwendung von OpenGL)?

Wenn Sie nicht verstehen, welche Art von Welt zu schaffen, ich plane, in diesem Spiel aussehen: http://www.youtube.com/watch?v= i6eYtLjFu-Y & feature = Playlist & p = 00E63EDCF757EADF & index = 2

War es hilfreich?

Lösung 2

Die Projektion von diesem Videospiel aussieht verwendet Oblique zu mir. Es gibt viele verschiedene Projektionen, nicht nur perspektivisch und orthographischer. Sehen Sie hier für eine Liste der häufigsten sind: http://en.wikipedia.org /wiki/File:Graphical_projection_comparison.png

Sie wollen auf jeden Fall Perspektive, mit einer festen Rotation um die X-Achse nur. Etwa 45-60 Grad oder davon. Wenn Sie sich nicht kümmern sich um den Vorsprung Code zum Einrichten ist die gluPerspective Funktion aus der GLU Bibliothek praktisch. Unter der Annahme, OpenGL 2.1:

glMatrixMode(GL_PROJECTION); //clip matrix
glLoadIdentity();
gluPerspective(90.0, width/height, 1.0, 20.0);
glMatrixMode(GL_MODELVIEW); //world/object matrix
glLoadIdentity();
glRotatef(45.0f, 1.0f, 0.0f, 0.0f);
/* render   */

Die letzten zwei Parameter gluPerspective ist der Abstand zu den nahen und fernen Abschneideebenen. Ihre Werte sind abhängig von der Skala Sie für die Umwelt verwendet werden.

Andere Tipps

Mit Orhtogonal vs Perspektivische Projektion ist ganz eine Kunst Stil Wahl. Die Pokemon ernst du redest ist orthogonal -. In der Tat, es ist völlig geschichtetes 2D-Sprites (kein 3D beteiligt)

OpenGL hat keine VIEW-Matrix. Es hat eine Modelview Matrix und eine Projektions-Matrix. Für Pokemon-Stil Ebene, schlage ich einfach glOrtho für die Projektion.

Nehmen wir an, Ihre Welt in XY-Raum (Koordinaten für Fliesen, Kameras und andere Objekte sind von der Form [x, y, 0]). Wenn eine einzelne Kachel Größe 1,1 ist, dann so etwas wie glOrtho (12, 9, -10, 10) wäre eine gute Projektionsmatrix (12 breit, 9 hoch, und Z = 0 ist die Grundebene) sein.

Für MODELVIEW, können Sie durch das Laden Identität, glTranslate () von der Kachelposition beginnen und dann glTranslate () durch das Negativ der Kameraposition, bevor Sie Ihre Geometrie zeichnen. Wenn Sie die Kamera drehen zu können, Sie glRotate () durch die negative (inverse) der Kameradrehung zwischen den beiden Translate () s. Am Ende erhalten Sie mit der folgenden Matrix verketten:

output = Projection × (CameraTranslation -1 × CameraRotation -1 × ModelLocation × ModelRotation) × Eingang

Die Teile in Pars sind MODELVIEW, und das " -1 " bedeutet "invers", die wirklich negativ für die Übersetzung und transponieren zur Rotation.

Wenn Sie Ihre Modelle drehen mögen auch Sie in der Regel tun, dass vor allem (vor dem ersten glTranslate ().

Schließlich schlage ich vor, die OpenGL-Foren (www.opengl.org) oder die OpenGL Subforen von www.gamedev.net könnten ein besserer Ort sein, um diese Frage zu stellen: -)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top