Registriert: Mi Jan 08, 2003 15:49 Beiträge: 266 Wohnort: Aachen
Wie sollte man Intern die Kamera verwalten? Sollte man sich eine Klasse schreiben. Arbeitet man mit gluLookAt oder mit glRotatef, glTranslatef?
Wie macht man Kamera Fahrten. Stehen die Positionen in einer Datei, diese werden ausgelesen und dort wird dann die Kamera gesetzt oder wie?
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
TOpenGL hat geschrieben:
Sollte man sich eine Klasse schreiben.
Kommt drauf an was du von deiner Kamera alles verlangst.
TOpenGL hat geschrieben:
Arbeitet man mit gluLookAt oder mit glRotatef, glTranslatef?
Spielt keine Rolle...gluLookAt macht auch nichts anderes als die aktuelle Matrix an die übergebenen Parameter anzupassen.Das geht mit glRotatef, glTranslatef oder glLoadMatrixf auch.
TOpenGL hat geschrieben:
Wie macht man Kamera Fahrten. Stehen die Positionen in einer Datei, diese werden ausgelesen und dort wird dann die Kamera gesetzt oder wie?
Ja, wo sollen die Kamerapositionen denn sonst gespeichert werden?Und je nach Anforderung wird dann entweder linear oder in Form einer Kurve zwischen den Kamerapunkten interpoliert.
Wie man intern die Kamera verwaltet hängt auch vom Spiel ab. Bei den Shootern gibt es meistens eine Kameraposition und drei Rotationswinkel.
Das geht natürlich nicht, wenn man z.B fliegt und sich frei um alle Achsen drehen kann.
Eine Idee für eine allgemeine Kamera wäre die Position, einen Vektor nach vorne und einen Vektor nach oben zu speichern. Also im Prinzip fast genau das, was man auch an gluLookAt übergibt. Diese Vektoren kann man dann beliebig drehen oder aus den drei Rotationswinkeln generieren.
Eine Klasse daraus zu machen ist eigentlich keine schlechte Idee.
Für Kamerafahrten verwendet man Kontrollpunkte und berechnet dann zwischen den Kontrollpunkten Kurven, damit die Kamerabewegung sich nicht abrupt ändert. Dazu kann man Bezier Kurven nehmen.
Nachtrag: Während ich geschrieben habe, gab es schon eine Antwort von SoS, deshalb überschneiden sich die Beiträge teilweise.
Aber beim Fliegen dreht man sich nicht im die Achsen der Koordinatensystems sondern um die eigenen Achsen. Das wäre meiner Meinung nach mit Winkeln alleine schwieriger zu realisieren.
Wenn man auf dem Kopft oder der Seite steht und sich dann nach rechts oder links dreht, dreht man sich ja nicht in die gleiche Richtung wie normal. Ich meinte damit Fliegen im Sinne eines Weltraumshooters.
Registriert: So Dez 29, 2002 10:37 Beiträge: 251 Wohnort: Ulm
ja klar, so hab ich das eigentlich auch gedacht, aber für mich ist zum beispiel eine kamera folgendes:
Objekt mit:
RichtungsVektor
Positionsvektor
normalenvektor
upvektor
und mit dem sind es dann insgesamt 6 winkel, die man irgendwie nutzen kann.. naja, den richtungsvektor kann man mittels (wie es gluLookAt macht) eines punktes, auf den geblickt werden soll.. errechnen, das ist ja nicht die schwierigkeit. und wenn das obige die kammera ist, dann ist es auch völlig egal, ob die kammera für 3rd-person, 1st-person, weltraum, .. spiele genutzt wird, denn über diese 4 vektoren lässt sich alles weitere errechnen.
Registriert: So Dez 29, 2002 10:37 Beiträge: 251 Wohnort: Ulm
stimmt schon aber bei mir ist gerade der vorteil, wenn ich jetzt (noch) mit vektoren arbeite (ich denke, ich steige bald auf matrizen um), dass ich in das wieder reinkomm, was wir zuletzt (vor den ferien) in der schule gemacht haben.. da ging es nämhlich auch um winkel, vektoren, winkel zwischen vektoren, skalarprodukt und so..
Mitglieder in diesem Forum: 0 Mitglieder und 0 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.