Discussion:
Frage zu Gouraud-Schattierung
(zu alt für eine Antwort)
Stefan Spiegel
2003-11-14 16:59:07 UTC
Permalink
Hi alle,

Ich lerne gerade auf die Prüfung nächsten Freitag und bin nun auf ein
Problem gestoßen:
Das Beispiel 2 im Prüfungsordner vom 6.Dezember 2002.

Bei der Gouraud-Schattierung muß man ja die Helligkeit in den Eckpunkten des
Polygons ausrechnen und dann
interpolieren.
Nun ist hier ein Normalvektor angegeben, der mir bei der Berechnung der
Helligkeit einen negativen Wert für die
Helligkeit erzeugt. Was mache ich da falsch bzw. welchen Wert muss ich da
nehmen - 0 oder den negativen Wert??

Es handelt sich um folgenden Eckpunkt-Normalvektor: (2, -17, -3)
Zuerst bringe ich ihn auf die Länge 1 und dann wird er mit dem
Richtungsvektor vom Licht (0, 0, 1) multipliziert - genau da
gibt es mir den negativen Wert!

Hat jemand eine Idee was man da machen muss????


mfg
Stefan


PS: Wenn jemand auch auf die Prüfung lernt und Ergebnisse der POs von der
Homepage zum Vergleichen hat, können wir uns
gerne mal zusammensetzen.
Michael Wimmer
2003-11-16 13:16:34 UTC
Permalink
Post by Stefan Spiegel
Es handelt sich um folgenden Eckpunkt-Normalvektor: (2, -17, -3)
Zuerst bringe ich ihn auf die Länge 1 und dann wird er mit dem
Richtungsvektor vom Licht (0, 0, 1) multipliziert - genau da
gibt es mir den negativen Wert!
"vom" Licht könnte hier der springende Punkt sein...

Michael Wimmer

-- Dr. Michael Wimmer--------------------------------------------------------
Institut fuer Computergraphik und Algorithmen tel: +43 (1) 58801 18687
Technische Universitaet Wien fax: +43 (1) 58801 18698
Favoritenstr. 9-11/5/E186 http://www.cg.tuwien.ac.at
A-1040 Wien, Oesterreich mailto:***@cg.tuwien.ac.at
-----------------------------------------------------------------------------
Stefan Spiegel
2003-11-16 17:13:20 UTC
Permalink
Sorry das ist mein Fehler:
Die Angabe lautet "Die Richtung zur Lichtquelle ist - genauso wie der
Blickrichtung - durch den Vektor (0, 0, 1) gegeben."
Pruefungsordner vom 6.Dez. 2002 Aufgabe 2.

Es ist also der Vektor Richtung Licht mit (0,0,1) gegeben. Somit kommt doch
ein negativer Wert fuer die Eckpunkthelligkeit zustande.

Was kann ich tun, wenn sowas passiert?

mfg
Stefan
Post by Michael Wimmer
Post by Stefan Spiegel
Es handelt sich um folgenden Eckpunkt-Normalvektor: (2, -17, -3)
Zuerst bringe ich ihn auf die Länge 1 und dann wird er mit dem
Richtungsvektor vom Licht (0, 0, 1) multipliziert - genau da
gibt es mir den negativen Wert!
"vom" Licht könnte hier der springende Punkt sein...
Michael Wimmer
-- Dr. Michael
Wimmer--------------------------------------------------------
Post by Michael Wimmer
Institut fuer Computergraphik und Algorithmen tel: +43 (1) 58801 18687
Technische Universitaet Wien fax: +43 (1) 58801 18698
Favoritenstr. 9-11/5/E186
http://www.cg.tuwien.ac.at
Post by Michael Wimmer
A-1040 Wien, Oesterreich
--------------------------------------------------------------------------
---
Chris Chiu
2003-11-16 18:08:42 UTC
Permalink
Post by Stefan Spiegel
Die Angabe lautet "Die Richtung zur Lichtquelle ist - genauso wie der
Blickrichtung - durch den Vektor (0, 0, 1) gegeben."
Pruefungsordner vom 6.Dez. 2002 Aufgabe 2.
Es ist also der Vektor Richtung Licht mit (0,0,1) gegeben. Somit kommt doch
ein negativer Wert fuer die Eckpunkthelligkeit zustande.
Was kann ich tun, wenn sowas passiert?
Du könntest den Vektor _vom_ Licht anstatt _zum_ Licht nehmen...

Ciao,
Christoph
***@cg.tuwien.ac.at
Stefan Spiegel
2003-11-16 19:24:28 UTC
Permalink
Ich kann doch die Angabe bei der Pruefung nicht einfach so veraendern.
Entweder ist es ein Angabefehler oder es ist anders gemeint?!

mfg
Stefan
Post by Chris Chiu
Post by Stefan Spiegel
Die Angabe lautet "Die Richtung zur Lichtquelle ist - genauso wie der
Blickrichtung - durch den Vektor (0, 0, 1) gegeben."
Pruefungsordner vom 6.Dez. 2002 Aufgabe 2.
Es ist also der Vektor Richtung Licht mit (0,0,1) gegeben. Somit kommt
doch
Post by Stefan Spiegel
ein negativer Wert fuer die Eckpunkthelligkeit zustande.
Was kann ich tun, wenn sowas passiert?
Du könntest den Vektor _vom_ Licht anstatt _zum_ Licht nehmen...
Ciao,
Christoph
Chris Chiu
2003-11-16 20:12:03 UTC
Permalink
Post by Stefan Spiegel
Ich kann doch die Angabe bei der Pruefung nicht einfach so veraendern.
Entweder ist es ein Angabefehler oder es ist anders gemeint?!
Post by Stefan Spiegel
Die Angabe lautet "Die Richtung zur Lichtquelle ist - genauso wie der
Blickrichtung - durch den Vektor (0, 0, 1) gegeben."
Pruefungsordner vom 6.Dez. 2002 Aufgabe 2.
"Richtung zur Lichtquelle" heißt dass der Vektor die Richtung von einem
Punkt ZUR Lichtquelle darstellt.

Wenn (0, 0, 1) der Vektor vom Punkt zur Lichtquelle darstellt, dann ist (0,
0, -1) der Vektor von der Lichtquelle zum Punkt. Und normalerweise verwendet
man diesen Vektor zur Berechnung (Lichtvektor von der Lichtquelle zu einem
Punkt). Damit wär dein Vorzeichen-Problem auch gelöst.

Manchmal sieht man den Wald vor lauter Vektoren nicht :) aber die Angabe
scheint schon richtig zu sein.

Ciao,
Christoph
***@cg.tuwien.ac.at
Stefan Spiegel
2003-11-16 23:01:17 UTC
Permalink
Hmm, ich hoffe wir kommen mal auf einen gruenen Zweig :)

Ok, angenommen ich nehme den Lichtvektor (0, 0, -1), dann wuerde das fuer
diesen Normalvektor stimmen und es ergibt sich einen positiven Wert fuer die
Helligkeit.
Das Problem ist, dass ich nun bei allen anderen Eckpunkt-Normalvektoren
einen negativen Wert bekomme.
Z.B. habe ich einen Vektor (3, 7, 8) --> (0,0,-1) * (3,7,8) = -8

Im Buch Computergraphics (second edition) S.499 ist fuer die Lambert'sche
Regel folgende Formel angegeben:

I = kd*IL* (N*L)

wobei N der Normalvektor der der Laenge 1 ist und L der Vektor *vom* Punkt
*zur* Lichtquelle ist,
kd, die Materialkonstante und IL die Staerke der Lichtqelle.

Weiters steht dort, dass, wenn N*L negativ ist (also der Winkel zw. N und L
groesser 90°), sei die Lichtquelle hinter der Oberflaeche, was auch Sinn
macht, wenn man sich die Oberflaeche, den Normalvektor und den Vektor zur
Lichtquelle aufzeichnet und anschaut.

Somit wuerde ich sagen, dass an diesem Eckpunkt mit Normalvektor
(2, -17, -3), die Lichtquelle in Richtung (0,0,1) nicht direkt zu sehen ist
und der Punkt die Helligkeit 0 hat, da ja nur "einfache" Beleuchtung
angewendet wird (sprich kein Ambient lighting, Ray Tracing usw.).

ODER

Eine Alternative hab ich noch als Loesungsweg - ich nehme tatsaechlich den
negativen Wert an diesem Eckpunkt an (nur fuer die Interpolation), da ja der
Punkt an dem die Helligkeit 0 ist nicht direkt in diesem Eckpunkt liegt,
sondern irgendwo an der Oberflaechenkante entlang - diesen Punkt bekommt man
dann auch, wenn man die Interpolation der Helligkeit entlang der
Oberflaechenkante macht. So bekommt man, denke ich den richtigen plastischen
Eindruck von der Oberflaeche.
Wenn ich dann die Helligkeiten wirklich zeichnen will werden alle Punkte mit
negativen Helligkeitswerten auf 0 gesetzt, da es ja keine negativen
Helligkeiten in der "realen" Welt gibt.
Ist das auch ein Loesungsansatz??


Zu deinem Vorschlag einfach den Vektor (0,0,-1) zu nehmen, wuerde die
Lichtquelle um 180° drehen und ich beleuchte nun die Oberflaeche von der
anderen Seite (sprich die Schattenseite der Oberflaeche).
Ich kann die Lichtquelle doch nicht einfach auf die andere Seite der
Oberflaeche bringen, oder doch?




mfg
Stefan
Post by Chris Chiu
Post by Stefan Spiegel
Ich kann doch die Angabe bei der Pruefung nicht einfach so veraendern.
Entweder ist es ein Angabefehler oder es ist anders gemeint?!
Post by Stefan Spiegel
Die Angabe lautet "Die Richtung zur Lichtquelle ist - genauso wie der
Blickrichtung - durch den Vektor (0, 0, 1) gegeben."
Pruefungsordner vom 6.Dez. 2002 Aufgabe 2.
"Richtung zur Lichtquelle" heißt dass der Vektor die Richtung von einem
Punkt ZUR Lichtquelle darstellt.
Wenn (0, 0, 1) der Vektor vom Punkt zur Lichtquelle darstellt, dann ist (0,
0, -1) der Vektor von der Lichtquelle zum Punkt. Und normalerweise verwendet
man diesen Vektor zur Berechnung (Lichtvektor von der Lichtquelle zu einem
Punkt). Damit wär dein Vorzeichen-Problem auch gelöst.
Manchmal sieht man den Wald vor lauter Vektoren nicht :) aber die Angabe
scheint schon richtig zu sein.
Ciao,
Christoph
Michael Wimmer
2003-11-17 08:37:18 UTC
Permalink
Post by Stefan Spiegel
Somit wuerde ich sagen, dass an diesem Eckpunkt mit Normalvektor
(2, -17, -3), die Lichtquelle in Richtung (0,0,1) nicht direkt zu sehen ist
und der Punkt die Helligkeit 0 hat, da ja nur "einfache" Beleuchtung
angewendet wird (sprich kein Ambient lighting, Ray Tracing usw.).
Das ist die richtige Lösung. Die komplette Beleuchtungs-Formel sollte immer
einen max(0, xxx) Term enthalten...


Michael Wimmer

-- Dr. Michael Wimmer--------------------------------------------------------
Institut fuer Computergraphik und Algorithmen tel: +43 (1) 58801 18687
Technische Universitaet Wien fax: +43 (1) 58801 18698
Favoritenstr. 9-11/5/E186 http://www.cg.tuwien.ac.at
A-1040 Wien, Oesterreich mailto:***@cg.tuwien.ac.at
-----------------------------------------------------------------------------
Stefan Spiegel
2003-11-17 10:48:00 UTC
Permalink
Danke fuer die schnelle Antwort!

mfg
Stefan
Post by Michael Wimmer
Post by Stefan Spiegel
Somit wuerde ich sagen, dass an diesem Eckpunkt mit Normalvektor
(2, -17, -3), die Lichtquelle in Richtung (0,0,1) nicht direkt zu sehen ist
und der Punkt die Helligkeit 0 hat, da ja nur "einfache" Beleuchtung
angewendet wird (sprich kein Ambient lighting, Ray Tracing usw.).
Das ist die richtige Lösung. Die komplette Beleuchtungs-Formel sollte immer
einen max(0, xxx) Term enthalten...
Michael Wimmer
-- Dr. Michael
Wimmer--------------------------------------------------------
Post by Michael Wimmer
Institut fuer Computergraphik und Algorithmen tel: +43 (1) 58801 18687
Technische Universitaet Wien fax: +43 (1) 58801 18698
Favoritenstr. 9-11/5/E186
http://www.cg.tuwien.ac.at
Post by Michael Wimmer
A-1040 Wien, Oesterreich
--------------------------------------------------------------------------
---

Loading...