ich habe einen schlankes Export-Skript für Blender geschrieben und ein kleines C-Programm, was das ganze in ein binärformat ausließt, einließt und anzeigt. Um meinen eigenen Performance-Anspruch gerecht zu werden, soll das ganze mit glDrawElements geschiehen; daher enthält die Datei u.a. verticie- und indicies Informationen. Was auch sonst
Am liebsten würde ich jetzt natürlich mit GL_POLYGON arbeiten, bräuchte dafür aber sowas wie ein glFacesPointer oder vgl. Leider find ich es keinerlei adequate Funktion, um glDrawElements + GL_POLYGON meine Faces-Informationen (wie auch immer) zu übergeben.
Meine temporäre Lösung sieht jetzt so aus, dass ich mit GL_TRIANGLES arbeite und mein Export-Skript dahingehend erweitert habe, dass er das Object vorher in Triagnles unterteilt und dann speichert. Das gefällt mir jedoch total nicht, da ich so keine ordentliche Möglichkeit finde, meine Dateien in Blender wieder zu importieren, ohne aus Verticies, Indicies und Faces das original-polygon wieder zusammenzusetzen...
GL_POLYGON kannst du nicht effizient rendern. Die Grafikkarte braucht Dreiecke. Dein Exporter sollte also Polygone in Dreiecke zerlegen.
Warum kann Blender keine Meshes importieren die aus Dreiecken bestehen? Schließlich sind Dreiecke auch nur ein Spezialfall eines Polygons. Oder geht es dir darum exakt wieder das zu importieren was du exportiert hast? Dann empfehle ich dir das Blender eigene Format zu verwenden. Also einmal in dein eigenes Format exportieren und einmal ganz normal im Blender-Format speichern. So hast du zwar zwei Dateien, aber du kannst du 100% alles wieder in Blender laden. Außerdem sparst du dir den Importer für das eigene Format.
Wenn du ein Problem darin siehst das es sich um zwei Dateien handelt: Spricht etwas dagegen beide Dateien in eine Datei zu werfen? Zum Beispiel einfach TAR oder ZIP packen.
Ansonsten, um die Polygone wieder zusammenzubauen brauchst du ja nur einen Polygonindex oder sowas, damit du weißt welche Dreiecke zusammengehören.
Blender kann natürlich alles Importieren - wie du schon erkannt hast geht es mir natürlich in erster Linie daraum, dass, was ich exportiert habe - auch so wieder importieren zu können, wie ich es exportiert habe.
Eigentlich wollte ich das ja vermeiden - aber - der Bequemlichkeit halber speicher ich nun einmal das Original-Objekt samt Faces und einmal das Objekt als Triangles-Variante samt indicies in meine Binärdatei. Muss ich halt nen fseek mehr machen in meinem c-progrämmchen ...
Das mit der Blender-Datei zum halten des originales ist dahingehend doof, dass du die Blenderdatei nicht ohne zusätzliches konvertieren in andere 3d Programme (Maya/Max/Modo/C4D) laden kannst; von daher hätte ich diese Informationen dann schon gerne direkt in meiner Datei; um bei bedarf auch einen Importer schreiben zu können für diese Programme. Zumal ich festgestellt habe, dass - zumindest bei Blender - der Export/Python Kram relativ gut dokumentiert ist und das Schreiben eines Exporters/Importers nur ein halbes Wochenende gekostet hat und alles kann, was ich brauche.
Registriert: Di Okt 03, 2006 14:07 Beiträge: 1277 Wohnort: Wien
Zitat:
Am liebsten würde ich jetzt natürlich mit GL_POLYGON arbeiten, bräuchte dafür aber sowas wie ein glFacesPointer oder vgl. Leider find ich es keinerlei adequate Funktion, um glDrawElements + GL_POLYGON meine Faces-Informationen (wie auch immer) zu übergeben.
Das ist möglich, ich mache das so. Es gibt keine OpenGL-Funktion dafür, die musst Du Dir selber basteln.
EDIT: das kann man allerdings nur im Immediate Mode machen, wenn Du glDrawElements mit VBO benutzt, geht das nicht.
Registriert: Di Okt 03, 2006 14:07 Beiträge: 1277 Wohnort: Wien
Mit "Immediate Mode" meinte ich nicht glBegin..glEnd sondern glDrawElements im Immediate Mode. Das sind nicht mehr Funktionsaufrufe, als wenn man glDrawElements mit VBO benutzt. Der Unterschied ist, dass die Vertices jedesmal den langen Weg von der CPU in die GPU antreten müssen, aber nicht einzeln, sondern in geschlossener Form als Array.
Alternativ zu den zwei dateien kannst du doch einfach dein Polygon in deinem Anguck-Programm triangulieren. Also nicht schon trianguliert exportieren, sondern wirklich nur zum anzeigen triangulieren.. so würde ich es denke ich tun.
Mitglieder in diesem Forum: 0 Mitglieder und 4 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.