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

Aktuelle Zeit: Fr Jul 18, 2025 08:57

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



Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
BeitragVerfasst: So Mai 04, 2008 18:47 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 15:18
Beiträge: 62
Hallo,

ich denke, jetzt kann ich auch mal im "richtigen" OpenGL-Forum posten ;)

Ich arbeite gerade an einem Editor für meine Engine, und will natürlich dort die Welt gleich in einem 3D-Fenster anzeigen lassen. Dort kann die Kamera mit der Maus bewegt und gedreht werden. Wenn ich mich nach links drehe, will ich aber natürlich auch, dass ich beim Vorwärtsbewegen auch in die Richtung gehe, in die ich schaue, und nicht einfach relativ zum Koordinatensystem. Das klappt ja ganz gut, solange ich mich nur "auf dem Boden" bewege. Dafür habe ich hier schon eine Antwort gefunden, ich kann mich um die Y-Achse drehen, und dann in die richtige Richtung gehen:

Code:
  1. ViewVector.X := ViewVector.X - sin(DegToRad(TurnVector.Y)) * MoveSpeed;
  2. ViewVector.Z := ViewVector.Z + cos(DegToRad(TurnVector.Y)) * MoveSpeed;

Jetzt will ich das jedoch noch so erweitern, dass ich auch nach oben und unten gehen kann. Leider habe ich aber überhaupt keine Idee, wie ich das angehen kann :(

Schonmal Danke im Vorraus.

Viele Grüße,
Yogu


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Mai 04, 2008 19:42 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Mär 09, 2005 15:54
Beiträge: 372
Wohnort: München
Programmiersprache: Delphi, C#, FPC
Code:
  1. ViewVector.y := ViewVector.y + sin(DegToRad(TurnVector.x)) * MoveSpeed;

Wobei TurnVector.x glRotate(TurnVector.x, 1, 0, 0) entspricht (bin mir gerade vom Vorzeichen her nicht sicher)

_________________
Aktuelles Projekt: Gael - Development Blog
Website: LightBlackSoft.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Mai 04, 2008 19:54 
Offline
DGL Member
Benutzeravatar

Registriert: Di Apr 29, 2008 15:18
Beiträge: 62
Danke, littleDave. Das ist ja fast schon peinlich, wie einfach das war :?

Auf jeden Fall: Jetzt klappts :D

Und für das Archiv...

So kann man sich im X- und Y-Bereich bewegen:
Code:
  1. ViewVector.X := ViewVector.X - cos(DegToRad(TurnVector.Y)) * MoveSpeed;
  2. ViewVector.Z := ViewVector.Z - sin(DegToRad(TurnVector.Y)) * MoveSpeed;
  3. ViewVector.Y := ViewVector.Y + sin(DegToRad(TurnVector.X)) * MoveSpeed;

So vorwärts:
Code:
  1. ViewVector.X := ViewVector.X + sin(DegToRad(TurnVector.Y)) * MoveSpeed;
  2. ViewVector.Z := ViewVector.Z - cos(DegToRad(TurnVector.Y)) * MoveSpeed;      
  3. ViewVector.Y := ViewVector.Y - sin(DegToRad(TurnVector.X)) * MoveSpeed;

So rückwärts:
Code:
  1. ViewVector.X := ViewVector.X - sin(DegToRad(TurnVector.Y)) * MoveSpeed;
  2. ViewVector.Z := ViewVector.Z + cos(DegToRad(TurnVector.Y)) * MoveSpeed;
  3. ViewVector.Y := ViewVector.Y + sin(DegToRad(TurnVector.X)) * MoveSpeed;

Und das Drehen dürfte klar sein ;)

Der Grund, warum die Codeschnipsel so komisch sind (eigentlich hätte ja ein Abschnitt genügt, in dem alle Achsen bewegt werden würden) ist der, dass ich das für einen Welteditor geschrieben habe. Und es gibt sicher einige hier, die das auch tun.

Nochmals Danke an littleDave.

Grüße,
Yogu


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: Google [Bot] und 4 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.007s | 15 Queries | GZIP : On ]