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

Aktuelle Zeit: Fr Jul 18, 2025 14:10

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



Ein neues Thema erstellen Auf das Thema antworten  [ 20 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: Transparenz richtig?
BeitragVerfasst: Di Aug 02, 2005 09:56 
Offline
DGL Member
Benutzeravatar

Registriert: So Jun 05, 2005 15:08
Beiträge: 39
Wohnort: Bei Bayreuth
Holla! :)

Ich hab da folgendes Problem:

Ich habe ein virtuelles Modell von einem Caport erstellt, habe aber ein Problem mit der Eckverglasung.
Da sollten zwei Scheiben sein, beide halbtransparent.

Leider :roll: zeigt es die aber nicht richtig an:
Bild

Außerdem: Bild

Ich glaube, es liegt an der Reihenfolge in der ich die Flächen render, weiß aber nicht weiter :arrow: HILFE :!: :!: :!: :oops:

_________________
Geniale Menschen sind selten ordentlich, ordentliche selten genial (Albert Einstein)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Aug 02, 2005 10:07 
Offline
Forenkatze
Benutzeravatar

Registriert: Mi Okt 22, 2003 18:30
Beiträge: 1945
Wohnort: Närnberch
Programmiersprache: Scala, Java, C*
Es liegt tatsächlich an der Reihenfolge, wie du die Objekte renderst. Im Blending-Tutorial findest du u.a. folgendes:
Zitat:
Wie alles hat auch das Blending einen kleinen Schönheitsfehler. Viele Leute denken immer wieder, dass auch beim Blending praktisch eine 3D-Welt existiert. Das ist jedoch falsch, da die Quelle ja im Frame-Buffer bereits vorliegt. Praktisch bereits fertig gerendert. Es macht also für das Blending einen enormen Unterschied, in welcher Reihenfolge die Objekte zur Kamera hin gerendert werden.

Würden wir zum Beispiel ein Haus mit einem Fenster render wollen und das Fensterglas mit Hilfe von Blending darstellen und wir würden zunächst das Glas rendern, so würde OpenGL dieses mit dem Hintergrund (vermutlich ne Himmel) blenden und dann anschließend das Haus drum herum zeichnen. Der ahnungslose Programmierer wird dann mit großen Augen vor dem Fenster stehen und sich wundern, wieso das Fenster so merkwürdig aussieht und man praktisch durch das Glas ins Freie sehen kann. Würden wir kein Blending haben, so würde es nicht weiter auffallen in welcher Reihenfolge wir die Objekte gerendert haben.

Darum gilt, alle Objekte rendern, bevor man zum Blending greift. Man sollte sich also durchaus Gedanken dazu machen, wie man seine Objekte rendert. Es gibt verschiedene Verfahren seine Objekte so ordnen zu lassen, dass das hier beschrieben Problem nicht auftritt, darauf möchte ich nicht näher eingehen, ihr seit gewarnt worden ;D Eigentlich ist es ein recht logischer Vorgang, allerdings erliegt man doch recht schnell diesem kleinen Irrglauben ;)

Du solltest, wenn du deine halbtransparenten Objekte renderst, den Tiefentest entsprechend einstellen. IMHO hilft es, wenn du OpenGL anweist, vom Depth-Buffer lesend zuzugreifen, anstatt schreibend. Dann werden deine transparenten Objekte nämlich korrekt von anderen verdeckt, blenden im Gegenzug aber auch richtig.

_________________
"Für kein Tier wird so viel gearbeitet wie für die Katz'."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Aug 02, 2005 10:12 
Offline
DGL Member
Benutzeravatar

Registriert: So Jun 05, 2005 15:08
Beiträge: 39
Wohnort: Bei Bayreuth
Und wie greife ich lesend und nicht schreiben auf den Puffer zu?

_________________
Geniale Menschen sind selten ordentlich, ordentliche selten genial (Albert Einstein)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Aug 02, 2005 10:12 
Offline
DGL Member

Registriert: Do Apr 08, 2004 16:55
Beiträge: 516
Ähm nur so die Frage, auch wenn sie nicht hinpasst, aber kannst du mal andere Texturen nehmen?? Von den jetztigen bekomme ich Augenkrebs!

_________________
Shareholder und Leitender Entwickler bei Pipedream-Games.

Zitat: Siehst du diesen Park da unten? Jeden Tag lernen sich darin Menschen kennen und verlassen einander. Und du hast dein ganzes Leben Zeit darin zu gehen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Aug 02, 2005 10:15 
Offline
DGL Member
Benutzeravatar

Registriert: So Jun 05, 2005 15:08
Beiträge: 39
Wohnort: Bei Bayreuth
Zum Thema Texturen:

Hatte ich vor, das ist nur ein Rohbau!
Bevor ich mich um Texturen kümmer, möchte ich erst mal, dass es überhaupt FUNKTIONIERT !

_________________
Geniale Menschen sind selten ordentlich, ordentliche selten genial (Albert Einstein)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Aug 02, 2005 10:17 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
@speedmaster: Jetzt wirste aber echt kleinlich. ;-)

tiefenbuffer: Es ist vielleicht einwenig ungünstig ausgedrückt. Sofern der Tiefentest an ist wird gelesen und sobald ein Tiefenbufer existiert wird in ihn geschrieben. Das Lesen könntest du verhindern in dem den Tiefentest deaktivierst und das Schreiben geht mit glDepthMask(GL_FALSE);. Nachdem du fertig bist solltest du das Schreiben auch wieder aktivieren. glDepthMask(GL_TRUE);


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Aug 02, 2005 10:22 
Offline
DGL Member
Benutzeravatar

Registriert: So Jun 05, 2005 15:08
Beiträge: 39
Wohnort: Bei Bayreuth
Den hatte ich schon mit glDisable(GL_DEPTH_TEST) deaktiviert.

Blos wie kann ich
a.)
dafür sorgen, das nicht-transparente Flächen transparente überdecken ?
und
b.)
dafür sorgen das helle Flächen (weiße Wand) stärker überfärbt werden als dunklere (graue Decke) ?

_________________
Geniale Menschen sind selten ordentlich, ordentliche selten genial (Albert Einstein)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Aug 02, 2005 10:46 
Offline
DGL Member

Registriert: Do Apr 08, 2004 16:55
Beiträge: 516
Ich würde gucken das du eine Renderbaum erstellst was du vermutlich eh noch machen musst.

Zum Thema Texturen:
Ich habe hier von meinem Team noch ca. 50 2048x2048er Texturen Rumliegen, falls also jemand interesse hat!
( Sind für den nachfolger unseres Spieles "Hidden Stroke 2" )

_________________
Shareholder und Leitender Entwickler bei Pipedream-Games.

Zitat: Siehst du diesen Park da unten? Jeden Tag lernen sich darin Menschen kennen und verlassen einander. Und du hast dein ganzes Leben Zeit darin zu gehen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Aug 02, 2005 10:53 
Offline
DGL Member
Benutzeravatar

Registriert: Sa Nov 13, 2004 11:00
Beiträge: 229
Wohnort: Steinhude
allgemein wäre es günstig die transparenten fläcvhen zum schluss zu zeichnen und den Tiefentest nicht zu disablen


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Aug 02, 2005 10:57 
Offline
DGL Member
Benutzeravatar

Registriert: So Jun 05, 2005 15:08
Beiträge: 39
Wohnort: Bei Bayreuth
TEXTUREN!

Ich kann immer welche gebrauchen, ist etwas lästig die immer mit Photo Impact selber zu erstellen!

Wär prima, wenn ich ein paar haben könnte!

_________________
Geniale Menschen sind selten ordentlich, ordentliche selten genial (Albert Einstein)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Aug 02, 2005 12:21 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Grizzly hat recht. Zeichne zuerst alle massiven Flächen (Tiefentest an), dann sortier deine Flächen nach Tiefe und Blende die dann nacheinander ein, beginnend mit der am weitesten entfernten (ohne in den Tiefenpuffer zu Zeichnen).

Ein Problem was mit Tiefsortierten Flächen noch auftreten wird ist zu entscheiden, wann eine Fläche weiter hinten ist als eine andere. Ein Ansatz wäre Durchschnittswerte der Eckpunkte zu nehmen, oder aber den extremsten Wert. Da musst du sehn was für dich passt. Es gibt aber immer Sonderfälle, die dir die Optik ruinieren werden. Umgehen kannst du das zu einem gewissen Teil indem du den Tiefenpuffer bei den Transparenten Objekten nicht beschreibst. Ich bin mir aber sicher, es gibt trotzdem noch Fälle wo's blöd aussieht.

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


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Aug 02, 2005 13:44 
Offline
DGL Member
Benutzeravatar

Registriert: So Jun 05, 2005 15:08
Beiträge: 39
Wohnort: Bei Bayreuth
Ich bedanke mich für eure Antworten!
Das hat mir sehr weitergeholfen!

Danke!

_________________
Geniale Menschen sind selten ordentlich, ordentliche selten genial (Albert Einstein)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Aug 02, 2005 14:07 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Apr 25, 2005 17:51
Beiträge: 464
Würde nur gern nochmal genau wissen was es bringt, wenn man bei den transparenten Objekten den Tiefenpuffer deaktiviert. Danke


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Aug 02, 2005 14:24 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Wenn du das Schreiben des Tiefenbuffers unterbindest erreichst du den Fall, dass im Tiefenbuffer alle Informationen über undurchlässige Objekte gesammelt wurden. Die transparenten Objekte gliedern sich so ganz normal in die Szene ein. Befinden sich also teilweise hinter anderen Objekte. Hinterlassen selber aber nichts im Tiefenbuffer was dafür sorgt, dass gerenderte Objekte da praktisch nicht existieren. Wenn jetzt andere Objekte an diese Stelle gerendert werden richten die sich auch wieder nur an den undurchlässigen Objekten aus. Sie legen sich dann über andere Transparenten obwohl sie eigentlich dadrunter liegen sollten. Ist dann in etwa so als ob du den Tiefentest nur für die transparenten Objekte deaktivierst. Für alle anderen ist er aber noch an. Wenn der Tiefentest aus wäre würden sie sich komplett über alle Objekte legen.

Damit kannst du in einigen Fällen die aufwendige Tiefensortierung bei den Objekten weglassen. Funktioniert aber nicht immer, da es beim Blenden manchmal auf die Reihenfolge ankommt. Und dann muss man per Hand sortieren.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Di Aug 02, 2005 17:56 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Genau. Das ausschalten des Tiefenpuffers hilft Kreuzungen von Durchsichtigen Objekten zu Rendern. Denn ein Teil wird immer verdeckt, wenn man den Puffer nicht schreibschützt. Ich würde beiden Kombinieren. Sortieren und Puffer ausschalten.

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


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 20 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Foren-Übersicht » Programmierung » OpenGL


Wer ist online?

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.

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