Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 07:55

Foren-Übersicht » Programmierung » OpenGL
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Mo Mär 23, 2009 13:06 
Offline
DGL Member

Registriert: Mi Apr 16, 2008 23:14
Beiträge: 6
Hallo Zusammen,

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...

... also - wie löst ihr das Problem?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mär 23, 2009 14:00 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
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.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mär 23, 2009 17:20 
Offline
DGL Member

Registriert: Mi Apr 16, 2008 23:14
Beiträge: 6
Besten Dank für die Info.

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.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mär 23, 2009 19:39 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Das Thema GL_POLYGON hatten wir hier schonmal diskutiert. Entsprechnd wurde auch der Hinweis bei glBegin angepasst.

GL_POLYGON wird von vielen Treibern wie GL_TRIANGLE_STRIP behandelt.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mär 24, 2009 08:21 
Offline
DGL Member
Benutzeravatar

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.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mär 24, 2009 15:10 
Offline
DGL Member

Registriert: Mi Apr 16, 2008 23:14
Beiträge: 6
Zitat:
das kann man allerdings nur im Immediate Mode machen


Abgesehen davon, dass es ein paar hunderttausend Funktionsaufrufe an OpenGL mehr sind, ist das gar nicht mal so eine schlechte Idee ;)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mär 24, 2009 15:15 
Offline
DGL Member
Benutzeravatar

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.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Mär 24, 2009 15:36 
Offline
DGL Member
Benutzeravatar

Registriert: Di Dez 03, 2002 22:12
Beiträge: 2105
Wohnort: Vancouver, Canada
Programmiersprache: C++, Python
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.

Aya


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 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.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.008s | 15 Queries | GZIP : On ]