Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi 3D-Spieledateien exportieren (https://www.delphipraxis.net/177045-3d-spieledateien-exportieren.html)

Namenloser 12. Okt 2013 22:56

AW: 3D-Spieledateien exportieren
 
Wahrscheinlich ist das 3D-Objekt in mehrere unabhängige Teile partitioniert, wovon jedes Teil bis zu 2^16 Vertices haben kann.

Aber ohne die komplette Datei zu haben, ist es wohl unmöglich, das exakte Format zu rekonstruieren. Ich glaube außerdem auch nicht, dass irgendjemand Lust dazu hat...

Eventuell könntest du auch das eigentliche Programm reverse-engineeren/debuggen (Stichwort IDA Pro). Allerdings bewegst du dich dann rechtlich u.U. zumindest in einer Grauzone. Und Software von dieser Komplexität zu reverse-engineeren ist auch nicht gerade einfach, schon gar nicht, wenn man es vorher noch nie gemacht hat.

Oder du betreibst noch ein bisschen Social Engineering, um mehr Informationen von diesem Programmierer rauszukriegen ;). Das dürfte wahrscheinlich noch das erfolgsversprechenste sein.

the3dcloser 14. Okt 2013 12:46

AW: 3D-Spieledateien exportieren
 
Ok, ich hab den Programmierer nochmal ausgequetscht, es scheint als ob die Grundlegende Struktur dieser Flächen in einer anderen Datei in form einer Tabelle hinterlegt ist, somit muss ich mich jetzt erstmal damit anfreunden (juhu^^)

Danke trotzdem für die Hilfe.

PS: Kennt sich jemand in der Speicherung von Tabellen in binärdateien aus?

hitzi 14. Okt 2013 13:58

AW: 3D-Spieledateien exportieren
 
Die Flächen erzeugt doch die Grafikkarte selber. Man kann der Grafikkarte einen Vertex- und Indexbuffer übergeben und die macht daraus die Fläche.
Beispiel für ein Dreieck - Koordinaten x,y,z:

Punkt 1 - Index 0: 1,1,0
Punkt 2 - Index 1: 1,0,0
Punkt 3 - Index 2: -1,1,0

Der Vertexbuffer enthält nun (1,1,0), (1,0,0), (-1,1,0). Der dazugehörige Indexbuffer enthält: 0,1,2. Die Grafikkarte weiß nun das Punkt 1, der am Index 0 im Vertexbuffer ist, also 1,1,0 ... usw.

Wenn du an die Vertices (deine "Schnittpunkte") und an die Indices kommst, kannst du über die entsprechenden OpenGL oder DirectX Funktionen das Modell am Bildschirm zeichnen.

Das alles ist hier stark vereinfacht erklärt und da gibt es noch eine Menge mehr zu beachten. Dazu bitte weiterführende Dokumentation lesen.

the3dcloser 14. Okt 2013 15:32

AW: 3D-Spieledateien exportieren
 
Aha, langsam wird mir das System etwas klarer. Auf Deutsch gesagt, brauche ich dann eigentlich nur 2 rießige Arrays, die ich dann in eine Ausgabedatei speichern muss (will ja nur einen Konvertor schreiben, die 3D Veränderungen laufen dann über "bessere" Programme).

Letzendlich wird also das ganze wie in einer OBJ gespeichert, bei der pro Zeile ein Punkt oder eine Fläche angegeben wird, sprich

v -1.986 0.75 4.654 //Erstelle Point an angegebener XYZ Pos

f 1 53 4 // Erstelle Face (Fläche) aus 1. 53. und 4. Scheitelpunkt

Werde mich mal darüber etwas schauer machen, danke im vorraus.

Medium 14. Okt 2013 16:04

AW: 3D-Spieledateien exportieren
 
Zitat:

Zitat von the3dcloser (Beitrag 1231968)
PS: Kennt sich jemand in der Speicherung von Tabellen in binärdateien aus?

Man kann das auf theoretisch unendlich viele Arten und Weisen machen. Nochmal: Ohne ganz genaue, bitweise, verlässliche Dateiformatbeschreibung ist alles nur Raten - und selbst dann noch echt langwierig. Wenn man überhaupt weiter kommt. Hast du diese nicht, vergiss dein Vorhaben lieber. Das ist nicht böse gemeint, aber du klingt nicht wie jemand, dem man Reverse-Engineering völlig unbekannter Dateiformate zutrauen könnte. Würde ich mir selbst auch nicht. Eigentlich nur recht wenigen hier, und dann braucht man noch Unmengen an Zeit und Muße dafür.


Mir ist vor allem noch immer nicht ganz klar, was du überhaupt machen willst. Möchtest du nun Modelle des Spiel in dein Programm laden? Oder möchtest du 3D-Daten die du selber irgendwie erzeugt hast in ein für das Spiel lesbares Format ausgeben? Und an welcher Stelle kommen diese ominösen "besseren Programme" ins Bild? Ich glaube nicht, dass es mit dem blanken "rauswürgen" eines Vertex- und Indexbuffers getan sein kann. (Zumal diese ebenfalls in einer Fülle verschiedener Formate vorliegen können, ohne dabei überhaupt auf die konkrete Dateistruktur einzugehen.)

Wie man es auch dreht und wendet, sobald du Daten eines bestehenden Programmes lesen oder schreiben willst, MUSST du irgendwie an eine genaue Beschreibung kommen. Eine, in der Wörter wie "irgendwie", "andere Infos", "in etwa", und "grob gesagt" nicht vorkommen. Und genau diese brauchen auch wir hier, um dir dann bei konkreten Fragen dazu helfen zu können. Das. Wird. Sonst. Nichts.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:36 Uhr.
Seite 2 von 2     12   

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