Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

26.05.2010, 16:43

Ein Problem mit den Achsen

Hi,
ich bin noch ziemlich neu in der Welt der 3D-Spieleprogrammierung (das ist mein 1. Projekt^^) aber ich habs soweit geschafft, dass ich eine Kamera hab die ich um die X Y und Z Achse drehen kann. Leider nur unabhängig voneinander, d.h. ich kann die Kamera nach unten schwenken und dann nach rechts, nur leider dreht die Kamera sich weiterhin um die ursprüngliche Achse und nicht die, die durch das nach unten schwenken neu entstanden ist. Gleiches porblem mit der Drehung um die eigene X-Achse. Wenn ich den Up-Vektor verändere, beeinflusst das nicht den LookAt-Vektor und die Kamera zieht nach einer 90° Drehung nicht nach unten sondern nach rechts.
Ich hab das ganze mit der Kamera so gelöst, dass ich für jede Achse einen Vektor habe in den der Winkel gerechnet wird. Meine Frage ist jetzt wie ich die drei Vektoren miteinander Verrechnen kann, damit der erste quasi das Koordinatensystem des anderen bildet und der dann wieder das System des 3. Vektors. Ich hab schon nach Anreiz eines Mathelehrers versucht die Matrizen von jedem der 3 Vektoren zu addieren, nur das hat zu sehr skurielen Formen auf dem Bildschirm geführt.
Danke schonmal für die Hilfe

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

2

26.05.2010, 17:26

Ich hab schon nach Anreiz eines Mathelehrers versucht die Matrizen von jedem der 3 Vektoren zu addieren, nur das hat zu sehr skurielen Formen auf dem Bildschirm geführt.
Danke schonmal für die Hilfe

Versuchs mal mit Multiplizieren ;)

3

26.05.2010, 17:30

Ich hab schon nach Anreiz eines Mathelehrers versucht die Matrizen von jedem der 3 Vektoren zu addieren, nur das hat zu sehr skurielen Formen auf dem Bildschirm geführt.
Danke schonmal für die Hilfe

Versuchs mal mit Multiplizieren ;)
hab ich auch schon gemacht, da kommt dann allerdings in etwa das raus was ich vorher auch schon hatte und die Vektoren bauen nicht aufeinander auf.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

4

26.05.2010, 17:35

Na dann zeig mal wie dus gemacht hast...

5

26.05.2010, 17:42

C-/C++-Quelltext

1
m_v3CamAngle = tbVector3( ((m_v3ZCamAngle.x / sqrt(pow(m_v3ZCamAngle.x, 2) + pow(m_v3ZCamAngle.z, 2))) * m_v3YCamAngle.x), m_v3YCamAngle.y, ((m_v3ZCamAngle.z / sqrt(pow(m_v3ZCamAngle.x, 2) + pow(m_v3ZCamAngle.z, 2))) * m_v3YCamAngle.x));

das ist die verrechnung der Vektoren

C-/C++-Quelltext

1
tbMatrix mCamera = tbMatrixCamera(m_v3CamPos , m_v3CamPos + m_v3CamAngle);


das ist die Matrix ohne die Drehung um die X-Achse
das passt allerdings auch noch nicht, weil die wieder nicht aufeinander aufbauen...

6

26.05.2010, 20:16

C-/C++-Quelltext

1
tbMatrix mCameraZ = tbMatrixCamera(m_v3CamPos, m_v3CamPos + m_v3ZCamAngle);tbMatrix mCameraY = tbMatrixCamera(m_v3CamPos, m_v3CamPos + m_v3YCamAngle);tbMatrix mCamera = mCameraZ * mCameraY;


wenn ichs so mach kommt auch nix anderes dabei raus komischerweise. ich glaub fast das ist mehr ein mathematisches problem als eins der programmiertechnik.
weiß vielleicht noch jemand rat?

Werbeanzeige