Du bist nicht angemeldet.

Werbeanzeige

1

05.10.2003, 21:38

Rotation ohne Verschiebung

Hallo,

Ich hab nen kleinen 3DS Loader geschrieben und wollte jetzt anfangen einige kleine Animationen für ein Testmodel zu programmieren. Dafür sollten einige Teile auf der X-Achse rotiert werden.

Hier ein Link zu einem Bild was die Problematik genauer schildern sollte:

http://us.f1f.yahoofs.com/bc/3f806c78_18…faEHg_AToLhm1j2

Der Tailhook und das Höhenruder wurden zwar rotiert, jedoch auch leider verschoben. Die Rotation mache ich mit folgendem Code Schnipsel:

Quellcode

1
2
3
    D3DXMatrixRotationYawPitchRoll(&matRot, 0.0f, D3DXToRadian(45.0f), 0.0f);
    D3DXMatrixMultiply(&matPos, pmatWorldPos, &matRot);
    (*pp3DGraphic)->GetGraphicDevice()->SetTransform(D3DTS_WORLD, &matPos);


Warum wird das Objekt auch verschoben?

Für jegliche Tipps wäre ich dankbar.

So long
cias

David Scherfgen

Administrator

Beiträge: 10 201

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

2

05.10.2003, 21:42

Willkommen im Forum!
Der Link zum Bild funktioniert nicht.
Rotationen erfolgen immer um den Mittelpunkt. Wenn das Modell nicht exakt um (0, 0, 0) zentriert ist, verschiebt es sich beim Rotieren automatisch. Entweder korrigierst Du das Modell oder Du führst vor der Rotation eine Verschiebung zum Ausgleich durch.

3

05.10.2003, 21:47

Rotation ohne Verschiebung

Hallo,

Danke für die schnelle Antwort. Ich hoffe der Link funktioniert jetzt:


(Link)


so long

cias

David Scherfgen

Administrator

Beiträge: 10 201

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

05.10.2003, 21:54

Also bei mir zeigt er nichts an... vielleicht ist aber auch nur der Server überlastet, wo das Bild gehostet ist... schick mir doch eine E-Mail an d@vidscherfgen.de!

David Scherfgen

Administrator

Beiträge: 10 201

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

5

05.10.2003, 23:02

Jo, hab die Mail bekommen und das bestätigt meinen Verdacht!
Denk dran: Rotationen werden immer um (0, 0, 0) durchgeführt.

6

11.10.2003, 13:14

Rotation ohne Verschiebung

Hallo,

Kann man anhand des Winkels um den man das Object rotieren möchte errechnen wie weit man das Objekt verschieben müßte, damit es sich nach der Rotation wieder an dessen korrekter Position befindet?

Danke

so long

cias

7

11.10.2003, 18:54

Du konntest den Mittelpunkt des Objektes ermitteln und diesen dann Manuel Rotieren. Dann errechnest du die Strecke zwischen dem Punkt vor der Rotation und dem Punkt nach der Rotation und dann haste schon deinen Verschiebungsvektor um das Objekt an seinen Ursprungspunkt zu bekommen.

Leichter ist es jedoch das Objekt bei der Initialisierung zum Ursprungspunkt zu Verschieben und dann zu Rotieren. Dann brauch man nicht einen Mittelpunkt Transformieren.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Werbeanzeige