AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

3D-Spieledateien exportieren

Ein Thema von the3dcloser · begonnen am 12. Okt 2013 · letzter Beitrag vom 14. Okt 2013
Antwort Antwort
Der schöne Günther

Registriert seit: 6. Mär 2013
6.197 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

AW: 3D-Spieledateien exportieren

  Alt 12. Okt 2013, 20:30
Ich verstehe noch weniger.
  1. several int16 sets of numbers, for up to 400k vertices - "Several" ist jetzt nicht sonderlich genau. Ein Int16 für den Vertex-Index gibt maximal ~64.000 adressierbare Vertices für den Index Buffer her. Wären wir jetzt bei 2^18 kommen wir auf 262144 Möglichkeiten, bei 2^19 auf maximal 524288 adressierbare Vertices. Und der Kerl erzählt jetzt von 400.000. Ist ja fast genau die Mitte
  2. Du sagst weiter oben, dass mehr als 400.000 möglich sein müssen, deine Quelle von "up to".
  3. Deine Quelle spricht von einem nicht näher definierten Vertex Buffer, gibt aber an, dass auf jeden Fall pro Vertex noch die Normale dabei ist. UV-Koordinaten kann man mit Sicherheit erwarten, du erwähnst jetzt noch "Spiel Shader". Vielleicht bin ich schon zu lange aus der Materie draußen, aber Shader-Informationen hätte ich jetzt eher auf den Flächen erwartet. Oder meinst du weitere Mapping-Koordinaten für andere Maps auf den Vertices?
  4. GEO habe ich irgendwie noch als Endung für irgendein eher einfacheres standarisiertes Format in Erinnerung. Welche Tools hast du ausprobiert? Mein Favorit war immer Deep Exploration (mittlerweile von SAP geschluckt, heißt jetzt glaube ich "SAP Visual Author" oder sowas...)
  Mit Zitat antworten Zitat
the3dcloser

Registriert seit: 5. Okt 2013
19 Beiträge
 
#2

AW: 3D-Spieledateien exportieren

  Alt 12. Okt 2013, 22:44
1. Sehr schön, wir sind bei dem ersten Problem. Jedoch gehe ich tendenziell von 2^19 aus, näheres dazu unten.

2. Diese "Quelle" ist der Programmierer von einem Szenariotool des 7.Vorgängers. Da hatten die Szenarien ca. 280k an Faces, er setzte das Limit damals auf 400k. Sieben Spiele später kann man damit rechnen, dass wohl noch min. 130k hinzukamen, da zwischen jedem Spiel ca. 3-4 Jahre lagen.

3. Ja, das ist damit gemeint.

4. Es gibt sehrwohl einige 3D Formate die auf die Endung *.geo enden, darunter dein Deep Exploration, jedoch auch zB GEOcontrol 2. Jedoch kann keins dieser Tool diese Art von geo lesen. Ich nehme an, dass das daran liegt, dass die GEO für den Game-Einsatz weiterentwickelt wude (pre-computed Faces) damit der Ladeaufwand geringer ausfällt. So war es zumindest bei den Früheren Spielen von diesem Hersteller. Die Tools von diesem Programmierer kennen jedoch dieses GEO Format nicht, es ist ein Zusammenschluss von mehreren alten Dateien.

Ich weis, dass dies nicht umbedingt weiterhilft, ich hoffe, dass ich wenigstens die aufkommenden Fragen beantworten konnte.
  Mit Zitat antworten Zitat
the3dcloser

Registriert seit: 5. Okt 2013
19 Beiträge
 
#3

AW: 3D-Spieledateien exportieren

  Alt 14. Okt 2013, 12:46
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?

Geändert von the3dcloser (14. Okt 2013 um 12:56 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von hitzi
hitzi

Registriert seit: 2. Jan 2003
Ort: Eibau
768 Beiträge
 
Delphi 2010 Professional
 
#4

AW: 3D-Spieledateien exportieren

  Alt 14. Okt 2013, 13:58
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.
Thomas
Besucht doch mal http://www.hitziger.net
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.688 Beiträge
 
Delphi 2007 Enterprise
 
#5

AW: 3D-Spieledateien exportieren

  Alt 14. Okt 2013, 16:04
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.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Namenloser

Registriert seit: 7. Jun 2006
Ort: Karlsruhe
3.724 Beiträge
 
FreePascal / Lazarus
 
#6

AW: 3D-Spieledateien exportieren

  Alt 12. Okt 2013, 22:56
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.
  Mit Zitat antworten Zitat
the3dcloser

Registriert seit: 5. Okt 2013
19 Beiträge
 
#7

AW: 3D-Spieledateien exportieren

  Alt 14. Okt 2013, 15:32
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.
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz