Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Fallen JLI MVP


Alter: 41 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 28.05.2004, 08:26 Titel: Spriteskalierung |
|
|
Ich hab das Problem das wenn ich mein Sprite ungleichmässig Skaliere (x!=y) und dabei die Rotation anwende verfälschte Ergebnisse beim Resultat erscheinen. Die Skalierung müsste also noch vor der Translation und Rotation wirken. Bisher habe ich das so:
Code: |
D3DXMATRIXA16 matCombo, matRot, matScale, matTrans;
D3DXMatrixRotationZ(&matRot,m_Rotation);
D3DXMatrixScaling(&matScale, m_vScale.x, m_vScale.y, m_vScale.z);
D3DXMatrixTranslation(&matTrans, m_vPosition.x+stepx, m_vPosition.y+stepy, m_vPosition.z);
D3DXMatrixMultiply(&matCombo, &matRot, &matScale);
D3DXMatrixMultiply(&matCombo, &matCombo, &matTrans);
|
Kann mir dabei jemand helfen ? _________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
 |
KI JLI Master

Alter: 39 Anmeldedatum: 04.07.2003 Beiträge: 965 Wohnort: Aachen Medaillen: Keine
|
Verfasst am: 28.05.2004, 10:18 Titel: |
|
|
Versuch mal die Matritzen andersherum zu multiplizieren.
Code: | D3DXMatrixMultiply(&matCombo, &matScale, &matTrans); |
Matrixmultiplikation ist nämlich nicht kommutativ, offensichtlich.
(hab ich fesgestellt...) |
|
Nach oben |
|
 |
Fallen JLI MVP


Alter: 41 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 28.05.2004, 10:49 Titel: |
|
|
Danke ohne den Tip hätte ichs vermutlich nicht nochmal versucht, obwohl ich das eigentlich wissen müsste ^^
Code: | D3DXMatrixMultiply(&matCombo, &matRot, &matTrans);
D3DXMatrixMultiply(&matCombo, &matScale, &matCombo); |
_________________ "I have a Core2Quad at 3.2GHz, 4GB of RAM at 1066 and an Nvidia 8800 GTS 512 on Vista64 and this game runs like ass whereas everything else I own runs like melted butter over a smokin' hot 18 year old catholic schoolgirl's arse." |
|
Nach oben |
|
 |
Christian Rousselle Site Admin

Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 28.05.2004, 13:19 Titel: |
|
|
Anstatt die D3DX* Funktionen zu nutzen, kann man auch schreiben:
matCombo = matRot * matTrans* matScale;
C++ Compiler vorausgesetzt ist das manchmal übersichtlicher.
C. |
|
Nach oben |
|
 |
KI JLI Master

Alter: 39 Anmeldedatum: 04.07.2003 Beiträge: 965 Wohnort: Aachen Medaillen: Keine
|
Verfasst am: 28.05.2004, 19:00 Titel: |
|
|
Werden erweiterte Prozessorinstruktionen genutzt wenn ich D3DX* Funktionen benutze? (in diesem Fall D3DXMatrixMultiply)
Und werden diese erweiterten Prozessorinstruktionen benutzt wenn man
die Matritzen so multipliziert: ?
Code: | matCombo = matRot * matTrans* matScale; |
 |
|
Nach oben |
|
 |
Christian Rousselle Site Admin

Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 28.05.2004, 19:21 Titel: |
|
|
Die Operatoren sind überladen (klar). Intern werden die D3DX* Funktionen aufgerufen, also ja.
C. |
|
Nach oben |
|
 |
KI JLI Master

Alter: 39 Anmeldedatum: 04.07.2003 Beiträge: 965 Wohnort: Aachen Medaillen: Keine
|
Verfasst am: 28.05.2004, 20:05 Titel: |
|
|
AHA - Danke |
|
Nach oben |
|
 |
|