Berechnung einer Normalen mit Freiheitsgraden

Für Fragen zu Grafik APIs wie DirectX und OpenGL sowie Shaderprogrammierung.
Antworten
Alexander Kornrumpf
Moderator
Beiträge: 2112
Registriert: 25.02.2009, 13:37

Re: Berechnung einer Normalen mit Freiheitsgraden

Beitrag von Alexander Kornrumpf »

Schrompf hat geschrieben: Deine Methode ergibt jetzt eine zweite Normale, die da einen sinnvollen Vektor ergibt, wo die erste noch 0 ist. Auch sehr gut, interessanter Gedanke. Leider ist diese Normale in 50% der Fälle falsch, weil eine Wand für eine korrekte Beleuchtung nunmal zwei Oberflächen braucht und nicht nur eine. Und das sind nicht die zwei, die wir gerade ausgerechnet haben, sondern die eine und die negierte Version der einen.
Ich verstehe das Problem immer noch nicht. In den Fällen, die wir gerade ausgerechnet haben sind die Normalen zu beiden Seiten der Wand jeweils die negierten Versionen voneinander.
Im Falle einer Ebene können wir das hier aber ableiten und über ein paar Bits in die Normale kodieren.
Ja, das verstehe ich schon. Die Frage ist was letztlich effizienter ist. Eine Version die erst erkennen muss dass es sich um eine Ebene handelt und von da aus Bitfrickelt, oder eine generische, die mehr Normalen berechnet und speichert.
Und dann wäre da noch der Fall einer Strecke. Dafür brächte es dann anstatt der zwei Normalen eine beliebige Menge Normalen in einer Ebene senkrecht zum Streckenverlauf. Hier scheitert dann auch Dein Ansatz - der findet zwar eine irgendwie geartete Normale, die aber mit den tatsächlichen Erfordernissen der Beleuchtung nix mehr zu tun hat.
Ähm, mein Ansatz war purely 2d. Die Erweiterung auf 3D steht noch aus. Ich finde das in 3D schwer zu visualisieren aber ich sehe nicht warum es in 3D nicht gehen sollte.
Alexander Kornrumpf
Moderator
Beiträge: 2112
Registriert: 25.02.2009, 13:37

Re: Berechnung einer Normalen mit Freiheitsgraden

Beitrag von Alexander Kornrumpf »

Ich hab mir den Spaß gemacht, das grad mal tu implementieren. Das erste Bild ist einfach eine Wand. Das zweite Bild ist das Ergebnis wenn man Pixel, die einen von Null verschiedenen Gradienten haben und auf der oberen linken Seite der Wand liegen, aus der oberen linken Ecke beleuchtet. Im Prinzip kommt da schon das raus was ich erwarten würde. Was halt nur passiert, ist dass die erleuchteten Pixel im Vergleich zur Wand verschoben sind. Aber das kann man ja lösen.

Ich bin ziemlich sicher dass das in 3d genauso funktioniert, nur ist das ätzender zu implementieren, deswegen habe ich es nicht gemacht.
test.png
test.png (411 Bytes) 4310 mal betrachtet
out.png
out.png (612 Bytes) 4310 mal betrachtet
Alexander Kornrumpf
Moderator
Beiträge: 2112
Registriert: 25.02.2009, 13:37

Re: Berechnung einer Normalen mit Freiheitsgraden

Beitrag von Alexander Kornrumpf »

Und nochmal von unten rechts beleuchtet, damit man sieht, dass die Normalen auf beiden Seiten passen:
out.png
out.png (547 Bytes) 4304 mal betrachtet
Antworten