AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi GLScene: Problem mit Alpha bei einem TGLPolygon

GLScene: Problem mit Alpha bei einem TGLPolygon

Ein Thema von Maiky · begonnen am 25. Okt 2012 · letzter Beitrag vom 10. Dez 2012
Antwort Antwort
Maiky

Registriert seit: 14. Nov 2006
54 Beiträge
 
#1

AW: GLScene: Problem mit Alpha bei einem TGLPolygon

  Alt 25. Okt 2012, 09:45
Danke für die extrem schnelle und ausführliche Antwort.

Unter der Annahme, daß das transparente Objekt vor dem opaqen liegt, gibt es jetzt zwei Möglichkeiten:
Meine Grafik besteht aus hunderten Polygons und jedes davon ist transparent gesetzt.

Überschneiden dürfte sich dort ebenfalls nichts. Ich zeige mal eine 4 Bild Animation:

http://minus.com/llTGqTuAZS7Jj

http://minus.com/lbetBa2HjZWOGe

http://minus.com/lAmYWeLLEvsPK

http://minus.com/luW944mW0JKZV

Es gibt in TGLScene ein Property ObjectsSorting, das man auf osRenderBlendedLast stellen kann.
Dies ist bei meinem GLScene der Default-Wert und so eingestellt.


EDIT:

Ich habe mal einen nicht transparenten Cube reingsetzt. Dieser wird immer korrekt dargestellt. Die "Bildfehler" am transaprenten Object sind dort wo der Cube durchscheint nicht vorhanden, nur dann noch drumherum.

http://minus.com/lvTZ6Ks648BU4

Geändert von Maiky (25. Okt 2012 um 10:04 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.643 Beiträge
 
Delphi 12 Athens
 
#2

AW: GLScene: Problem mit Alpha bei einem TGLPolygon

  Alt 25. Okt 2012, 10:07
Wenn ich das richtig sehe, passiert aber genau das, was ich beschrieben habe. Die Artefakte entstehen da, wo sich das Objekt selbst überdeckt. An manchen Stellen wird das dahinter liegende Polygon gezeichnet und an anderen nicht. Das ist dann auch noch abhängig von der Blickrichtung. Ich sehe momentan keine Möglichkeit, das sauber zu lösen - jedenfalls nicht mit dem Standard-GL-Shading.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Maiky

Registriert seit: 14. Nov 2006
54 Beiträge
 
#3

AW: GLScene: Problem mit Alpha bei einem TGLPolygon

  Alt 25. Okt 2012, 10:16
Da fehlt mir vermutlich leider noch etwas das Verständnis. Das "Objekt" hier ist ja lediglich eine Anhäufung von einzelnen hunderten Polygons (3-4 Punkte je Polygon).

http://minus.com/lPj2NyWW5LXSd

Inwiefern kann es sich da selbst überdecken, wenn jedes Polygon quasi nur eine 2D Fläche ist?

EDIT:

Hier ein Gitterbespiel. Ich habe die Polygone einfach immer von Punkt zu punkt gezogen und jedes Polygon hat 3 bis 4 Eckpunkte.

http://minus.com/llW7djNwQpw5p

Wenn ich jetzt das ganze fülle, dann sieht man das sogar im hintere Teil der grünen "Wand" viel fehlt.

http://minus.com/luGy0CwIf5ZCY

Geändert von Maiky (25. Okt 2012 um 10:31 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.643 Beiträge
 
Delphi 12 Athens
 
#4

AW: GLScene: Problem mit Alpha bei einem TGLPolygon

  Alt 25. Okt 2012, 12:24
Bei der Tiefensortierung muss ja eine Reihenfolge der transparenten Objekte hergestellt werden. Dazu wird mangels brauchbarer Alternative der Abstand des Schwerpunkts zur Kameraposition verwendet. Dadurch kann es passieren, daß ein Objekt, das eigentlich hinter einem anderen liegt, als davor einsortiert wird, weil die Schwerpunkte eben ungünstig liegen. Beim Zeichnen wird die Z-Position (Tiefe) aber pixelgenau berechnet. Wird nun das hintere Objekt später als das vordere gezeichnet, liegen die Z-Positionen seiner Pixel hinter den aktuellen Pixeln (von dem vorderen Objekt) und werden somit nicht gezeichnet. Als Ergebnis hat man in dem Bereich dann ein transparentes vorderes Objekt, aber das hintere ist dadurch nicht sichtbar.

Du kannst ja mal probeweise den DepthTest abschalten und das Ergebnis anschauen - vielleicht dient das etwas dem Verständnis.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Maiky

Registriert seit: 14. Nov 2006
54 Beiträge
 
#5

AW: GLScene: Problem mit Alpha bei einem TGLPolygon

  Alt 19. Nov 2012, 18:54
Ich würde das Thema gern noch einmal aufgreifen. Ich habe mir noch einmal alles durchgelesen, verstehe das Grundproblem, habe aber leider die Schwierigkeit damit es auf meinen Fall zu übertragen.

Ich versuche ja anhand von sehr vielen kleinen "2D" Polygonen (mit max. 3-4 Nodes, also entweder ein Dreieck oder ein Viereck) ein 3D Objekt darzustellen. Wäre es ein komplexes 3D Polygon oder ein Mesh, würde ich das Transparensproblem verstehen.

Gilt es hier eventuell auch als "Mesh", weil ich die einzelnen Polygone zu GLDummyCube hinzufüge und er dadurch die "Sortierung" anders handhabt, als wenn die Polygone frei einzeln im 3D Raum stehen würden?
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.643 Beiträge
 
Delphi 12 Athens
 
#6

AW: GLScene: Problem mit Alpha bei einem TGLPolygon

  Alt 21. Nov 2012, 16:18
Kannst du hierzu wieder ein Beispiel-Projekt anhängen, bei dem das Problem auftritt? Die Theorie haben wir ja hier schon genügend behandelt.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Maiky

Registriert seit: 14. Nov 2006
54 Beiträge
 
#7

AW: GLScene: Problem mit Alpha bei einem TGLPolygon

  Alt 22. Nov 2012, 14:13
Sehr gern sogar. Wäre natürlich schön wenn es doch eine Lösung gäbe. Es macht nämlich sehr viel Spaß mit GLScene zu arbeiten bzw rumzuspielen. Ich möchte gern einen kleinen Simulator basteln, aber dafür würde ich schon Transparenz benötigen. Daher auch die Frage GLScene oder doch direkt mit OpenGL3 beschäftigen.

Wird es GLScene auch in GL3 geben? Ich glaube aktuell ist es ja "nur" GL2?
Angehängte Dateien
Dateityp: zip First Project C.zip (71,1 KB, 4x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz