Aktuelle Zeit: 23.12.2024, 00:21

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Rotieren
BeitragVerfasst: 15.04.2009, 14:44 
Offline
Benutzeravatar

Registriert: 24.07.2007, 23:11
Beiträge: 283
Guten tach,

Ich zerbrech mir heut schon den ganzen Tag den Kopf und komm nich auf kein sinvolles Ergebnis. Ich will ein Raumschiff immer in seine X Richtung fliegen lassen, habe dazu die Rotation von ihm und die Geschwindigkeit und Update seine Position. Jedoch fliegt er immer geradeaus, da setPosition vom Globalen Koorsys ausgeht, mir ist klar warum aber wie macht mans besser?

Code:
   
this->Position.X += this->movmentSpeed;
this->LookAt.Y += this->rotationSpeed;

this->MeshSN->setRotation(this->LookAt);
this->MeshSN->setPosition(this->Position);

_________________
Be Fluffy!
kemomi.de


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Rotieren
BeitragVerfasst: 15.04.2009, 14:50 
Offline
Moderator
Benutzeravatar

Registriert: 25.03.2007, 18:11
Beiträge: 834
Wohnort: Hagen, NRW
Du holst dir die Transformationsmatrix des Raumschiffs und rotierst damit den Geschwindigkeitsvektor.

Also ungefähr so:
Code:
matrix4 m = node->getAbsoluteTransformation();
vector3df v( 1, 0, 0 );

m.rotateVec( v );

vector3df position = node->getPosition();
position += v;
node->setPosition( position );


Ach und btw:
Dein Code sieht so aus, als ob die deine Bewegung von der Framerate abhängig machst. Mach sie lieber von der Zeit abhängig, dann hast du bei jeder Framerate die gleiche Bewegungsgeschwindigkeit.

_________________
Phenom X4 9950 BE | 6144MB DDR2-800 | GeForce 8800GT 512MB | Asus M3A32-MVP Deluxe | 2TB HDD | 520W Seasonic NT | Soprano Tower | Samsung 22" TFT + Fujitsu-Siemens 17" TFT + Toshiba 42" FullHD LCD | Windows 7 Proessional x64
Behind the Brain


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Rotieren
BeitragVerfasst: 15.04.2009, 14:56 
Offline
Benutzeravatar

Registriert: 24.07.2007, 23:11
Beiträge: 283
jo die zeit hätte noch rein gemusst weiß aber noch nich wie ichs geschickt einfädle bzw hat irrlicht nen timer?

_________________
Be Fluffy!
kemomi.de


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Rotieren
BeitragVerfasst: 15.04.2009, 15:01 
Offline
Moderator
Benutzeravatar

Registriert: 25.03.2007, 18:11
Beiträge: 834
Wohnort: Hagen, NRW
Jup. IrrlichtDevice::getTimer()

_________________
Phenom X4 9950 BE | 6144MB DDR2-800 | GeForce 8800GT 512MB | Asus M3A32-MVP Deluxe | 2TB HDD | 520W Seasonic NT | Soprano Tower | Samsung 22" TFT + Fujitsu-Siemens 17" TFT + Toshiba 42" FullHD LCD | Windows 7 Proessional x64
Behind the Brain


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Rotieren
BeitragVerfasst: 15.04.2009, 15:04 
Offline
Benutzeravatar

Registriert: 24.07.2007, 23:11
Beiträge: 283
Und Drehen tuts sich nun aber nicht wirklich so wie soll...
im Rotationsvektor is halt in Y die Gradzahl drin um dies sich gedreht werden soll
und in Position.X is die Geschwindigkeit drin zwischen 0 und 10

also hab ich egtl streng gesehen nur ne beschleunigung und nen winkel und keine 2 vektoren

_________________
Be Fluffy!
kemomi.de


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Rotieren
BeitragVerfasst: 15.04.2009, 15:20 
Offline
Moderator
Benutzeravatar

Registriert: 25.03.2007, 18:11
Beiträge: 834
Wohnort: Hagen, NRW
Du rotierst erst die Node mit setRotation( vector3df( 0, Y, 0 ) ) und dann den oben geschriebenen Code um den Geschwindigkeitsvektor zu rotieren.

_________________
Phenom X4 9950 BE | 6144MB DDR2-800 | GeForce 8800GT 512MB | Asus M3A32-MVP Deluxe | 2TB HDD | 520W Seasonic NT | Soprano Tower | Samsung 22" TFT + Fujitsu-Siemens 17" TFT + Toshiba 42" FullHD LCD | Windows 7 Proessional x64
Behind the Brain


Nach oben
 Profil  
 
 Betreff des Beitrags: Re: Rotieren
BeitragVerfasst: 15.04.2009, 15:26 
Offline
Benutzeravatar

Registriert: 24.07.2007, 23:11
Beiträge: 283
das Problem wenn sich jetzt Rotation.Y ändert dreht sich das ganze Teil um Null Punkt wie eine Windmühle

edit:

Code:
   {
      // zu dem Aktuellen movmentSpeed eine Beschleunigung hinzuzählen
      this->movmentSpeed /= 1.03;
      this->movmentSpeed = this->movmentSpeed + this->movmentVeo;
      this->movmentVeo = 0;
      
      // Auf max/min movem. Geschwindigkeit prüfen
      this->movmentSpeed > this->maxMovmentSpeed ? this->movmentSpeed = this->maxMovmentSpeed : this->movmentSpeed;
      this->movmentSpeed < -this->maxMovmentSpeed ? this->movmentSpeed = -this->maxMovmentSpeed : this->movmentSpeed;

      // zur Rotationsgeschwindigkeit die Beschleunigung hinzuzählen
      this->rotationSpeed /= 1.03;
      this->rotationSpeed = this->rotationSpeed + this->rotationVeo;
      this->rotationVeo = 0;

      // Auf max/min rota. Geschwindigkeit prüfen
      this->rotationSpeed > this->maxRotationSpeed ? this->rotationSpeed = this->maxRotationSpeed : this->rotationSpeed;
      this->rotationSpeed < -this->maxRotationSpeed ? this->rotationSpeed = -this->maxRotationSpeed : this->rotationSpeed;
      
      // Position updaten
      
      //printf("%f, %f, %f \n\r",Winkel.X, Winkel.Y, Winkel.Z);
      this->Rotation.Y += this->rotationSpeed;
      this->Speed.X += this->movmentSpeed;

      this->MeshSN->setRotation(this->Rotation);


      matrix4 rotMat = this->MeshSN->getAbsoluteTransformation();
      
      vector3df TransVec;
      rotMat.rotateVect(TransVec, this->Speed);
      
      this->MeshSN->setPosition(TransVec);
   }

_________________
Be Fluffy!
kemomi.de


Nach oben
 Profil  
 
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 3 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