Registriert: Mo Mai 29, 2006 21:13 Beiträge: 142 Wohnort: Ballenstedt/Sachsen-Anhalt
Tja, nun mache ich mal wieder was mit 3D-OpenGL (nach einem Exkurs in 2D-Welten), und habe nach 1 Stunde das erste Problem. Irgendwie scheint sich die Transparenz nicht zu verhalten, wie gewollt.
Und zwar habe ich einen Würfel, der aus Würfeln besteht. Also ein 3Dimensionales Array of Würfel Diese sind allesamt 10% Transparent, und sollen Später die Besitzverhältnisse durch die Farbe anzeigen.
Das Problem ist jetzt...hm, wie soll ichs beschreiben...siehe Screenshot. Von hinten fehlt da was. Man sieht das auch schön am Wireframe, man kann nicht durchgucken.
Ich würde ja sagen, die Sortierung passt nicht. Kann auch nicht, wird ja nirgendwo sortiert. Aber wie mach ich das dann hier richtig?
Oder ist das ein Culling-Problem? Kann aber auch nicht sein, das kann ich disablen wie ich will, da ändert sich nichts von...
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Das zweite Bild ist vollkommen richtig. Das liegt ganz daran, dass du deine Würfelwürfel von Hinten nach vorne Zeichnest. Wenn du von Vorn drauf schaust passt alles, weil die Würfel schön einer nach dem anderen übereinander geblendet werden. Aber von Hinten betrachtet ist es so, dass die Würfel die zu erst gezeichnet werden ganz vorne liegen. Was wiederrum bedeutet, dass dein ZBuffer schon die vordersten Werte beinhält. Also Fallen alle Würfel die anschließend gezeichnet werden durch den Tiefentest. Denn der ZBuffer kennt keine Transparenz.
Was kannst du jetzt dagegen tun. Wenn es Grafisch richtig ist dann kannst du einfach den Tiefentest für diesen Zeitraum aktivieren. In deinem Fall. Alle Würfel haben die gleiche Farbe, Transparenz etc sollte das sogar gehen.
Oder du deaktivierst den Tiefentest und benutzt eine andere Blendfunc. Das spricht aber eher Partikelangines an. Diese Addieren normal nur die Tranzparenzen. Wodurch die Tiefe keine Rolle mehr spielt.
Und die letzte Möglichkeit ist, dass du deine Würfel sortierst und diese Sortiert zeichnen musst. das ist aber wiederrum etwas komplexer. Damit kenne ich mich aber nicht so wirklich gut aus.
Registriert: Mo Mai 29, 2006 21:13 Beiträge: 142 Wohnort: Ballenstedt/Sachsen-Anhalt
Hm, dachte ich mir fast.
Nur leider passt hier irgendwas immer noch nicht. Interessant ist ja: die äußerste Reihe passt...
Auch verschiedene Tiefentest/BlendFunc-Kombinationen helfen mir nicht weiter...
Langsam glaube ich an ein Culling-Problem. Ich hab hier -> http://martok.kilu.de/temp/Cubulation.exe mal eine Demo hochgeladen, wenn sich das mal jemand angucken könnte. (Benötigt SDL, sollte aber bei DGLSDK-Besitzern da sein)
Da sollte eine Hälfte transparent, ein viertel blau und 1/4 rot sein... ist es aber nicht... ich werd noch verrückt.
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Also ich würde schon sagen, dass das genau das Problem ist. Weil die kleinen Würfel bestehen ja auch aus 6 Flächen und bei denen ist die Tiefe nun mal auch wichtig.
[edit] Aber wie gesagt. Blending funktioniert nur, wenn du aadaptive blendest GL_ONE, GL_ONE. Aber dadurch wird der Effekt wieder ein ganz anderer. Und vielleicht könnte es etwas bringen den Tiefentest zu deaktivieren. Weiß allerdings nicht ob es tatsächlich wirklich etwas bringt. Wenn nicht wird dir nichts anderes übrig bleiben als die Objekte nach der Tiefe zu sortieren. Keine Ahnung ob es da mittlerweile auch andere Möglichkeiten für gibt.
Registriert: Mo Mai 29, 2006 21:13 Beiträge: 142 Wohnort: Ballenstedt/Sachsen-Anhalt
Lossy eX hat geschrieben:
Blending funktioniert nur, wenn du aadaptive blendest GL_ONE, GL_ONE. Aber dadurch wird der Effekt wieder ein ganz anderer. Und vielleicht könnte es etwas bringen den Tiefentest zu deaktivieren.
Das dürfte wohl die Antwort sein...
Mit deaktivierten DEPTH_TEST und GL_ONE,GL_ONE geht es Sieht sogar eher nach dem aus, was ich eigentlich meinte. Die Würfelchen sollten ja die Farbe haben, wenn sie "besetzt" sind. Das wird hier doch etwas besser sichtbar. Mal sehen, was die anderen Parameter jetzt tun...
EDIT: sieht wirklich gut aus. Doch, das kann man dann hier als gelöst betrachten.
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Du könntest den Würfel im übrigen sehr stark vereinfachen, wenn du die kleinen Würfel nicht als Würfel siehst sondern dort für jede Ebene eine durchgezogene Fläche nimmst. Das würde die anzahl der Flächen drastisch verringern. Weil momentan machst du nichts anderes. Aber du setzt halt eine Seite des Würfeln aus vielen kleinen zusammen.
Wenn du sonst culling aktiv hast, dann macht es keinen Unterschied. Wenn es sonst aus ist, dass wurden vorher auch noch die Rückseite mit gerendert. Also zusätzlich zu der Vorderseite eines kleines Würfels. Die liegen ja genau aufeinander.
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.