Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi OpenGL: Kamera anstatt Landschaft bewegen (https://www.delphipraxis.net/54077-opengl-kamera-anstatt-landschaft-bewegen.html)

Weazy 27. Sep 2005 16:17


OpenGL: Kamera anstatt Landschaft bewegen
 
Hi Leute, ich hab da noch mal so ne frage zu opengl:

In der unten beschriebenen Szene wird doch nicht die Kamera, sondern die 3ds Szene bewegt, oder?
(d.h man meint nur die Kamera bewege sich, da alles rundherum um die Kamera bewegt und rotiert wird)

Wie kann ich nun aber die Kamera anstatt die Szene bewegen?

Delphi-Quellcode:
procedure render;
begin
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT); //Farb und Tiefenpuffer löschen
glClearColor(1,0,1, 0.0); //Hintergrundfarbe
glLoadIdentity;                                     // World Matrix zurücksetzen


glrotatef(rotationx,1,0,0);
glrotatef(rotationy,0,1,0);
gltranslatef(xpos, ypos, zpos);

Szene.Draw; // 3ds Szene zeichenen


SwapBuffers(form1.myDC);                            //scene ausgeben
end;

Vielen Dank

Speedmaster 27. Sep 2005 16:24

Re: OpenGL: Kamera anstatt Landschaft bewegen
 
Stichwort "GL_Projection" und "GL_Modelview"! Guck einfach mal auf www.delphigl.com im Wiki!

DGL-luke 27. Sep 2005 16:26

Re: OpenGL: Kamera anstatt Landschaft bewegen
 
tutorials lesen ;)

Es gibt in OpenGL keine Kamera bzw. Kamerabewegung. Die Kamera sitzt immer am Punkt (0;0;0) und schaut nach (0;0;0).

Du musst die Scene rundrum bewegen. wobei natürlich ein verschieben der Kamera um 6 Einheiten nach "links" dassselbe ist wie ein verschieben der Scene um 6 Einheiten nach "rechts".

Analog gilt das auch für Rotation.

Weazy 27. Sep 2005 16:41

Re: OpenGL: Kamera anstatt Landschaft bewegen
 
Das wusste ich schon, was ich meinte ist ender etwas mit glMatrixMode(GL_MODELVIEW) oder glMatrixMode(GL_GL_PROJECTION). Wie würde man den so ein Multiplayergame mit mehreren Kameras erstellen?

Speedmaster 27. Sep 2005 16:47

Re: OpenGL: Kamera anstatt Landschaft bewegen
 
Zitat:

Zitat von Weazy
Das wusste ich schon, was ich meinte ist ender etwas mit glMatrixMode(GL_MODELVIEW) oder glMatrixMode(GL_GL_PROJECTION). Wie würde man den so ein Multiplayergame mit mehreren Kameras erstellen?

Du kannst mit "glMatrixMode(GL_PROJECTION)" die Sicht verändern!

Weazy 27. Sep 2005 16:58

Re: OpenGL: Kamera anstatt Landschaft bewegen
 
wie geht das denn genau? Kann ich den nicht die Szene unbewegt lassen und nur die Sicht ändern oder entspricht das etwa nicht der Kamera?

Weazy 27. Sep 2005 17:53

Re: OpenGL: Kamera anstatt Landschaft bewegen
 
Ich habs Gefunden!!!! Die Funktion heisst gluLookAt!!!!

Phobeus 28. Sep 2005 11:00

Re: OpenGL: Kamera anstatt Landschaft bewegen
 
glTranslatef würde genauso gehen, gluLookAt ist nur eine Hilfsfunktion, die die Worldmatrix manipuliert. Bei uns auf der Seite gibt es ein Kamera-Tutorial, dass Dir auch dann noch weiterhelfen sollte, wenn es gleich um mehre Achsen gehen soll. Letztendlich sollte man sich bei OpenGL ein wenig von unserer Weltansicht verabschieden. Wer sagten den, dass Du Dich durch die Welt bewegst? Wenn ich mich auf der Stelle, dreht sich ja schließlich die Welt auch um mich ;-)
Rein von der Perspektive ist es ja auch egal, wer von den beiden sich bewegt. Daher muss man bei OpenGL immer ein wenig umdenken und nicht in "Kameras", sondern Objektbewegungen denken. Aber gut, dass Problem hat sich ja bereits erledigt und ich vermeide mal längere Monologe ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz