ich brauche einen Modelloader, den man mit FreePascal benutzen kann, um die Linuxfreiheit nicht von vornherein einzuschränken. der WFObjLoader benutzt die glBitmap, welche wiederum die Windows.pas benutzt und scheinbar sind die Posermodelle zu groß für ihn (Zu wenig Arbeitsspeicher, das erste Mal, dass ich diese Meldung bekam). gl3Ds ist auch Windowsspezifisch und deshalb nicht ganz das, was ich suche (außerdem bekam ich schon gleich am Anfang Syntax-Fehler in der gl3Ds.pas). Gibt es für Poser geignete Loader (Lightwave, Wafefront OBJ, 3D Studio...) ? Ist Poser überhaupt geignet oder gibt es bessere Lösungen ? (ich habe schonmal mit 3Ds Max probiert einen Menschen zu erstellen, gnadenlos gescheitert)
Registriert: Mo Jan 31, 2005 11:02 Beiträge: 432 Wohnort: Rheinlandpfalz
Wenn du manuell die glBitmap aus der WFObjLoader.pas entfernst, besteht glaub ich kein Bezug mehr zur Windows.pas.
Ich habe es zwar noch nicht probiert, aber der Loader müsste dann auf Freepascal laufen...
Hier wurde das schon mal ähnlich diskutiert.
Evtl. hat Lord Horazont die glBitmap aus dem Loader entfernt. Kannst ihn ja mal fragen, dann brauchst du dir nicht die selbe Arbeit machen.
Texturen musst du dann aber über die Callbacks laden.
Nils hat geschrieben:
scheinbar sind die Posermodelle zu groß für ihn (Zu wenig Arbeitsspeicher, das erste Mal, dass ich diese Meldung bekam)
Wie groß sind denn die obj-Dateien? Ich habe auch mal ausprobiert, wie viele Vertices er verträgt... Da kamen unter anderem schon Dateigrößen von über 20MB vor Von daher kann ich mir nicht wirklich vorstellen, dass der Arbeitsspeicher zu klein ist. Hast du überhaupt die aktuellste Version? So eine Meldung haben wir aber auch mal bekommen, nur unter WinXP Home, aber mit der neuen Version sollte der Fehler eigentlich behoben sein.
Nils hat geschrieben:
Ist Poser überhaupt geeignet oder gibt es bessere Lösungen ?
Wenn er gescheit exportiert, warum nicht. Andere Lösungen? -> Blender
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2623 Wohnort: Berlin
Programmiersprache: Go, C/C++
Ich hab die Tage mit meinen SceneGraph File Format begonnen, dieses arbeitet auf Streams,callbacks und viel mit Nodes.
So werden z.B. nur die Nodes geladen die im SceneGraph registriert sind und dann auch nur der Nodeheader und ned die Daten.
Anhand der IDs kann ein Node identifiziert und geladen werden. Man kann an NodeIDs ein Draw und Load Callback hängen, um z.B. komplexere und variable Daten im FileFormat zu lesen oder zu zeichnen. Das System kommt nur mit dem NodeTyp und darauf muss man selber seine Strukturen aufziehen. Ich nutze Blender zum exportieren der Daten und Cross ist die ganze Sache auch.
Die Sache wird allerdings erst ende des nächsten Monats released und bis dahin gibs nur snapshots aus dem svn repo von mir.
Hier ein Bild vom gestrigen Stand.
http://karmarama.developer-alliance.org/upload/SceneGraph8a.png (Bild hab ich unter Gentoo 64Bit mit gnome oberfläche(win2k theme) und Karmarama Engine gemacht)
// edit Lossy: Bild als Link
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
@MatReno: Momentan bin ich unter Windows mit Delphi (Delphi7 ist imho meilenweit besser als Lazarus) und ansonsten unter Debian. Dürfte denke ich keine Probleme verursachen, da ich auch bei Delphi immer möglichst plattformunabhängig bleibe. Dank Komprimierung ist es mit 3,74MB recht klein geworden: Klick.
@TAK2004: Gut, aber ich habe keine Lust mir jeden Tag Kaffee zu kochen und mich dann auf die Uhr schauend vor den Computer zu setzen, bis es draußen ist.
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
@TAK:
Wie siehts da mit der "ausreißbarkeit" aus? Muss man deine komplette Engine einbauen, um das Modelformat zu verwenden oder gibts das auch einzeln? Wäre nämlich echt super.
Und mach das Bild kleiner. Das macht mit 1024x768 keinen Spaß.
Gruß Lord Horazont
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
Registriert: Mo Jan 31, 2005 11:02 Beiträge: 432 Wohnort: Rheinlandpfalz
@Nils:
Bei mir funzt das Laden des Objektes wunderbar (siehe Anhang). Innerhalb von ca 2 sek.
Ich nutze WinXP pro. Ich sage das deshalb, weil ich mit der home version, glaub ich, schon mal ähnlich Fehler bekommen habe.
Weiß jetzt aber auch nicht woran es liegen könnte... Ich nutze Turbo-Delphi2006.
Hast du es mal mit meinem Beispielprogramm versucht, oder mit einem selbst geschriebenen von dir?
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Registriert: Mo Jan 31, 2005 11:02 Beiträge: 432 Wohnort: Rheinlandpfalz
Nils hat geschrieben:
Das ist mein Code. Siehst du hier schon einen Fehler ?
Sollte eigentlich so stimmen... Hast du die Möglichkeit dein Programm, dass das Objekt lädt, auf anderen Rechnern mit (möglichst) anderen Betriebssystemen laufen zu lassen (WinXP Pro/Home, 2k etc). Hast du es schon mal mit meinem Beispielprogramm versucht zu laden?
Nils hat geschrieben:
Nun aber mal was anderes (wichtiges): Speichert Poser die Texturen nur anders ab und dein Programm findet sie deshalb nicht oder wieso ist sie grau ?
Das Grau ist das default-Material im WFObjLoader. Die Texturen waren ja gar nicht in der Datei, die du mir geschickt hast, dabei. Daher kann der Loader sie ja auch nicht finden.
Ich weiß jetzt auch nicht mehr, ob Material-Daten mit dabei waren, also ein mtl-Datei neben der Obj-Datei vorhanden war...
Denn da sollten dann Verweise auf die Texturen drin sein.
Ok, ich habe es mit deinem probiert und es funktioniert. Ich habe in der MTL solche Einträge und die Dateien im gleichen Verzeichnis, wieso bleibt es immernoch grau ?
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2623 Wohnort: Berlin
Programmiersprache: Go, C/C++
Lord Horazont hat geschrieben:
@TAK: Wie siehts da mit der "ausreißbarkeit" aus? Muss man deine komplette Engine einbauen, um das Modelformat zu verwenden oder gibts das auch einzeln? Wäre nämlich echt super. Und mach das Bild kleiner. Das macht mit 1024x768 keinen Spaß.
Gruß Lord Horazont
Naja das ganze Karmarama brauchst du ned aber es wäre praktisch ^^.
Das Format ist ein Scenegraphformat und deswegen hab ich es auch direkt in meinen SceneGraph gebunden.
Um die Datei zu laden ist aber ned viel nötig. Nen Fileheader und dann kommen nur noch Nodeheader+Nodedata.
In den Nodeheadern stehen dann Hashes,IDs,offset zum nächsten Node und die Datengröße.
Wenn du also die file durchgehst und auf IDs triffst die du kennst, dann kannst du einfach die Daten vom node laden.
Die Daten kannst du z.B. in ein record speichern.
Ein TKar_Node, in meinem SceneGraph, kennt den Header und die Daten zum Node liegen als pointer vor.
Ich verwende momentan Records, die ich dann befülle aber ich überlege es in Klassen zu packen und den LoadData und Draw Callback mit zu binden.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Registriert: Mo Jan 31, 2005 11:02 Beiträge: 432 Wohnort: Rheinlandpfalz
Nils hat geschrieben:
Ich habe in der MTL solche Einträge und die Dateien im gleichen Verzeichnis, wieso bleibt es immernoch grau ?
Evtl. liegt es daran, dass in der Obj-Datei kein usemtl Body bzw. usemtl Fingernails unter dem entsprechenden Objekt (gekennzeichnet mit "o" oder "g") steht... Das müsstest du mal überprüfen.
Wenn du generell 2 verschiedene Materials (wie hier) verwenden willst, müssen es auch 2 objekte in der Obj-Datei sein.
Wenn das nicht hilft, dann lade mir nochmal alles hoch (mit Textur, Mtl-Datei), ich hoffe, das macht dann keine größeren Umstände Dann kann ich nochmal über alles drüberschaun, damit ich den Fehler besser finden kann.
Wieso funktioniert eigentlich das Laden des Modells bei meinem kleinem Codeabschnitt nicht ? Hast du das bei dir irgendwie anders gemacht oder sind gewisse Grundeinstellungen erforderlich ?
Registriert: Mo Jan 31, 2005 11:02 Beiträge: 432 Wohnort: Rheinlandpfalz
Hallo,
Es klappt! Nach ~1 Stunde rumprobieren habe ich die Fehelerquellen gefunden:
Code:
1. Obj-Datei: Suche nach "mtllib" -> Tabulator nach "mtllib" durch Leerzeichen ersetzen
- Tabulator zeichen werden nicht erkannt (-> Obj-Spezifikation)
2. Obj-Datei: Überall wo "usemtl" steht !!muss!! davor ein "o" oder "g" stehen.
- Grund: Jedes Child kann nur ein Material haben
- Bemerkung: Jedes "g" oder "o" muss einen anderen Namen haben
3. (optional) unnötige gruppen unter gruppen entfernen. Bsp.:
...
g Body
g Body <-- entfernen, spart Rechen-, Renderzeit
...
4. Texturen: PowerOfTwo Texturen verwenden. D.h.: Große auf 1024x512, 1024x1024 beschränken
- am besten mit Gimp scalieren
- sollte 1024 nicht überschreiten
5. Texturen: Keine png-verwenden! -> als jpg, tga, oder bmp speichern!
- in der mtl-Datei muss man natürlich die png-Endung ersetzen!
- Mit Lossy's Loader ist es aber auch möglich png's zu laden
leider nur über eine zusätzliche dll. Müsstest das dann selber
in der glBitmap und im Loader anpassen.
6. Mtl-Datei: In der mtl haben manche Materials keine "map_Kd" gehabt (korrigiert!)
Es war zwar viel Arbeit, sich mit WordPad durch 15 Megabytes an Text zu quälen, aber ich denke
das Resultat ist doch nett anzusehen. Damit du das nicht auch nochmal machen musst, habe ich alles
zusammengepackt und wieder hochgeladen. LINK!
Das nächste mal musst du aber selbst obige Schritte durchführen, da sich der Poser-Exporter scheinbar nicht an die Obj-Spezifikation hält...
Außerdem habe ich ihr noch die Fingernägel geschnitten (kleiner Scherz!)
Naja, im Großen und Ganzen funktioniert es nun!
Viel Spaß!
Gruß,
MatReno
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
Mitglieder in diesem Forum: 0 Mitglieder und 7 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.