Direct X dateien Bestimmte maximalgröße?

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

bonkersdeluxe

Betreff: Direct X dateien Bestimmte maximalgröße?

BeitragFr, Sep 07, 2007 22:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Ho alle miteinader. Ich hab da mal eine Frage.

Kann es sein dass *.x Dateien nicht größer als ca 9 MB sein dürfen.

Ich hatte folgendes vor, vielleicht kennt Ihr ldraw. Das ist ein format mit dem Lego Steine dargestellt werden. Und MLCad ist einer von vielen editoren mit dem mann lego Modelle bauen kann. http://www.ldraw.org.

Mit dem 3d Modeleditor ac3d kann man ldr dateien in diretx model dateien exportieren. Ich hatte zum testen eine Lego Firgur und ein Auto als x datei gespeichert und mit blitz basic geladen. Sah geil aus sogar die transparents der scheiben und scheinwerfer funktionierte.

Auf zum ersten richtigen lego Modell. ich hatte mittels meiner alten lego Pläne einen Eisenbahnwagon nachgebaut. und dann in direct x gespeichert. Wollte starten und bekam einen memory fehler beim laden.
Mir ist aufgefallen das auto ist ca 9 MB groß der Waggon ca 14 MB groß war.
Mein Traum ist es eine Lego Wlt zu bauen in der Züge fahren und man durch die Welt laufen und mit autos fahren kann. Der weg bis dahin ist noch weit aber mit blitz basic sicher realisierbar wenn ich nicht jetzt schon vor diesem vielleicht doch so simplen problem stehen würde. Denn mit dem männchen laufen in ein auto steigen und wieder raus und fahren tat schon. Nur bei größeren dateien haperts. Es gibt einen kostenlosen ldraw lws konverter. wenn nur irgendeine möglichkeit lws bzw lwo dateien zu öffnen.
Aber am geilsten währe *.ldr direkt zu öffnen aber das wird leider wohl nie gehen. Crying or Very sad


Ich hoffe Ihr habt vielleicht eine Idee denn ich fände es schade wenn ich dieses Project vergessen kann.

Vielen Dank schon mal im voraus!

Viele Grüße Bonkersdeluxe
 

Dreamora

BeitragFr, Sep 07, 2007 23:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du tatsächlich eine X mit 9MB Daten zugemüllt hast, vermutlich einfach deine Grafikkarte den Dienst quittiert. Das müssten mehrere Millionen Vertices und Triangles sein, das kann und wird nicht funktionieren selbst mit Highend DX10 Karte nicht.
Wenn du für Spiele Modelle machst, dann benutz NIEMALS Subdivision.
Die Modelle werden nicht mehr funktionieren.

DX7 hat recht simple einschränkungen:
64*1024 Polygone und Vertices pro Mesh (egal auf wieviele Surfaces aufgeteilt)
Auch heutige Grafikkarten haben irgendwo ihre grenzen, kenne aber die genaue Vertex- und Polygonzahl net was man in einen einzigen Vertexbuffer hauen darf.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

ChristianK

BeitragFr, Sep 07, 2007 23:37
Antworten mit Zitat
Benutzer-Profile anzeigen
@Dreamora
Im Prinzip kann man so viele Vertices in einem Vertexbuffer speichern, bis eben nicht mehr genug Speicher da ist.
Ich glaube, das Problem ist die Anzahl der Polygone, weil ja in einem Dreieck für jeden Vertex ein Index angegeben werden muss.
Alle Grafikkarten unterstützen 16-Bit große Indexbuffer ( 65536 ), aber nicht alle 32-Bit ( 4294967296 ). Bei neuen Modellen sollte das aber schon möglich sein.

Zitat:
DX7 hat recht simple einschränkungen:
64*1024 Polygone und Vertices pro Mesh (egal auf wieviele Surfaces aufgeteilt)

In DX gibt es so gesehen doch nur Surfaces und keine Meshes. Oder meintest du das auf Blitz3D bezogen?

@bonkersdeluxe
Auf das Spiel freue ich mich jedenfalls schon. Smile
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT
 

Dreamora

BeitragFr, Sep 07, 2007 23:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein ich meine Mesh.
Surface ist zwar nett, nur bezieht sich die Geometrie nicht auf eine Surface sondern auf ein DX Mesh, Surface in DX ist nur eine Textur mit Materialeigenschaften, die hat keinerlei Bindung an die Geometrie, das ist etwas was so nur innerhalb von Blitz3D existiert. (das Mesh und darin entsprechende Vertex und Triangle Index Ranges haben eine Bindung an ein Material)

Und DX7 hat effektiv die Beschränkung von 64 * 1024 Vertices und Triangles pro Mesh. Das liegt, wie du richtig erkannt hast, daran dass Indizes als Word und nicht als Int oder gar Long gespeichert sind.
Pump mehr rein und deine Anwendung fliegt dir um die Ohren in irgend einer Form.
Ach ja nur um das zu erwähnen: Mit LoadMesh macht man häufig das Problem noch schlimmer, weil dan verschiedene Meshes zu einem kombiniert werden.

DX9 unterstützt mehr, das nutzt dir nur nix. DX7 ist DX7 und DX9 ist DX9. Nur weil du unter DX9 skinned bone mesh animation hast, geht das in DX7 noch lange nicht, weil das Teil des DX9 X Formates ist und der DX9 API. Das sollten Blitz3D User so langsam durch die Texturen gelernt haben wo die meisten auch die DX7 Spezifikationen eindeutig verletzten (quadratisch, 2er potenz) und sich wundern warum es MAVt und sonst was.

Das Problem bei den X Filest ist, das die meisten X Exporter überhaupt keine Format Zugehörigkeit haben. Die machen und supporten was sie wollen, was mehr als nur selten zu Problemen führt und zwar in DX7 als auch DX9 Engines ...
Drum in Blitz immer B3D nehmen und nicht X, da wird dir der Exporter dann schon sagen, dass du etwas versuchst was nicht geht.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

ChristianK

BeitragSa, Sep 08, 2007 0:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Das mit den Bezeichnungen ist verwirrend. Smile Ich meinte mit Surface ( Blitz3D ) ein Mesh ( DirectX ), was dann eben einem Vertex-/Indexbuffer-Paar entspricht.

Zitat:
Mit LoadMesh macht man häufig das Problem noch schlimmer, weil dan verschiedene Meshes zu einem kombiniert werden.

Aber solange man das Mesh in verschiedene Surfaces ( also Blit3D-Surfaces Wink ) aufteilt, bekommt jedes einen eigenen Vertex- bzw. Indexbuffer, oder sehe ich das falsch? Schließlich kann ja auch jeder Teil eines Blitz3D-Meshes andere Materialinformationen enthalten, was sich nur dadurch erreichen lässt, dass mehrere Pakete mit Vertexdaten an die Grafikkarte gesendet werden. Für jedes dieser Pakete einen eigenen Vertexbuffer anzulegen wäre wohl der sinnvollste Weg, oder?
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT
 

Dreamora

BeitragSa, Sep 08, 2007 0:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Problem ist das ein DX Mesh (siehe X File Reference) mehrere Surfaces haben kann wie ein B3D Mesh auch.

Es gibt aber im gesamten Mesh nur einen Satz Vertex und Triangle Daten.
Das Material wird dann jeweils Index Ranges der Triangle Indices zugewiesen.
zB bei einem Haus mit Dach und wand könnteste das Dach Triangle 0 - 79 zugewiesen haben, während die Wandtextur 80-159 zugewiesen ist.
Dennoch ist es nur 1 Mesh und unterliegt der Vertices / Triangles per Mesh Beschränkung.
Wenn du die Beschränkung pro Surface haben willst musst du die Objekte auseinander nehmen, aber das würde schwächere Karten endgültig killen weil das noch mehr Vertex- und Triangledaten Transfer heissen würde und da ist DX7 allgemein nicht wirklich fit.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

ChristianK

BeitragSa, Sep 08, 2007 0:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Okay, gut zu wissen. Danke!
Weisst du, wie das bei Blitz3D aussieht. Gibt es da auch nur einen VB/IB pro Mesh?

Wenn nicht, dann könnte bonkersdeluxe, wenn er denn so viele Daten brauchen würde, sie in mehrere Surfaces aufteilen.
AdvanceLcd
Intel Core 2 Duo 3.2 GHz, 4 GB RAM, GeForce 8800 GTX | MacBook Pro 15,4″ Intel Core 2 Duo 2.4 GHz, 2 GB RAM, GeForce 8600M GT
 

Dreamora

BeitragSa, Sep 08, 2007 0:20
Antworten mit Zitat
Benutzer-Profile anzeigen
In Blitz ist die Beschränkung auch per Mesh.
Und solange nur 1 Vertex (vielleicht auch nur die Bounding Box, hab ich wirklich getestet) des Meshes im Screen ist wird das ganze gerendert zb als beispiel dieser Auswirkung. Darum ist es nicht sonderlich ratsam ganze Level als 1 Mesh zu machen. Da ist Entity Hierarchie vorzuziehen. Denn jede entity ist ein eigenes mesh bzw. besitzt ein eigenes Mesh ums korrekt zu formulieren.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

bonkersdeluxe

BeitragSa, Sep 22, 2007 17:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi Ho

Danke für die vielen Antworten. Ich habe es dann mit verschiedenen Modelformaten versucht und die dann in 3ds oder x konvertiert. Doch entweder fehlten Teile oder Materialen.

Es gibt aber die möglichkeit die dat dateien direkt in POVRay zu konvertieren. Weiss jemand wie und ob ich eine POV zu einer b3d konvertieren kann? Wenn ja sieht das dann eigentlich dann immer noch so aus?

Siehe link : http://student.fho-emden.de/~s...ad2005.pdf


Viele Grüße Bonkersdeluxe

skey-z

BeitragSa, Sep 22, 2007 17:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Pov-Format ist rein zum rendern geeignet(siehe z.B. Pov-Ray) und damit wird es mit Sicherheit nicht besser aussehen, bzw. gar nichts sehen
Ich würde dir raten vergiss dein Vorhaben es bringt dir in Blitz nichts.
Aus ein wenig Erfahrung kann ich dir sagen, versuch es besser mit einem normalen Modeller z.B. Wings 3D oder Blender(beide kostenlos) und sei so polygon- und vertexsparend wie möglich(ja, manchmal ist weniger eben mehr).
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz
BAC#57: 2. Platz
Twitter

BladeRunner

Moderator

BeitragSa, Sep 22, 2007 18:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn man sowas echtzeit ohne Probleme darstellen könnte bräuchtest Du ja keinen Pov-Ray mehr, meinst Du nicht ?
Rendering wie es Pov-Ray und Co. bieten ist eben was anderes als das Rendering von Spielen. Du wirst also einen anderen Weg gehen müssen - die Legomodelle in B3D darzustellen erfordert eine deutliche Reduktion von Poligonen und auch den Verzicht auf Spiegelungen etc.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

bonkersdeluxe

BeitragSa, Sep 22, 2007 18:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi @bladerunner

Jup auf die Speieglungen etc. kann ich verzichten. Es muss halt nicht diese superqualität sein. Denn das Ergebnis was ich bei den kleinen Modellen wie z.b das Auto hatte reicht mir.Sah auch geil aus. Mir ist in POV nur aufgefallen das ich LDRAw ohne Fehler dorthin konvertieren kann. Sprich keine Fehlenden Surfaces oder Matierialen etc.

Ich habe festgestellt das das Ldraw format irgendwie ein nicht so tolles format für exerne 3d programme ist Crying or Very sad

Hmm was tun?

Vielen Dank schon mal im voraus

Viele Grüße Bonkersdeluxe
 

Dreamora

BeitragMo, Sep 24, 2007 9:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Du musst schauen ob du einen Converter in ein Industriestandard Format findest. Heisst primär OBJ
Und dann von OBJ nach B3D konvertieren (das können verschiedene Programme).

Aber wie bereits erwähnt: Du wirst erst Mal massiv Polygonreduktion nutzen müssen bevor das in Blitz was wird. Wenn das Ding effektiv alle Legos als einzelne Steine in ein Mesh packt wird das niemals funktionieren in Blitz, weil vermutlich die einzelnen Steine schon zuviele Polygone haben.

Wenn du grenzen sehen willst wieviele Polygone du da verschwenden kannst: BlockLand ist ein gutes Beispiel. Ist zwar mit TGE gemacht aber die polygonseinschränkungen von TGE und B3D sind recht ähnlich.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group