JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

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

Zu blöd zum Billboarden
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
HomeLess_PunkDrummer
JLI Master Trainee


Alter: 36
Anmeldedatum: 28.11.2004
Beiträge: 583
Wohnort: Alter Joghurtbecher an der A4
Medaillen: Keine

BeitragVerfasst am: 05.02.2005, 19:37    Titel: Zu blöd zum Billboarden Antworten mit Zitat

Trotz der Sache mit dem D3DX-Zeug hab ich noch andere Sorgen. Umso verzweifelter bin ich jetzt, wo ich merke, dass ich scheinbar nicht mal mehr ein Billboard hinkriege:


CPP:
#define D3D_BILLBOARDVERTEX (D3DFVF_XYZ | D3DFVF_TEX1)

struct BillboardVertex
{
    FLOAT x, y, z;
    FLOAT tu,tv;
};


BOOL C3DBillboard::CreateBillboard(char *Texture)
{
   m_lpResManager->AddTexture(Texture);
   m_lpTexture = m_lpResManager->GetTexture(Texture);

   BillboardVertex BillboardVertices[] =
   {
      { -1.0f, -1.0f, -1.0f,  0.0f, 1.0f },
      { -1.0f,  1.0f, -1.0f,  0.0f, 0.0f },
      {  1.0f,  1.0f, -1.0f,  1.0f, 0.0f },
      {  1.0f,  1.0f, -1.0f,  1.0f, 0.0f },
      {  1.0f, -1.0f, -1.0f,  1.0f, 1.0f },
      { -1.0f, -1.0f, -1.0f,  0.0f, 1.0f },
   };


    m_lpD3DDevice->CreateVertexBuffer(6* sizeof(BillboardVertex),
                                      0,
                                      D3D_BILLBOARDVERTEX,
                                      D3DPOOL_DEFAULT,
                                      &m_lpVB,
                             NULL);

    void* pVertices;
    m_lpVB->Lock(0,sizeof(BillboardVertices),(void**)&pVertices,0);
    memcpy(pVertices, BillboardVertices, sizeof(BillboardVertices));
    m_lpVB->Unlock();


    return TRUE;
 
}


void C3DBillboard::Render(D3DXVECTOR3 vCamPos)
{
   D3DXMATRIX WorldMatrix;
   D3DXMATRIX TransMatrix;
   D3DXMATRIX RotationMatrix;
   D3DXMATRIX RotationMatrixX;
    D3DXMATRIX RotationMatrixY;

   if( vCamPos.x < 0.0f )
        D3DXMatrixRotationY( &RotationMatrixY, -atanf(vCamPos.z/vCamPos.x)+D3DX_PI/2 );
    else
        D3DXMatrixRotationY( &RotationMatrixY, -atanf(vCamPos.z/vCamPos.x)-D3DX_PI/2 );
   D3DXMatrixIdentity(&RotationMatrixX);   
   D3DXMatrixMultiply(&RotationMatrix, &RotationMatrixX, &RotationMatrixY);
   D3DXMatrixTranslation(&TransMatrix,0.0f,0.0f,0.0f);
    D3DXMatrixMultiply(&WorldMatrix,&RotationMatrixY,&TransMatrix);
    m_lpD3DDevice->SetTransform(D3DTS_WORLD,&WorldMatrix);


   m_lpD3DDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
   m_lpD3DDevice->SetRenderState(D3DRS_SRCBLEND,D3DBLEND_SRCALPHA);      m_lpD3DDevice->SetRenderState(D3DRS_DESTBLEND,D3DBLEND_INVSRCALPHA);      m_lpD3DDevice->SetTextureStageState(0,D3DTSS_ALPHAARG1,D3DTA_TEXTURE);   
   m_lpD3DDevice->SetRenderState( D3DRS_ALPHATESTENABLE,   TRUE );
   m_lpD3DDevice->SetRenderState( D3DRS_ALPHAREF,        0x08 );
   m_lpD3DDevice->SetRenderState( D3DRS_ALPHAFUNC, D3DCMP_GREATEREQUAL );

   m_lpD3DDevice->SetTexture(0, m_lpTexture);
   m_lpD3DDevice->SetTextureStageState(0, DTSS_COLOROP,   D3DTOP_SELECTARG1);
    m_lpD3DDevice->SetTextureStageState(0, D3DTSS_COLORARG1, D3DTA_TEXTURE);
   m_lpD3DDevice->SetRenderState(D3DRS_LIGHTING, FALSE);

   m_lpD3DDevice->SetFVF(D3D_BILLBOARDVERTEX);
    m_lpD3DDevice->SetStreamSource(0,m_lpVB,0,sizeof(BillboardVertex));

    m_lpD3DDevice->DrawPrimitive(D3DPT_TRIANGLELIST,0,2);

   m_lpD3DDevice->SetTexture(0, NULL);
   m_lpD3DDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, FALSE);
   m_lpD3DDevice->SetTextureStageState(0, D3DTSS_COLOROP,   D3DTOP_MODULATE);
}


Hmm, ich seh nur ein weißes Quadrat. Keine Textur. Und bin langsam am verzweifeln. Vermutlich hab ich irgendwie eine Kleinigkeit wieder mal übersehn....
Jaa, ich weiß da is noch D3DX drin... Könnt ihr mir trotzdem irgendwie helfen?
_________________
"Was die Götter angeht, so ist es mir unmöglich, zu wissen, ob sie existieren oder nicht, noch, was ihre Gestalt sei. Die Kräfte, die mich hindern, es zu wissen, sind zahlreich, und auch ist die Frage verworren und das menschliche Leben kurz."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 05.02.2005, 19:40    Titel: Antworten mit Zitat

1) Textur korrekt geladen

2) wie schaun die Alphainfos der Textur aus ?
_________________
"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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 05.02.2005, 19:44    Titel: Antworten mit Zitat

Schmeiss erstmal den ganzen Renderstate mist raus mit Alphablending und co. und lass nur das drin was du zum rendern einer Textur brauchst!

Wenn Du bis dahin noch keine Textur siehst solltest Du Dir Deinen Resourcenmanager mal genauer angucken, er gibt dann sehr wahrscheinlich einen NULL-Pointer zurück als Texturobjekt.
_________________
'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
HomeLess_PunkDrummer
JLI Master Trainee


Alter: 36
Anmeldedatum: 28.11.2004
Beiträge: 583
Wohnort: Alter Joghurtbecher an der A4
Medaillen: Keine

BeitragVerfasst am: 05.02.2005, 19:46    Titel: Antworten mit Zitat

1. Hmm Textur is korrekt geladen, klappt auch mit
CPP:
m_lpD3DDevice->SetTexture(0, m_ResManager->GetTexture("SchonGeladen.png"));

nicht.

2. Ich seh gar keine Textur, ob Alpha oder net...Habs auch schon mit der vom Boden und von den Bäumen probiert, aber es bleibt weiß.

[Edit]
(Patrick) Hab ich schon...Aber das ändert auch nichts...
_________________
"Was die Götter angeht, so ist es mir unmöglich, zu wissen, ob sie existieren oder nicht, noch, was ihre Gestalt sei. Die Kräfte, die mich hindern, es zu wissen, sind zahlreich, und auch ist die Frage verworren und das menschliche Leben kurz."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 05.02.2005, 19:54    Titel: Antworten mit Zitat

HomeLess_PunkDrummer
dann gibt m_ResManager->GetTexture(); sehr wahrscheinlich einen NULL-Pointer zurück oder einen "Defekten".

Achja, falls Du ICQ hast, schreib mich mal an und ich geb Dir nen Lauffähigen Texturmanager Wink
_________________
'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
HomeLess_PunkDrummer
JLI Master Trainee


Alter: 36
Anmeldedatum: 28.11.2004
Beiträge: 583
Wohnort: Alter Joghurtbecher an der A4
Medaillen: Keine

BeitragVerfasst am: 05.02.2005, 19:59    Titel: Antworten mit Zitat

Hmm ICQ habsch leider net-> Woher nehmen oder stehlen?

Der Texturmanager is aber glaub ich okay... Ich werd mal die Textur manuell laden und schauen was passiert.

Gehts deiner Freundin besser? Auf jeden Fall nochmal "Gute Besserung" von mir.

Gruß
_________________
"Was die Götter angeht, so ist es mir unmöglich, zu wissen, ob sie existieren oder nicht, noch, was ihre Gestalt sei. Die Kräfte, die mich hindern, es zu wissen, sind zahlreich, und auch ist die Frage verworren und das menschliche Leben kurz."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Fallen
JLI MVP
JLI MVP


Alter: 40
Anmeldedatum: 08.03.2003
Beiträge: 2860
Wohnort: Münster
Medaillen: 1 (mehr...)

BeitragVerfasst am: 05.02.2005, 20:01    Titel: Antworten mit Zitat

HomeLess_PunkDrummer hat Folgendes geschrieben:
Hmm ICQ habsch leider net-> Woher nehmen oder stehlen?


Is kostenlos www.icq.com.

HomeLess_PunkDrummer hat Folgendes geschrieben:
Gehts deiner Freundin besser? Auf jeden Fall nochmal "Gute Besserung" von mir.


Müsst ihr dauernt in der Wunde rumbohren ? Auch wenns gut gemeint ist, anderen Usern gehts dadurch auch nur schlechter.
_________________
"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
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
HomeLess_PunkDrummer
JLI Master Trainee


Alter: 36
Anmeldedatum: 28.11.2004
Beiträge: 583
Wohnort: Alter Joghurtbecher an der A4
Medaillen: Keine

BeitragVerfasst am: 05.02.2005, 20:02    Titel: Antworten mit Zitat

Oh sorry war echt nur gut gemeint.
_________________
"Was die Götter angeht, so ist es mir unmöglich, zu wissen, ob sie existieren oder nicht, noch, was ihre Gestalt sei. Die Kräfte, die mich hindern, es zu wissen, sind zahlreich, und auch ist die Frage verworren und das menschliche Leben kurz."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 05.02.2005, 20:02    Titel: Antworten mit Zitat

HomeLess_PunkDrummer hat Folgendes geschrieben:
Gehts deiner Freundin besser? Auf jeden Fall nochmal "Gute Besserung" von mir.


Geht immer mehr Bergab... naja lassen wir das nun.

Achja ICQ bekommt man bei www.icq.com .
_________________
'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
HomeLess_PunkDrummer
JLI Master Trainee


Alter: 36
Anmeldedatum: 28.11.2004
Beiträge: 583
Wohnort: Alter Joghurtbecher an der A4
Medaillen: Keine

BeitragVerfasst am: 06.02.2005, 11:52    Titel: Antworten mit Zitat

Okay, ich habs.
Nein, ich sag nicht wo der Fehler lag. Wär echt zu peinlich...^^
Trotzdem danke, icq werd ich auch gleich installieren.

Gruß
_________________
"Was die Götter angeht, so ist es mir unmöglich, zu wissen, ob sie existieren oder nicht, noch, was ihre Gestalt sei. Die Kräfte, die mich hindern, es zu wissen, sind zahlreich, und auch ist die Frage verworren und das menschliche Leben kurz."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Patrick
Dark JLI Master



Anmeldedatum: 25.10.2004
Beiträge: 1895
Wohnort: Düren
Medaillen: Keine

BeitragVerfasst am: 06.02.2005, 11:56    Titel: Antworten mit Zitat

Sagen, sagen, sagen Very Happy

Will nur wissen ob ich mit meiner These richtig gelegen hab' Very Happy
_________________
'Wer der Beste sein will muss nach Perfektion streben und jede Gelegenheit nutzen sich zu verbessern.' - KIA
[ German Game Dev | Boardsuche hilft sehr oft | Google rockt | Wie man Fragen richtig stellt | ICQ#: 143040199 ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
HomeLess_PunkDrummer
JLI Master Trainee


Alter: 36
Anmeldedatum: 28.11.2004
Beiträge: 583
Wohnort: Alter Joghurtbecher an der A4
Medaillen: Keine

BeitragVerfasst am: 06.02.2005, 12:03    Titel: Antworten mit Zitat

Hast du. Razz
Allerdings ist das nicht oben im Code. Ich hatte den Fehler beim reinschreiben nicht gemacht...

Okay, wenn ihr versprecht mich nicht zu verbrennen:
CPP:
m_ResManager->GetTexture(Texture);
m_lpTexture=m_ResManager->GetTexture(Texture);


Schande über mich... Very Happy
_________________
"Was die Götter angeht, so ist es mir unmöglich, zu wissen, ob sie existieren oder nicht, noch, was ihre Gestalt sei. Die Kräfte, die mich hindern, es zu wissen, sind zahlreich, und auch ist die Frage verworren und das menschliche Leben kurz."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
HomeLess_PunkDrummer
JLI Master Trainee


Alter: 36
Anmeldedatum: 28.11.2004
Beiträge: 583
Wohnort: Alter Joghurtbecher an der A4
Medaillen: Keine

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

Puuh...ein weiterer Abgrund tut sich auf:
Das drehen des Billboards in der Horizontalen ist klar:
CPP:
float DistX = vCam.x -m_vPos.x;
float DistZ = vCam.z -m_vPos.z;

if(DistX < 0.0f )
    D3DXMatrixRotationY( &RotationMatrixY, -atanf(DistZ/DistX)+D3DX_PI/2 );
else if(DistX>0.0f)
    D3DXMatrixRotationY( &RotationMatrixY, -atanf(DistZ/DistX)-D3DX_PI/2 );


ABer wie siehts mit der Vertikalen aus? Dazu brauch ich eine Distanz DistXZ.
Diese würde die Distanz in der Draufsicht zwischen Kameraposition und Billboardposition angeben. Aber wie ausrechnen?
CPP:
DistzXZ = sqrt(sqr(DistX)+sqr(DistZ));

Satz des Pythagoras halt...Aber dann wird DistXZ immer positiv! Sie muss jedoch negativ sein können, da die Kamera ja nicht immer in positive Z-Richtung blickt!...
Was tun Question
_________________
"Was die Götter angeht, so ist es mir unmöglich, zu wissen, ob sie existieren oder nicht, noch, was ihre Gestalt sei. Die Kräfte, die mich hindern, es zu wissen, sind zahlreich, und auch ist die Frage verworren und das menschliche Leben kurz."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
The Lord of Programming
Living Legend


Alter: 37
Anmeldedatum: 14.03.2003
Beiträge: 3122

Medaillen: Keine

BeitragVerfasst am: 06.02.2005, 21:17    Titel: Antworten mit Zitat

HomeLess_PunkDrummer hat Folgendes geschrieben:
Satz des Pythagoras halt...Aber dann wird DistXZ immer positiv! Sie muss jedoch negativ sein können, da die Kamera ja nicht immer in positive Z-Richtung blickt!...
Was tun Question

Ich nehme mal an, DistXZ soll 'Distanz' heißen. Da Strecken nie negativ sein können, hat das ja auch seine Richtigkeit mit dem Satz des Pythagoras. Wink
Ist es denn nicht eigentlich egal, ob die Kamera jetzt hinter oder vor dem Billboard steht? Du musst es doch einfach nur mit der Kamera mitdrehen...
_________________
www.visualgamesentertainment.net
Current projects: RDTDC(1), JLI-Vor-Projekt, Tetris(-Tutorial), JLI-Format
(1) Realtime Developer Testing and Debugging Console


Anschlag, Anleitung zum Atombombenbau, Sprengkörper...
Hilf Schäuble! Damit er auch was findet...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
HomeLess_PunkDrummer
JLI Master Trainee


Alter: 36
Anmeldedatum: 28.11.2004
Beiträge: 583
Wohnort: Alter Joghurtbecher an der A4
Medaillen: Keine

BeitragVerfasst am: 07.02.2005, 14:37    Titel: Antworten mit Zitat

Ah ja habs grad gemerkt...Ich muss es erst um die X-Achse drehn und dann um die Y-Achse, dann müsste es passen.
CPP:
if(DistXZ!=0)
    D3DXMatrixRotationX(&RotationMatrix, -atanf(DistY/DistXZ)+D3DX_PI/2);

if(DistX < 0.0f )
    D3DXMatrixRotationY( &RotationMatrix, -atanf(DistZ/DistX)+D3DX_PI/2 );
else if(DistX>0.0f)
    D3DXMatrixRotationY( &RotationMatrix, -atanf(DistZ/DistX)-D3DX_PI/2 );

Funzt aber net... Dreht sich nur um die Y-Achse.... Sad
_________________
"Was die Götter angeht, so ist es mir unmöglich, zu wissen, ob sie existieren oder nicht, noch, was ihre Gestalt sei. Die Kräfte, die mich hindern, es zu wissen, sind zahlreich, und auch ist die Frage verworren und das menschliche Leben kurz."
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> DirectX, OpenGL Alle Zeiten sind GMT
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
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