Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi DirectX: Objekte laden (https://www.delphipraxis.net/6099-directx-objekte-laden.html)

Florian H 29. Jun 2003 13:46


DirectX: Objekte laden
 
Hi,

wie kann ich in mein Delphiprojekt zur Laufzeit ein 3D-Objekt in einer der bekannten Formate (.3ds, .x,...) laden um es danach zu verwenden!


Viele Grüße
DK

braingrenade 29. Jun 2003 15:22

Liste der Anhänge anzeigen (Anzahl: 1)
Moin Florian !

Da gibts beispiel files die bei delphix dabei sind(wenn dus mit delphix machen willst), ich hab sie hier mal angehängt.

Florian H 29. Jun 2003 15:50

Hi,
danke aber ich würds gern mit DirectX8 machen!
Also keine spez. Kapselung!

gruß dk

braingrenade 29. Jun 2003 16:09

Aso , da kenn ich mich net aus.

Florian H 30. Jun 2003 06:21

Aber das muss doch irgendwie gehen :|
Schließlich ist das ja ein wirklich wichtiger Teil der 3D-Programmierung denn ich kann ja nicht z.B. ein Auto oder eine Landschaft komplett in ner Unit (von Hand) machen, das wär ja wahnsinn!

OregonGhost 2. Jul 2003 16:39

Wenn es sich um das .x-Format handelt (und das SDK enthält Tools zur Konvertierung von 3ds nach .x), hast du folgende Möglichkeiten:
1. Lade die X-Datei von Hand mit dem IDirectXFile-Interface. Wie das geht, steht im SDK bzw. in den Samples. Ist die flexibelste, aber auch komplexeste Möglichkeit
2. Lade die x-Datei einfach mit D3DXLoadMeshFromX bzw. den ähnlichen Funktionen wie D3DXLoadSkinMeshFromXof. Auch hier ist im SDK alle nötige Information enthalten, bzw. eine Suche nach diesen Schlüsselwörtern liefert Tutoriale. Diese Methode ist wesentlich einfacher, man hat aber einige Probleme mit mehreren Animationen in einer Datei etc.

Ich empfehle für den Anfang oder wenn du keine Animationen brauchst die zweite Methode, letztendlich solltest du aber die erste einsetzen.

Davon abgesehen kannst du dir im Common Files Framework bzw. in einigen Samples enthalten die Klasse CD3DMesh (oder so ähnlich) anschauen, die eine Kapselung der Mesh-API darstellt.

Florian H 10. Jul 2003 12:02

Re: DirectX: Objekte laden
 
Wo gibts das Konvertierungsteil von 3DS nach X?
Hab gegooglet und nix gefunden, bei MS auch nicht ;(

Florian H 10. Jul 2003 12:12

Re: DirectX: Objekte laden
 
OK, hab eines (http://francis.dupont.free.fr/coindev/conv3ds.exe), nur jetzt hab ich Probs das zu laden (kapiere die PArameter von D3DXLoadMeshFromX nicht wirklich.... :cry:

OregonGhost 10. Jul 2003 13:13

Re: DirectX: Objekte laden
 
conv3ds.exe ist Bestandteil des DirectX SDKs, muss wenn ich mich recht erinnere jedoch explizit mitinstalliert werden. Es gab auch einige Versionen des SDKs, wo es nicht dabei war... Wie auch immer, im Full SDK sollte es drin sein, und bei den "Extras", die man auch auf der DirectX-SDK-Downloadseite bekommt, sind auch noch Plugins für 3dsmr3 etc.

Was die Aufrufe angeht: Daher mein Tip, in die Samples bzw. in die Common Files zu gucken ;c)

Ist hier von DirectX 9, aber ich glaube, da hat sich nicht so viel geändert...
Code:
HRESULT D3DXLoadMeshFromX(          LPCTSTR pFilename,
    DWORD Options,
    LPDIRECT3DDEVICE9 pDevice,
    LPD3DXBUFFER* ppAdjacency,
    LPD3DXBUFFER* ppMaterials,
    LPD3DXBUFFER* ppEffectInstances,
    DWORD* pNumMaterials,
    LPD3DXMESH* ppMesh
);
pFileName ist hoffentlich klar, und pDevice hoffentlich auch.
Die drei Puffer werden von der Funktion erzeugt, und du musst lediglich die Zeiger zur Verfügung stellen (also vom Typ Zeiger auf Zeiger auf ID3DXBuffer).
pNumMaterials, da übergibst du den Zeiger auf ein DWORD, das ist also ein Ausgabeparameter, der die Anzahl der Materials in ppMaterials angibt.
ppMesh ist das eigentlich Mesh-Teil, was du am Ende haben willst. Auch hier übergibst du lediglich den Zeiger auf einen ID3DXMesh-Zeiger.

Noch Fragen?
Dann schau dir bitte die Samples und die Common Files aus dem SDK in aller Ruhe an. Wenn danach immer noch Fragen sind, versuche ich natürlich trotzdem, sie zu beantworten, aber du siehst schon an der Komplexität des Ladens, dass das kein Thema ist, wo man so leicht eine fertige Lösung hat, da musst du dich selbst wenn du dich einigermaßen mit sowas auskennst einige Zeit mit beschäftigen...

Florian H 10. Jul 2003 17:21

Re: DirectX: Objekte laden
 
Hi,

danke erstmal für deie Hilfen, hat mir sehr weitergeholfen, ich glaube jetzt, das Objekt geladen zu haben!
Nur finde ich jetzt nirgends wo eine Möglickeit, das Ding auf den Bildschirm zu bringen :?
In annahme dass das geht hoffe ich auf eine Lösung ;)


viele grüße
flo


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:45 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz