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

Aktuelle Zeit: Fr Jul 18, 2025 00:27

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



Ein neues Thema erstellen Auf das Thema antworten  [ 4 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Do Apr 08, 2010 13:03 
Offline
DGL Member

Registriert: Mo Nov 30, 2009 10:13
Beiträge: 23
Hallo zusammen,

so erstmal was vielleicht was ich mache, ich zeichene einen "Stapel" Quads durch eine 3D-Textur.
Code:
GLdouble high=-0.5;
int Count = 1000;
for(GLdouble i=0; i<Count; i++)
{
        glBegin(GL_QUADS);
        glextMultiTexCoord3fARB(GL_TEXTURE0_ARB, 0.0, 0.0, (i/Count));
        glVertex3d(-0.5, high, -0.5);
        glextMultiTexCoord3fARB(GL_TEXTURE0_ARB, 1.0, 0.0, (i/Count));
        glVertex3d(0.5, high, -0.5);
        glextMultiTexCoord3fARB(GL_TEXTURE0_ARB, 1.0, 1.0, (i/Count));
        glVertex3d(0.5, high, 0.5);
        glextMultiTexCoord3fARB(GL_TEXTURE0_ARB, 0.0, 1.0, (i/Count));
        glVertex3d(-0.5, high, 0.5);
        glEnd();

        high += 1.0/Count;
}

Die Textur hat für verschiedene Farben unterschiedliche Alpha-Werte, wodurch bestimmt Bereiche sichtbar und andere transparent werden, mit dieser Blend-Konfiguration:
Code:
glEnable(GL_ALPHA_TEST);
glEnable(GL_BLEND);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

Nun mein Problem ist nun das die Transparenzen wenn ich von oben auf den Stapel gucke zwar richtig dargestellt werden, gucke ich von unten auf den Stapel erscheind es als würde ich in einen "leere Dose" gucken, d.h. die oberste Schicht des Stapels ist sichbar. Irgentwie schwer zu erklären, ich habs hier mal aufgenommen(In dem Video sieht man den Stapel zu begin von oben)
http://www.mues-einrichtungen.de/zeug/clip0003.avi (hat nur ~440kb)
Es scheint irgentwie so als würde die Transparenz nur beim Blick auf die obersichten der Quads richtig berechnet, es sollte jedoch von beiden Seite gleich aussehen!

Gruß


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Apr 08, 2010 13:19 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Wann immer du etwas transparentes renderst musst du die Polygone nach der Entfernung zur Kamera sortieren und von hinten nach vorne rendern.

In diesem Fall solltest du überlegen ob du nicht gleich Polygone erzeugst die parallel zum Bildschirm ausgerichtet sind. Bildschirmfüllende Quads würden es schon tun, erzeugt allerdings ne Menge Overhead falls das Volumen nicht den ganzen Bildschirm ausfüllt. Man kann aber die Polygone entsprechend zurecht schneiden.

_________________
Yeah! :mrgreen:


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Apr 08, 2010 18:20 
Offline
DGL Member

Registriert: Mo Nov 30, 2009 10:13
Beiträge: 23
Hm, Okay klingt irgentwo einleuchtend, wenn die Slices immer parallel zur Blickebene wären, wäre es ja quasi immer so als wenn man von "oben" drauf guckt. Hast du zufällig nen nen Verweis zum Nachlesen wie man das umsetzt auf Lager, werd da nach google'n.

Nochmal was anderes, wenn ich das mit Ray-Casting-Shadern mache... auf was für eine Geometry lege ich dann die Textur? ohne wirds ja nicht geht, da man ja eine Art "Startpunkt" braucht. Hatte das im Shader schon umgesetzt was auch funktionierte, die Klasse die ich für die Kameraführung verwende ist leider nur noch nicht so ausgereift ;) ... deswegen wollte ich der Einfachheit halber wieder zurück zu den Slices.


Nach oben
 Profil  
Mit Zitat antworten  
BeitragVerfasst: Do Apr 08, 2010 18:36 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 29, 2005 12:28
Beiträge: 2249
Wohnort: Düsseldorf
Programmiersprache: C++, C#, Java
Zitat:
Hast du zufällig nen nen Verweis zum Nachlesen wie man das umsetzt auf Lager, werd da nach google'n.

Ich weiß nur das die Technik "Volume Slicing" heißt.

Zitat:
wenn ich das mit Ray-Casting-Shadern mache... auf was für eine Geometry lege ich dann die Textur?

Ich würde ein Bildschirm-Quad rendern. Im Fragmentshader berechnest du dir aus den Pixelkoordinaten und der Camera-Position deinen "Ray". Und diesen Ray schießt du dann durch deine Volumentextur: Also quasi Eintritts- und Austrittspunkt in das Volumen (Würfel oder Quader) berechnen und dann dazwischen in einer Schleife samplen.

_________________
Yeah! :mrgreen:


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


Wer ist online?

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