Registriert: Mi Jul 28, 2004 18:30 Beiträge: 25 Wohnort: Chemnitz
hallo,
ich lad in meinem Programm 'n paar 3ds-Modelle mit dem Loader von noeska, funktioniert auch ziemlich gut,
aber: wenn mein Modell Transparenz hat, wird logischerweise dank Tiefentest, der darunterliegende teil des objekts nicht mehr gerendert, schalte ich den tiefentest aus, funktioniert zwar die transparenz aber bei manchen objekte kommen die "hinteren" teile nach "vorn"
wi ekrieg ich meine transparenz ohne das er das model "verunstaltet" (irgendwie müsste der loader die objekte des models beim rendern nach ihrer z-pos ordnen, oder? ich hab bloß keine Ahnung davon)
hab mal 2 fotos zur verdeutlichung angehangen (@SoS: hab mal 2 models aus deinem napalmbomber3d genommen, da man das dort sehr gut sieht)
mfg
GSE
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
_________________ In a world without walls and fences, who needs Windows or Gates?
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Simple Methode (reicht normalerweise) :
Zuerst die nicht-transparenten Teile des Meshes rendern, dann die transparenten.
Beste Methode (schwerer zu implementieren) :
Zuerst die nicht-transparenten Teile des Meshes rendern, dann nach Tiefe sortiert (Back-To-Front) alle transparenten Faces.
In der neueren Version von Noeskas Loader wird ersteres bereits gemacht (wenn ich nicht irre) und reicht oft aus.
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Da kann ich nix zu sagen weil ich die gl3DS.pas von Noeska in ner älteren, aber von mir recht stark modifizierten Version benutze, die auch diese Sache beinhaltet. Aber du musst ja im Endeffekt (wenns einfach gehen soll) nur in beim Rendern der Meshes prüfen ob ein verwendetes Material transparent ist.
Alternativ kannst du statt AlphaBlending auch den AlphaTest verwenden, wenn du keine halbtransparenten Teile hast. Im Gegensatz zum Alphablending werden beim Alpha Test transparente Pixel auch nicht in den Tiefenpuffer geschrieben - dann kann man sich Sortierungen ganz sparen.
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Im Normalfall verwendet man sowieso Alphatest UND Blending. Den Alphatest um transparente Stellen darzustellen und dann Blending (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) um die hässlichen schwarzen (oder wie die Hintergrundfarbe ist) Ränder an den Transparenzübergängen zu vermeiden.
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.