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

Aktuelle Zeit: Fr Jul 18, 2025 12:30

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



Ein neues Thema erstellen Auf das Thema antworten  [ 19 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: Kamera nur mit y-Achsen Drehung
BeitragVerfasst: Fr Nov 21, 2008 22:43 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Apr 09, 2008 16:28
Beiträge: 52
Wohnort: Münster
Hey
ich such eine Kamera Klasse die wie eine Ego-Shooter Kamera funktioniert. (Also ne ganz kleine Version der normalen Kamera Klasse).
D.h. man soll sich im Kreis um sich selbst drehen können und dann auf einer festgelegten y-Höhe immer in die Sichtrichtung geradeaus bewegen können.

Hat da jemand nen Tipp wo ich sowas finden kann?
Die Artikel zu Kameras hier im Forum beziehen sich soweit ich gesehen hab ja immer auf eine Drehung auf der x,yund z Achse,desshalb frag ich das nochmal hier.
Würde mich wirklich freuen wenn da jemand ne Antwort hätte! :)
LG

_________________
"Sometimes it pays to stay in bed on Monday, rather than spending the rest of
the week debugging Monday's code."
-- Dan Salomon


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Kamera nur mit y-Achsen Drehung
BeitragVerfasst: So Nov 23, 2008 18:04 
Offline
DGL Member

Registriert: Sa Nov 24, 2007 11:59
Beiträge: 116
Programmiersprache: FreePascal
Eigentlich recht einfach, selbst zu implementieren: (ungetestet)

Die Kameraverschiebung:
Code:
  1. glRotatef(rotation, 0, 1, 0); // Drehung um Y-Achse um rotation Grad
  2. glTranslatef(-X, -Y, Z); // Y ist die Höhe, X und Z die entsprechenden Koordinaten


Das Berechnen von neuen Koordinaten:
Code:
  1. if keyPressed[VK_UP] then // Oder auch SDLK_UP, falls du mit SDL arbeitest
  2.   begin
  3.   // Neue Koordinaten berechnen
  4.   // Sin und Cos sind in der math-unit zu finden
  5.   X := X + irgendeinfaktor * sin(degtorad(rotation)); // irgendeinfaktor ist für die Geschwindigkeit zuständig
  6.   Z := Z + irgendeinfaktor * cos(degtorad(rotation));
  7.   end
  8. else if keyPressed[VK_LEFT] then
  9.   rotation := rotation - 1
  10. else if keyPressed[VK_RIGHT] then
  11.   rotation := rotation + 1;


damit kann man zwar jetzt nur vorwärts laufen und das nichtmal smooth, aber das ist ganz einfach zu erweitern.


Zuletzt geändert von Ireyon am Mi Dez 10, 2008 19:38, insgesamt 1-mal geändert.

Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Nov 24, 2008 15:17 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Apr 09, 2008 16:28
Beiträge: 52
Wohnort: Münster
Jaaaaa dankeeee :P :)
endlich funktionierts!
Genau das wollt ich haben....
Vielen Dank :)

_________________
"Sometimes it pays to stay in bed on Monday, rather than spending the rest of
the week debugging Monday's code."
-- Dan Salomon


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Nov 24, 2008 20:26 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
@Ironeye: Kannst du das im Artikel Kamera einfügen? Einfach ne Überschrift "Einfache Egoshooter-Kamera" einbauen und dann drunter posten.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Nov 24, 2008 20:41 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Apr 09, 2008 16:28
Beiträge: 52
Wohnort: Münster
Ja das ist ne gute Idee :)
Sowas werden zumindest von den anderen Anfängern ja auch noch einige brauchen.

_________________
"Sometimes it pays to stay in bed on Monday, rather than spending the rest of
the week debugging Monday's code."
-- Dan Salomon


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Dez 07, 2008 20:54 
Offline
DGL Member
Benutzeravatar

Registriert: Di Aug 12, 2008 16:50
Beiträge: 22
Schade, das geht nicht.
Wenn man sich nach vorne bewegen will, bewegt man sich nicht in Blickrichtung, sondern immer nur in die gleiche :(

http://www.Typhox.net/Project1.exe

Ich suche nun schon seit einigen Wochen und habe noch immer keine Lösung gefunden, wie man sich in der Welt bewegen kann...


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Dez 07, 2008 21:24 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jan 31, 2007 18:32
Beiträge: 150
Programmiersprache: Pascal
erst Verschieben dann derehen oder irre ich mich gerade dann müsste mann sich immer entlang der Gerehten Ansicht bewegen


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Dez 07, 2008 21:39 
Offline
DGL Member
Benutzeravatar

Registriert: Di Aug 12, 2008 16:50
Beiträge: 22
Du irrst dich.
Wenn ich erst glTranslate und dann glRotate mache, dreht sich das Objekt immer um den Punkt (0|0), egal wie stark man die Matrix verschiebt.
Eigentlich müsste es so gehen, wie oben beschrieben, aber es funktioniert einfach nicht.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 08, 2008 16:24 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Komisch. Entweder hat Ironeye irgendwas anders gemacht, oder irgendwas ist beim Abschreiben schief gelaufen...

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 08, 2008 17:28 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Jan 31, 2007 18:32
Beiträge: 150
Programmiersprache: Pascal
Also nach einigem nachdenken beharr ich auf dem was ich oben gesagt haben...
Wenn du nähmlich erst drehst dann ist deinen Bewegung immer auf ein und dieselbe Position egal um wie viel du gedreht hast...bei einer funktionierenden Kamera solltes du also zunächst verschieben um dann um den ursprung zu drehen somit also eine drehung entlang der gedrehten Achse..


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Dez 08, 2008 18:08 
Offline
DGL Member
Benutzeravatar

Registriert: Di Aug 12, 2008 16:50
Beiträge: 22
FrenK, genau das habe ich auch seit dem ersten Mal gedacht. Es müsste eigentlich absolute Koordinaten geben können, an die hin translatiert wird und von dort aus müsste man dann um den Punkt herum drehen können. Das geht aber nicht, denn beim Translatieren verändert sich zwar der Punkt im Koordinatensystem - für glRotate scheint das aber ziemlich egal zu sein.

SourceCode: http://www.typhox.net/OpenGLProjekt1.zip

Kann mir nicht evtl mal jemand 'nen Beispiel oder sowas schicken/schreiben, damit ich (und vielleicht noch andere) weitermachen kann?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Dez 10, 2008 19:41 
Offline
DGL Member

Registriert: Sa Nov 24, 2007 11:59
Beiträge: 116
Programmiersprache: FreePascal
Ändere doch da, wo die X-Koordinate berechnet wird, einfach mal das Vorzeichen (also von + nach - und umgekehrt :D ). Habe den Code da oben nicht getestet, sorry.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Dez 10, 2008 21:53 
Offline
DGL Member
Benutzeravatar

Registriert: Di Aug 12, 2008 16:50
Beiträge: 22
Zum einen verstehe ich nicht wo genau ich jetzt das Vorzeichen ändern soll, zum Anderen bringt es nichts, ich hab afaik alle Möglichkeiten in der Richtung durch.
Es muss entweder an der Berechnung, oder an OpenGL liegen, und ich habe im Moment eher das Gefühl, dass es an OpenGL liegt, da das gleiche Beispiel in der OpenGL-Version des NintendoDS mit C++ funktioniert...

Ohne eine Lösung für das Problem komme ich also nicht weiter und, dass man die Kamera bewegen kann ist schon irgendwie wichtig für 'nen 3D-Spiel, oder?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Dez 10, 2008 22:10 
Offline
DGL Member

Registriert: Sa Nov 24, 2007 11:59
Beiträge: 116
Programmiersprache: FreePascal
Ist es. aber bei mir bewegt sich die Kamera in deiner Testanwendung auf der X-Achse genau in die falsche Richtung, deswegen dachte ich, dass es daran läge. Die Z-Translation scheint zu stimmen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mi Dez 10, 2008 22:56 
Offline
DGL Member
Benutzeravatar

Registriert: Di Aug 12, 2008 16:50
Beiträge: 22
Ich blaub' ich hab's jetzt mit deiner Hilfe hingekriegt. Zumindest scheint es erstmal so.
War tatsächlich irgendwo 'nen X-Wert, der noch negativ gemacht werden sollte.
Dass der ganz am Anfang genannte Code damit richtig ist, kann ich so nicht bestätigen.

Vielen Dank

Nichtsdestotrotz kann ich jetzt zwar die Kamera um die Y-Achse problemlos drehen, für die anderen beiden Achsen habe ich nach wie vor keine Ahnung, wie das gehen soll...?


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 19 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 9 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.010s | 15 Queries | GZIP : On ]