Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 11:22

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Kamera erstellen...
BeitragVerfasst: So Sep 12, 2010 08:56 
Offline
DGL Member

Registriert: Sa Mai 15, 2010 13:25
Beiträge: 13
Wenn ich eine Kamera erstelle die über das Gelände fährt, was passiert eigentlich mit der 3d-Welt?
Oder was ist überhaupt eine Kamera bei Opengl?
Ich habe jetzt einen Würfel als Gelände, also die Höhe habe ich auf 0.001.
Wie kann ich jetzt eine Kamera simulieren die über das Gelände fährt und evtl auch in einem Winkel den ich festlege in die Lüfte steigt.

Gruss


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Kamera erstellen...
BeitragVerfasst: So Sep 12, 2010 10:06 
Offline
DGL Member

Registriert: Di Okt 13, 2009 17:25
Beiträge: 365
Programmiersprache: C++
Also erstmal: So etwas wie eine Kamera gibt es eigentlich nicht in OpenGL, bzw. man sieht immer vom Ursprung des Koordinatensystems aus. Wenn du also simulieren willst, dass sich die Kamera an einem anderen Ort befindet, musst du die restliche Welt durch Anpassung der Modelview-Matrix verschieben und rotieren. Hier kann dir gluLookAt viel Arbeit abnehmen. Mit den ersten drei Parametern gibst du die Kamera-Position an und mit den darauffolgenden die Drehung.


Zuletzt geändert von mrtrain am Mi Aug 31, 2011 20:49, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Kamera erstellen...
BeitragVerfasst: So Sep 12, 2010 10:09 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Zitat:
Oder was ist überhaupt eine Kamera bei Opengl?

Genau genommen gibt es in OpenGL keine Kamera in dem Sinne. Es gibt zwei Matrizen die in OpenGL für die Geometrie zuständig sind: Die ModelView-Matrix und die Projection-Matrix. Du kannst über glMatrixMode() wählen welche du beeinflussen willst, kennst du sicher schon.
Matrizen sind letztlich nur Felder von 4x4 Zahlen. Mit einer Matrix kann man 3D-Punkte von einem Koordinatensystem in ein anderes überführen. Die ModelView-Matrix verschiebt die Welt so, dass der Punkt (0,0,0) dort liegt wo sich die Kamera befinden soll. Außerdem wird die Welt so gedreht, dass die negative Z-Achse der gewünschten Blickrichtung entspricht. Des weiteren kann man in der Modelview-Matrix auch noch skalieren oder scheren, aber das lassen wir hier mal raus.
Die Projektionsmatrix sorgt dann (in Zusammenarbeit mit der perspektivischen Division) für den 3D-Effekt und skaliert die Szene so das der gewünschte Sichtbereich im Einheitswürfel -1...1 liegt. Von dort aus wird dann auf echte Fensterkoordinaten hoch gerechnet, also das was du mit glViewport einstellst.

Wichtige Eigenschaft von Matrizen:
Hat man zwei Matrizen A und B, sowie einen Punkt p, dann gilt:
A * (B * p) = (A*B)*p = C*p
D.h. statt beide Matrizen nacheinander auf einen Punkt anzuwenden kann ich auch einfach beide Matrizen multiplizieren und eine Matrix C erhalten die beide Transformationen durchführt.

Die ModelView-Matrix heißt nicht grundlos ModelView, sie besteht nämlich aus zwei Teilmatrizen: Model und View. Der Model-Teil transformiert das lokale Koordinatensystem deiner Geometrie ins Welt-Koordinatensystem. Der View-Teil ist dann die "Kamera".

Zitat:
Wie kann ich jetzt eine Kamera simulieren die über das Gelände fährt und evtl auch in einem Winkel den ich festlege in die Lüfte steigt.

Die Funktion gluLookAt ist sehr hilfreich. Damit legst du fest an welcher Stelle im Welt-Koordinatensystem sich die Kamera befinden soll und auf welchen Punkt sie blicken soll. Außerdem wird noch ein Up-Vektor benötigt. Natürlich kannst du das auch mit glTranslate, glRotate usw. hinbekommen, aber gluLookAt ist einfach wesentlich bequemer und einfacher.

Um den Öffnungswinkel der Kamera und das Seitenverhältnis festzulegen eignet sich gluPerspective, was dir nämlich bequem die Projektionsmatrix erstellt.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 8 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 14 Queries | GZIP : On ]