JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

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

X Files Vertices und Indices Extrahieren

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


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 03.08.2004, 12:59    Titel: X Files Vertices und Indices Extrahieren Antworten mit Zitat

Ich möchte ein paar XFiles laden. Dazu würde ich aber gerne nicht die vorgegebenen Funktionen nutzen, sondern die Verties und Indices in Arrays laden.
ich bräcuhte also eine Funktion die mir einen Posinter auf die Vertices und Indices liefert, ich müsste das Format von beiden wissen und ich bräuchte deren Anzahl. Da die ja nach Materalien sorteirt sind müsste ich dann noch in Erfahrung bringen, bis zu welchen Dreieck ich das Material benutzen muss.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Christian Rousselle
Site Admin


Alter: 48
Anmeldedatum: 19.07.2002
Beiträge: 1630

Medaillen: Keine

BeitragVerfasst am: 03.08.2004, 13:22    Titel: Antworten mit Zitat

Alles was du willst geht mit D3DXLoadMeshFromX und dem LPD3DXMESH-Zeiger den du bekommst. Damit kannst du an alles. Stickworte GetVertexBuffer(), GetIndexBuffer() und GetAttributeTable().

C.
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: 03.08.2004, 13:24    Titel: Antworten mit Zitat

Ich glaube er wollte diese vorgefertigten Funktionen nicht nutzen Wink

Daher würde ich dir empfehlen in der DirectX Hilfe unter dem Indexpunkt X File Format Reference zu suchen da solltest du alles über das XFormat erfahren können und dementsprechend die Funktionen selber schreiben können.
_________________
"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
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 03.08.2004, 13:31    Titel: Antworten mit Zitat

ach das mit den vorgefertigten Funktionen bezog sich auf DrawSubset()

OK, ich probier das mit den Get() mal aus. Mal sehen was in der Doku steht!
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 03.08.2004, 15:37    Titel: Antworten mit Zitat

naja, ich wollte nun erstmal die einfachen Funktionen benutzen, aber es wird nix angezeigt!:
Code:

//XFile.h

#include "Global.h"

class CXFile
{
public:
   ~CXFile();
   void Load(char * Dateiname, LPDIRECT3DDEVICE9 lpD3DDevice);
   void Render();
protected:
   LPDIRECT3DDEVICE9 m_lpD3DDevice;
   LPD3DXBUFFER m_lpMaterialBuffer;//Die Materialliste
   DWORD m_dwNumMaterials;//Anzahl der materialien
   LPD3DXMESH m_lpMesh;//Das Objekt!

   D3DXMATERIAL* m_lpMaterials;
   D3DMATERIAL9* m_lpMeshMaterials;
   LPDIRECT3DTEXTURE9* m_lpMeshTextures;
};

Code:
//XFile.cpp

#include "XFile.h"

void CXFile::Load(char* Dateiname, LPDIRECT3DDEVICE9 lpD3DDevice)
{
   m_lpD3DDevice=lpD3DDevice;
   if(FAILED(D3DXLoadMeshFromX(Dateiname, D3DXMESH_SYSTEMMEM, m_lpD3DDevice, //Die Datei laden
                  NULL, &m_lpMaterialBuffer, NULL, &m_dwNumMaterials, &m_lpMesh)))
   {
      Error("XDatei nicht geladen!");
   }

   //Materialien laden:
   m_lpMaterials=(D3DXMATERIAL*)m_lpMaterialBuffer->GetBufferPointer();

   m_lpMeshMaterials=new D3DMATERIAL9[m_dwNumMaterials];
   m_lpMeshTextures=new LPDIRECT3DTEXTURE9[m_dwNumMaterials];

   for(int i=0; i<m_dwNumMaterials; i++)
   {
      m_lpMeshMaterials[i]=m_lpMaterials[i].MatD3D;
      m_lpMeshMaterials[i].Ambient=m_lpMeshMaterials[i].Diffuse;

      if(NULL!=m_lpMaterials[i].pTextureFilename)
      {
         if(FAILED(D3DXCreateTextureFromFile(m_lpD3DDevice, m_lpMaterials[i].pTextureFilename,&m_lpMeshTextures[i])))
         {
            Error("Textur konnte nicht ewrzeugt werden!");
         }
         else
         {
            Error("Textur geladen!");
         }
      }
      else
      {
         m_lpMeshTextures[i]=NULL;
      }
   }
}

void CXFile::Render()
{
   for(int i=0; i<m_dwNumMaterials; i++)
   {
      m_lpD3DDevice->SetMaterial(&m_lpMeshMaterials[i]);
      m_lpD3DDevice->SetTexture(0, m_lpMeshTextures[i]);
      m_lpMesh->DrawSubset(i);
   }
}

CXFile::~CXFile()
{
   delete[] m_lpMeshMaterials;

   for(int i=0; i<m_dwNumMaterials; i++)
   {
      if(NULL!=m_lpMeshTextures[i])
      {
         m_lpMeshTextures[i]->Release();
      }
   }

   delete[] m_lpMeshTextures;

   m_lpMaterialBuffer->Release();
   m_lpMesh->Release();
}

Sieht irgendjemand Fehler?
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Chewie
Super JLI'ler



Anmeldedatum: 17.07.2003
Beiträge: 382

Medaillen: Keine

BeitragVerfasst am: 03.08.2004, 16:34    Titel: Antworten mit Zitat

laß dir ein paar werte ausgeben, dann siehst du recht schnell, wo der fehler liegt.
ich hab mir einen konverter geschrieben, der die xfiles in ein eigenes format bringt, und lese das mit streams ein. mit den DXMesh funktionen hab ich nur probleme gehabt. so schwer ist ein xfile eh nicht zu parsen, du suchst halt mal nach einem mesh, dann stehen eh gleich anzahl und die vertizen selbst, dann kommen irgendwann MeshTextureCoords, etc.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 03.08.2004, 17:50    Titel: Antworten mit Zitat

ok es ist mir nun doch irgendwei gelungen eine XDatei anzuzeigen, allerdings spiinnt der Rest jetzt:
http://jklein.freelinuxhost.com/Screenshot.jpg
Das ist mein schöner 3D Wald, vollkommen verschandelt! Aber wenigstens wird die XFile Mauer angezeigt...
Woran könnten diese Texturfehler leigen?
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 03.08.2004, 18:14    Titel: Antworten mit Zitat

ok, es hat sich geklärt. Ich hab einfach das Vertexformat nicht nochmal gesetzt, so dass er nach dem Zeichnen des XFiles die Daten falsch interpretiert hat.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 03.08.2004, 18:29    Titel: Antworten mit Zitat

ach man
Deep Exploration hat irgendwei einen schaden. Ich hab mir ein Burgmodell im 3DS Format geladen. Das besteht nicht aus Texturen, sondern aus Farbigen Formen. Exposrtiert, verscuht anzuzeigen: Alles war weiß, und außerdem waren ein paar Dreiecke falsch herum angegeben, wegen dem culling. Liegt das am laden der Datei oder am falschen Exportieren?
Ich hab angeklickt:
General:
Texture Coordinates
save normals
save Materials
turn to left hand system
max point polys: 6

Textures:
export textures: png (aber sind eh keine vorhanden!)
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Chewie
Super JLI'ler



Anmeldedatum: 17.07.2003
Beiträge: 382

Medaillen: Keine

BeitragVerfasst am: 03.08.2004, 19:19    Titel: Antworten mit Zitat

bei mir funkts ganz gut. also dreiecke hat es bei mir zumindest noch nie geflippt. exportsettings hab ich dieselben, nur max. points in polys: 3.
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