Aktuelle Zeit: 13.05.2025, 09:49

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 2 Beiträge ] 
Autor Nachricht
BeitragVerfasst: 28.03.2009, 17:18 
Offline
Benutzeravatar

Registriert: 24.02.2009, 18:53
Beiträge: 1
Ok, erstmal ein "Hallo" an alle^^

Dies ist nun mein erster Post in diesem Forum - und auch meine erste Gelegenheit, mich vor der Irrlicht-Community zu blamieren :lol: . Wie dem auch sei, vor einiger Zeit habe ich den Entschluss gefasst, mal etwas Dreidimensionales zu programmieren. Zunächst wollte ich es dabei direkt mit DirectX probieren; schließlich gibt es ja jede Menge Tutorials und Bücher zu diesem Thema - aber ich war wohl etwas zu zuversichtlich: kaum eines der Beispielprogramme aus dem Netz, den gekauften Büchern oder gar dem SDK selbst ließ sich bei mir compilieren! Es fehlten ständig irgendwelche libarys oder header, welche ich mir dann nachträglich aus dem Internet beschaffen musste; manchmal weigerte sich die IDE auch einfach, eine ganz klar im Zielverzeichnis zu findende Datei anzuerkennen ~.~ Da aufgrund dessen nur ein Bruchteil der Beispiele nach langem Suchen und Klicken funktionieren wollte, war wohl klar, dass ich so nichtmal an 3 Dimensionen denken könnte - geschweige denn daran, eine ganze Engine zu schreiben, die auch funktionieren würde. Eine (leistungsfähige) Engine musste her - so bin ich dann auf Irrlicht gestoßen. Soviel also dazu^^

Um mich mit der Engine vertraut zu machen, sah ich mir erst einmal die Tutorials an, welche zu meiner großen - positiven - Überraschung auch alle einwandfrei liefen (was ich ja von den reinen DirectX Codes zuvor nicht gewöhnt war - das kam dem "Licht am Ende eines dunklen Tunnels" gleich :lol: ). Bevor ich allerdings mein erstes "TestProjekt", eine Art "Weltraum[un]simulation" (aufgrund der Einfachheit: kaum Physik, etc.), wirklich beginnen konnte, wollte ich erstmal die Grundgelegenen Bewegungsoperationen testen (von denen ich mathematisch in etwa... Null Ahnung habe), wobei mir schnell auffiel, dass in den Tutorials nicht wirklich auf die Rotation von SzenenKnoten eingegangen wurde (Jemand, der sich schon damit beschäftigt, und sich diese Engine zur Vereinfachung "zu Nutze macht", wird sich eine solche Operation wohl mit Leichtigkeit selber schreiben können), was einem normalen Programmierer nicht zur Last fällt, mir als Noob jedoch etwas zusetzt (ich wollte das "selbstschreiben" der Operationen eigentlich vermeiden).
Nun, die Positionsverschiebung an sich ist kein Ding. Die Rotation "funktioniert". Nur - sie funktioniert nicht so, wie sie eigentlich sollte... Der SzenenKnoten in meinem Programm(chen) rotiert scheinbar nicht um die Achsen des eigenen Koordinatensystems - es wirkt viel mehr so, als würde die Richtung jenes garnicht aktualisiert, sodass zwar die Position des Ursprunges im Knoten liegt, die Achsen aber immer die Ausrichtung des Übergeordneten Koordinatensystems haben.

Folgende Abbildungen sollten das Problem beschreiben: Links sieht man die Situation, wie ich sie gerne hätte, rechts die bestehende Situation. Dabei zeigt die Ausrichtung des Schiffes die Bewegungsrichtung an, während das kleine "Achsensystem" die für eine Rotation verwendeten Achsen abbildet
Bild Bild

Erstaunlich finde ich dabei, dass mein Objekt (das Schiff) um die eigene X-Achse rotiert, wie links dargestellt, gleichzeitig allerdings bei der Rotation um seine Z und Y Achse ein Verhalten aufweist, das dem Sachverhalt in der Rechten Abbildung gleichkommt !?
Wie auch immer, der Teil des Programms der für die Bewegung zuständig ist sieht wie folgt aus:
Code:

   (. . .)

   core::vector3df position = node->getPosition();
   core::vector3df rotation = node->getRotation();
   float speed = 0.0f;

    (. . .)

    core::matrix4 mat;
    mat.setRotationDegrees(rotation);
    core::vector3df tmp(0,0,-1);
    mat.transformVect(tmp);

    position += speed*tmp;
   
    node->setRotation(rotation);
    node->setPosition(position);

    (. . .)
   


Kann mir jemand sagen wo hier der Fehler liegt? Oder wie man etwas "richtig" rotieren lässt? Würde mich über Hilfe freuen :D

mfG Syntax


Nach oben
 Profil  
 
BeitragVerfasst: 30.03.2009, 08:58 
Offline
Benutzeravatar

Registriert: 30.03.2009, 08:39
Beiträge: 1
ich kann nur sagen, ich habe das gleiche Problem.. und auch mein 1. Post hier XD :) ^^.

wenn man erst das Schiff um die Y-achse dreht (bei mir ist's ein Pfeil.. -> wird auf Gegner gerichtet), und dann um die X Achse (damit der Pfeil eine Steigung bekommt-> fliegt einen Bogen) dann hebt sich die Spitze nicht langsam nach oben, sondern der ganze Pfeil dreht sich merkwürdigst.. wie eben dein Raumschiff hier...
Weiß jemand Rat?

_________________
Bild
Aktuelles Projekt: Magical Twilight (stand 30.03.09: 7862 Zeilen [ohne irrlicht])
Visit my Homepage :D :)


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

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

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