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

Aktuelle Zeit: Sa Jul 19, 2025 23:37

Foren-Übersicht » Programmierung » Einsteiger-Fragen
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 5 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Camera an ein Objekt "Kleben"
BeitragVerfasst: Di Feb 09, 2010 18:13 
Offline
DGL Member

Registriert: Do Jan 07, 2010 21:58
Beiträge: 240
Hallo,

ich bins mal wieder :)

zur zeit habe ich ferien und komme sehr gut in meinem programm vorran aber leider tauchen eben immer wieder hier und da probleme auf,

heute wollte ich die Bewegung in einem 3D-Raum Realisieren,

doch ist mir aufgefallen das die Bewegung der Kamera und die der Objekte sich unterscheiden

will ich ein Objekt bewegen benutze ich diese Formeln

Code:
  1. PositionX := (PositionX - (sin(degtorad(Rotation)) * Geschwindigkeit) * timefactor);
  2. PositionZ := (PositionZ - (cos(degtorad(Rotation)) * Geschwindigkeit) * timefactor);


bewege ich allerdings die kamera sieht der code zwar fast gleich aus, hat aber einen entscheidenden unterschied

Code:
  1. PositionX := (PositionX - (sin(degtorad(Rotation)) * Geschwindigkeit) * timefactor);
  2. PositionZ := (PositionZ + (cos(degtorad(Rotation)) * Geschwindigkeit) * timefactor);


nun benötige ich es genauso wie wir es in einem third person shooter kennen, die figur bewegt sich und die kamera immer brav hinterher damit wir unseren helden nicht aus den augen verlieren( das is jetzt nur mal en beispiel^^)

zuerst dachte ich ich könnte das einfach so machen das ich die werte PositionX und PositionY berechne das Objekt dahin rendere und dann die Kamera auf diesen Punkt stelle aber das ergebniss ist das das sich kamera und objekt genau voneinander wegbewegen

wie rum wir das nun lösen ist eigentlich egal ob wir das objekt nun an die kamera bringen oder die kamera an das objekt aber letzteres wäre mir lieber :)

hat sowas jemand schonmal gelöst? oder ist wiedermal total einfach und ich depp sehs nur nicht :mrgreen:

lg


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Camera an ein Objekt "Kleben"
BeitragVerfasst: Di Feb 09, 2010 18:33 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Also sofern du gluLookAt verwendest um die View-Matrix für die Kamera zu erzeugen, du also deine berechnete Position da einsetzt, dann sollte sich das genauso Verhalten wie eine die Transformation eines Objektes.

Ich vermute das der Fehler an einer anderen Stelle liegt (*). Oder sollte das bei X ebenfalls ein + sein? Falls du nämlich die Kamera mit glTranslate verschiebst musst du immer genau umgekehrt schieben.


(*) Ich würde deine bewegen nämlich als extrem merkwürdig bezeichnen. Du addierst nämlich immer die Rotation auf die alte Position auf, vermutlich solltest du da den Mittelpunkt des Kreises nehmen.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Camera an ein Objekt "Kleben"
BeitragVerfasst: Di Feb 09, 2010 18:48 
Offline
DGL Member

Registriert: Do Jan 07, 2010 21:58
Beiträge: 240
Code:
  1. Also sofern du gluLookAt verwendest um die View-Matrix für die Kamera zu erzeugen, du also deine berechnete Position da einsetzt, dann sollte sich das genauso Verhalten wie eine die Transformation eines Objektes.


von gluLookAt hab ich schon öfters gelesen aber genutzt habe ich es bisher noch nicht, ich verschiebe die kamera genau so wie ich es oben beschrieben habe, ich habs auch nochmals überprüft das X muss subtrahiert werden sonst bewege ich mich in die falsche richtung

und wie meinst du das mit dem zentrum des kreises? also so wie ich es mache funktioniert es auf einer ebene sehr gut

das problem ist eben nur das ich das irgendwie umrechnen muss sodass ich eben ein object von der kamera position abhänig machen kann und umgekehrt


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Camera an ein Objekt "Kleben"
BeitragVerfasst: Di Feb 09, 2010 20:23 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Mit gluLookAt kannst du die Kamera exakt in Weltkoordinaten platzieren. Die Funktion rechnet das intern um, du musst nur sagen wo das "Auge" der Kamera sein soll und auf welchen Punkt sie blicken soll. Außerdem brauchst du noch einen Vektor der einfach dahin zeigt wo (ungefähr) oben sein soll, meistens kann man einfach (0,1,0) nehmen.

Zitat:
und wie meinst du das mit dem zentrum des kreises? also so wie ich es mache funktioniert es auf einer ebene sehr gut

Ah, ich merke gerade das du die Bewegungsrichtung deines Objektes als Winkel angibst, jetzt gibt das ganze Sinn. ;)
Ich nehme meistens einen Vektor der in die Bewegungsrichtung zeigt da sich damit einfacher rechnen lässt. Z.B. kannst du einwirkende physikalische Beschleunigungen einfach auf diesen Vektor addieren. Wenn man weiß wie eine Matrix aufgebaut ist, kann man außerdem die Matrix des Objektes quasi direkt setzen, ohne das man glRotate/glTranslate braucht.

Zitat:
ich habs auch nochmals überprüft das X muss subtrahiert werden sonst bewege ich mich in die falsche richtung

Das liegt daran wie du dein Koordinatensystem definiert hast. Also linkshändiges Koordinatensystem gegen rechtshändiges Koordinatensystem. Vermutlich verwendest du nicht das was OpenGL braucht, daher musst du an irgendeiner Stelle eine Achse umkehren. Es ist ratsam einfach gluLookAt zu benutzen...macht vieles einfacher.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Camera an ein Objekt "Kleben"
BeitragVerfasst: Di Feb 09, 2010 20:34 
Offline
DGL Member

Registriert: Do Jan 07, 2010 21:58
Beiträge: 240
ok also wenn ich das jetzt richtig verstanden habe nehm ich nicht mehr zum verschieben meiner camera Gltranslatef(X,Y,Z); sondern GluLookAt...

ich werds mir anschauen

danke dir erstmal :)

€: So ich habs ersetzt und dank dem wiki eintrag weiß ich auch was was macht

das ganze war mit ein bisschen arbeit verbunden da ich nun nicht mehr einfach das objekt drehen kann sondern ja die kamera mitnehmen muss aber es funktioniert super

danke nochmals :)


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 6 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:  
cron
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.006s | 14 Queries | GZIP : On ]