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
|
Verfasst am: 03.08.2004, 12:59 Titel: X Files Vertices und Indices Extrahieren |
|
|
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 |
|
|
Christian Rousselle Site Admin
Alter: 48 Anmeldedatum: 19.07.2002 Beiträge: 1630
Medaillen: Keine
|
Verfasst am: 03.08.2004, 13:22 Titel: |
|
|
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 |
|
|
Fallen JLI MVP
Alter: 40 Anmeldedatum: 08.03.2003 Beiträge: 2860 Wohnort: Münster Medaillen: 1 (mehr...)
|
Verfasst am: 03.08.2004, 13:24 Titel: |
|
|
Ich glaube er wollte diese vorgefertigten Funktionen nicht nutzen
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 |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 03.08.2004, 13:31 Titel: |
|
|
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 |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 03.08.2004, 15:37 Titel: |
|
|
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 |
|
|
Chewie Super JLI'ler
Anmeldedatum: 17.07.2003 Beiträge: 382
Medaillen: Keine
|
Verfasst am: 03.08.2004, 16:34 Titel: |
|
|
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 |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 03.08.2004, 17:50 Titel: |
|
|
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 |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 03.08.2004, 18:14 Titel: |
|
|
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 |
|
|
Jonathan_Klein Living Legend
Alter: 37 Anmeldedatum: 17.02.2003 Beiträge: 3433 Wohnort: Siegerland Medaillen: Keine
|
Verfasst am: 03.08.2004, 18:29 Titel: |
|
|
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 |
|
|
Chewie Super JLI'ler
Anmeldedatum: 17.07.2003 Beiträge: 382
Medaillen: Keine
|
Verfasst am: 03.08.2004, 19:19 Titel: |
|
|
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 |
|
|
|