ich habe bei der Berechnung von volumetrischen Schatten (z-fail) ein seltsames Problem beim Test, ob ein Polygon von der Lichtquelle aus sichtbar ist oder nicht (Dot zwischen Polygon-Normale und Vektor Polygon-Mitte - Lichtquelle): Das Ergebnis ändert sich abhängig von Position und Blickrichtung des Betrachters. Zum Test habe ich mal ein einzelnes Rechteck isoliert und dessen Normale und Linie zur Lichtquelle eingezeichnet. Polygon blau, Linien rot und gelb -> sichtbar, Polygon grün, Linien hell- und dunkelblau -> unsichtbar. Befinde ich mich vor dem Polygon und blicke leicht nach unten, wird das Rechteck unsichtbar. Hinter dem Polygon ist es umgekehrt. Die gesamte Schattenberechnung findet nach Projektion von Lichtquelle und Modell in die Welt statt (also nach transform und rotate). Gerendert wird alles korrekt, auch die Linien Poly-Licht und die Normale verändern sich nicht. Ich habe nicht den geringsten Plan, was ich falsch mache. Kann mir jemand weiterhelfen?
Hier noch drei Bilder:
Übersicht:
Rechteck von Lichtquelle aus sichtbar:
Rechteck von Lichtquelle aus unsichtbar:
Wie man sieht, verändert sich der Winkel zwischen Normale und Vektor zum Licht nicht. Trotzdem stimmt die Berechnung nicht. Wenn ich den Blickpunkt drehe, rückt allerdings der Rechteck-Mittelpunkt mal näher zum Betrachter, mal weiter weg. Die Projektion skaliert in X,Y und Z-Richtung unterschiedlich (X = 3:4, Y = 1:1, Z = 9/16:1).
Die Ursache war folgende: Ich mache die Koordinatenstransformation (rotate, translate) per Software, und da war eine Skalierung für x,y (Bildschirm-Seitenverhältnis) und z (Distanz drin). Da ich die Schatten nach erfolgter Transformation berechne, und die Skalierung die Koordinatenpositionen zueinander verfälscht hat, habe ich abhängig vom Betrachter falsche Ergebnisse rausgekriegt. Ich mache die Skalierung jetzt per OpenGL, seitdem geht's.
Mitglieder in diesem Forum: 0 Mitglieder und 8 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.