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

Aktuelle Zeit: Mi Jul 16, 2025 20:08

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



Ein neues Thema erstellen Auf das Thema antworten  [ 11 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Blending für Transparenz
BeitragVerfasst: So Nov 28, 2004 13:33 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Folgendes...Mein Chef möchte, dass ich die Verbindungen(Bonds) zwischen Atomen in einem durcaus auch größeren Atommodell tansparent darstelle. Eventuell später die Atome an sich auch...

Heißt das jetzt für mich zwingend, dass ich alle Objekte von hinten nach vorne durchsortieren muss und dann zeichenne, oder gibt es noch adnere Wege? Wenn ich 50000 Atome habe, kann das durchaus etwaslänger dauern......

Wie würdet ihr das angehen? Sollte ich die Atome in einen Quadtree stecken? Welche Geschwindigkeitsoptimierungen sollte ich noch machen?

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Nov 28, 2004 13:38 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Wenn du korrekte Transparenz willst, kommst du um eine Sortierung nicht herum, dann musst du sogar die einzelnen Dreiecke nach Tiefe sortiert rendern. Schnelle "Hacks", wie z.B. einfach die transparenten Sachen nach den nicht-transparenten zu rendern geht ja nur dann wenn sich zwei transparente Objekte niemals überlappen.

Allerdings muss man die Sortierung ja nicht in jedem Frame machen, sondern z.B. nur wenn sich die Ansicht ändert, oder du lässt sie ein wenig "nachinken", also machst die nur alle 10, oder nur dann wenn die Rotation der Szene abgeschlossen ist.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: So Nov 28, 2004 14:26 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Dez 28, 2002 11:13
Beiträge: 2244
Eine Alternative wäre rein additives oder multiplikatives Blending, da spielt die Reihenfolge keine Rolle, falls das vom Aussehen her akzeptabel ist. Dann gibt es ja noch Order Independant Transparency, aber da braucht man aufwändige Shader. Eine andere Methode die Carmack ausprobiert hat (siehe quakecon Rede) ist Dithering zu benutzen und die einzelnen Pixel überhaupt nicht zu überblenden sondern immer ganz oder gar nicht zu zeichnen. Zum Schluß muß man dann aber noch mit einem Shader über das ganze Bild und die transparenten Bereiche weichzeichnen damit das Dither Muster verschwindet.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Nov 29, 2004 00:03 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Also Shader is nich...soweit bin ich noch net...rein mental. Vorallem wird mein Chef/Prof. schnelle Ergebnisse sehen wollen. (Bis zum 13.Jan soll mein Programm zum Video rendern ein Beispiel ausspucken... :? )

Also werd ich wohl über die "Nachhinkenden Methoden" von Sascha nachdenken und anschließend implementieren. 8)

Danke soweit...

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Nov 29, 2004 09:22 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 28, 2002 19:27
Beiträge: 568
Wohnort: Chemnitz / Sachsen
lahmt ein heapsort oder so schon bei 50000 werten ???

_________________
Aktuelles Projekt :
www.PicPlace.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Nov 29, 2004 12:19 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Ich denke mal, dass jede Operation, in dieser Größenordnung, nicht zu unterschätzen ist. Es muss ja auch noch gezeichnet werden etc. Natürlich sollte das Sortieren recht schnell gehen. Allerdings wenn man es nicht braucht ist es weggeworfene Rechenzeit. Denn wenn man Kleinscheiß häufig genug aufruft wird darauß auch ein großer Haufen. ;-)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Nov 29, 2004 12:23 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Hier wären auch evtl. Threads eine sinnvolle Sache. Du machst dir nen Sortierthread, der in festgelegten Abständen (z.B. 25ms) alle transparenten Dreiecke (Objekte) sortiert. Dadurch hinkt die Sache auch nach (was der Nutzer aber evtl. nichtmal merkt), aber du kannst über den Thread steuern wie schnell das geschehen soll.

Warum ein Thread? Wenn du das z.B. in der Renderschleife alle 10 Frames machst, dann kommt es alle 10 Frames (sofern das sortieren recht lange dauert) zu einem kurzen Stocken, was unangenehm ist. Bei der Thread-Methode lässt du den Sortier-Thread ein Flag setzen dass sagt : "Ich habe die Dreiecke fertig sortiert" (die solltest du übrigens für den Thread als Kopie ablegen, damit der den Renderthread nicht blockt), und wenn dass der Fall ist kopierst du die sortierten Dreiecke in die Dreiecksliste auf die dein Render-Thread (oder VCL-Thread) freien Zugriff hat. So blockiert das Sortieren nämlich nicht mehr.

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Nov 29, 2004 12:38 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Ist die Frage ob das überhaupt immer kontinuierlich gemacht werden müsste? Das richtet sich aber danach, wie automatisiert das alles ablaufen soll. Also ob du das aus dem Programm veränderst oder ob dafür Benutzerinteraktion nötig ist? Weil, wenn du auf den Benutzer reagiertst, dann kannst du es ja eigentlich dort berechnen. Bzw von dort aus die Berechnung an einen Thread übergeben.

Können das irgendwann auch noch mehr Atome werden?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Nov 29, 2004 19:27 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Nein.

Der Witz an der Sache ist es gibt 2 Ansichten.

Adminmode: Hier ist eine weniger detailierte ansicht des Atommodels in dem sich der User interaktiv bewegen kann und Checkpoints setzen kann.

Rendermode: Hier kommts auf die Optik an, denn die ausgabe landet später mal in nem Video. Der Admin hat für das Video ne Flugbahn über Checkpoints bestimmt, die kamera fliegt diese dann ab. Je nach Cambewegung muss die Reihenfolge neu gemacht werden.

Ein Stocken sollte ja für den Videocapturer kein problem sein, denn er nimmt doch den Frameinhalt als BMP und wirft es in den Videostream, oder!?

Das Problem ist, ich möchte videos (30Sec - 120 Sec, ev. mehr) in Endlicher zeit rendern

Außerdem soll in der Adminansicht die bedienung schön flüssig bleiben. Eventuell wärs für den moment auch akzeptabel die Transparenz und folgende Effekte nur im Rendermode einzubauen.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Nov 30, 2004 08:24 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Aug 28, 2002 19:27
Beiträge: 568
Wohnort: Chemnitz / Sachsen
das is ne idee, im adminmode alle effekte abschalten (man kann die aber zuschalten, als option). damit sollte das alles doch gehen.

das videorendern, naja du bastelst dir jeden frame und haust den in die avi, da dauerts halt mal 2 min für ne 1min avi, na und, solange kann dein chef ja nu warten, bin ich der meinung, denn dann kannst du die effekte sehr realistisch darstellen, wenn du für jeden frame genug zeit hast.

_________________
Aktuelles Projekt :
www.PicPlace.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Nov 30, 2004 14:05 
Offline
DGL Member
Benutzeravatar

Registriert: Fr Mai 14, 2004 18:56
Beiträge: 804
Wohnort: GER/OBB/TÖL-WOR/Greiling
Das ist sowieso der große Vorteil an Filmen, nämlich dass sie nicht dynamisch gerendert werden müssen.

Kleine Anregung: Wenn du am Ende deines Projektes noch Zeit hast, kannst du ja überlegen, in andere Formate zu speichern.

_________________
Bild

"User Error. Replace User and hit Continue."


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


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 13 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.009s | 14 Queries | GZIP : On ]