JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=13e28f284cf3eba4af34e81036738f0eMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Sprite wird nicht mehr angezeigt

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
PeaceKiller
JLI Master


Alter: 35
Anmeldedatum: 28.11.2002
Beiträge: 970

Medaillen: Keine

BeitragVerfasst am: 02.08.2004, 11:38    Titel: Sprite wird nicht mehr angezeigt Antworten mit Zitat

Sobald ich mein Sprite drehen will wird es nicht mehr angezeigt. Die z Koordinaten von m_vCenter und m_vPosition sind beide 128.0f. Skalieren kann ich das Sprite auch ohne Probleme nur drehen geht nicht.
Hier ein bisschen Code:

Code:
// Sprite zeichnen
void CSprite::Draw(void)
{
    float TempRot = D3DXToRadian(m_Rotation);

   D3DXVECTOR3 temp = D3DXVECTOR3(m_vPosition.x + m_vCenter.x,m_vPosition.y + m_vCenter.y,m_vCenter.z);

   D3DXMATRIXA16 matCombo, matRot, matScale;

   D3DXMatrixRotationY(&matRot,TempRot);
   D3DXMatrixScaling(&matScale, m_vScale.x, m_vScale.y, 1.0f);   

   D3DXMatrixMultiply(&matCombo,&matRot,&matScale);

    // Sprite in der passenden Animationsstufe zeichnen
    m_Direct3D->DrawSprite(m_vAnimationSequences[m_CurrentAnimation][m_CurrentImage],&m_vCenter,&temp,&matCombo);
}


Code:
// Ein Sprite zeichnen
void CDirect3D::DrawSprite(LPDIRECT3DTEXTURE9 lpTexture, D3DXVECTOR3* vCenter, D3DXVECTOR3* vPosition, D3DXMATRIXA16* matCombo, D3DCOLOR ModulateColor)
{
   m_Sprite->Begin(D3DXSPRITE_DONOTSAVESTATE | D3DXSPRITE_ALPHABLEND);

   m_Sprite->SetTransform(matCombo);   

   m_Sprite->Draw(lpTexture,NULL,vCenter,vPosition,ModulateColor);

   m_Sprite->End();
}

_________________
»If the automobile had followed the same development cycle as the computer, a Rolls-Royce would today cost $100, get a million miles per gallon, and explode once a year, killing everyone inside.«
– Robert X. Cringely, InfoWorld magazine
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Chewie
Super JLI'ler



Anmeldedatum: 17.07.2003
Beiträge: 382

Medaillen: Keine

BeitragVerfasst am: 02.08.2004, 15:31    Titel: Antworten mit Zitat

probier mal matScale*matRot, nicht matRot*matScale.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 02.08.2004, 17:03    Titel: Antworten mit Zitat

Bei einem Spaltenvektor ist die Reihenfolge so: Translation*Rotation*Skalierung

Wenn DX Zeilenvektoren benutzt ist das genau umgekehrt also:
Skalierung*Rotation*Translation
also müsste du das ändern...
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 02.08.2004, 19:07    Titel: Antworten mit Zitat

Sommer SDK installiert?

Dann glaube ich, dass das aber eher daran liegt:
http://www.jliforum.de/board/viewtopic.php?t=2577&highlight=
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
PeaceKiller
JLI Master


Alter: 35
Anmeldedatum: 28.11.2002
Beiträge: 970

Medaillen: Keine

BeitragVerfasst am: 02.08.2004, 19:26    Titel: Antworten mit Zitat

Ich kenn mich Matrizen nicht aus und hab die Berechnung der Skalierung bzw. Rotation aus den Summer 2003 Beispielen von Christian.

Zitat:
Dann glaube ich, dass das aber eher daran liegt:
http://www.jliforum.de/board/viewtopic.php?t=2577&highlight=


Ich glaube nicht das es daran liegt da es mit Skalierung geht nicht aber mit Rotation.
_________________
»If the automobile had followed the same development cycle as the computer, a Rolls-Royce would today cost $100, get a million miles per gallon, and explode once a year, killing everyone inside.«
– Robert X. Cringely, InfoWorld magazine
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
PeaceKiller
JLI Master


Alter: 35
Anmeldedatum: 28.11.2002
Beiträge: 970

Medaillen: Keine

BeitragVerfasst am: 12.08.2004, 09:30    Titel: Antworten mit Zitat

Hat keiner eine Idee?
_________________
»If the automobile had followed the same development cycle as the computer, a Rolls-Royce would today cost $100, get a million miles per gallon, and explode once a year, killing everyone inside.«
– Robert X. Cringely, InfoWorld magazine
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
KI
JLI Master


Alter: 39
Anmeldedatum: 04.07.2003
Beiträge: 965
Wohnort: Aachen
Medaillen: Keine

BeitragVerfasst am: 12.08.2004, 12:01    Titel: Antworten mit Zitat

Hast du denn schon
Code:

D3DXMatrixMultiply(&matCombo,&matScale,&matRot);

anstatt
D3DXMatrixMultiply(&matCombo,&matRot,&matScale);
ausprobiert?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
PeaceKiller
JLI Master


Alter: 35
Anmeldedatum: 28.11.2002
Beiträge: 970

Medaillen: Keine

BeitragVerfasst am: 12.08.2004, 14:43    Titel: Antworten mit Zitat

Nein, geht genauso wenig.
_________________
»If the automobile had followed the same development cycle as the computer, a Rolls-Royce would today cost $100, get a million miles per gallon, and explode once a year, killing everyone inside.«
– Robert X. Cringely, InfoWorld magazine
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Chewie
Super JLI'ler



Anmeldedatum: 17.07.2003
Beiträge: 382

Medaillen: Keine

BeitragVerfasst am: 12.08.2004, 15:19    Titel: Antworten mit Zitat

du baust deine rotationsmatrix um Y...sollte aber um Z sein, also D3DXMAtrixRotationZ(). is mir auch grad erst aufgefallen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
PeaceKiller
JLI Master


Alter: 35
Anmeldedatum: 28.11.2002
Beiträge: 970

Medaillen: Keine

BeitragVerfasst am: 12.08.2004, 16:59    Titel: Antworten mit Zitat

Nein, das geht leider auch nicht.
_________________
»If the automobile had followed the same development cycle as the computer, a Rolls-Royce would today cost $100, get a million miles per gallon, and explode once a year, killing everyone inside.«
– Robert X. Cringely, InfoWorld magazine
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Chewie
Super JLI'ler



Anmeldedatum: 17.07.2003
Beiträge: 382

Medaillen: Keine

BeitragVerfasst am: 12.08.2004, 17:18    Titel: Antworten mit Zitat

es muß auf jeden fall um Z gedreht werden, das stimmt sicher.
stell mal vPos und vCenter auf 0/0/0 und dann rotiere. da siehst du mal das es funktioniert. dann probier einfach weiter, indem du vPos und vCenter veränderst.
die handhabung der sprites ist jetzt superbeschissen, find ich zumindest.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
TheMillenium
Dark JLI'ler



Anmeldedatum: 21.07.2002
Beiträge: 1427
Wohnort: World
Medaillen: Keine

BeitragVerfasst am: 12.08.2004, 18:36    Titel: Antworten mit Zitat

Chewie hat Folgendes geschrieben:
es muß auf jeden fall um Z gedreht werden, das stimmt sicher.
...

Hast du mal die Tasten so belegt, dass du alle Werte unabhängig noch dazu verändern kannst und dass die Werte auf dem Display für dieses Sprite ausgegeben wird? Das mach ich immer, damit löst man das Problem viel schneller als wenn man Stunden lang nur so nach dem Fehler sucht. Macht zwar erst Arbeit, aber wenn du dich schon so mit der Funktion rumschlägst? Außerdem ist jetzt bestes Wetter für sowas! Wink Crying or Very sad
_________________
The source of all power is in its destiny...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum