PDA

View Full Version : [Frage] phong shading


magic7
22-01-2003, 16:47
Zum Vergleich, 15. März 2002, Aufgabe 2

Der Normalvektor an der gesuchten Stelle ist (1, 2, 1)
Der cos @ ist 0,2899 (@=73,15°)

Die gesuchte Intensität 0,1565.

Liebe Grüße
-Markus

Cha
22-01-2003, 19:19
Wie kommst du denn auf diese WErte? Was ich nicht ganz verstehe ist, dass man ja die Koordinaten (y-WErte) der Eckpunkte benötigt, die aber hier nicht angeführt sind. Ich hab echt keine Ahnung wie man das ausrechenen sollte. Bitte kannst du mir die Teilschritte aufschreiben.

Das wär echt super, lg, karen.

Kenny
22-01-2003, 20:51
hey...

was habt ihr da mit cos ?


also den normalvektor hab ich auch so, aber dann lautet das lambert'sche modell doch:

I = kd * il * N * L

0,9 * 0,6 * 1.2.1 * 0.0.1 = 0,54



@ cha: und was meinst du von wegen Y-WErte die man nicht kennt ??
bei der interpolation der normalvektoren?

ich hab da einfach geschaut wieviele pixel zwischen 2 eckpunkten liegen, und dann die delta X, delta Y und delta Z schrittweise auf diese distanz aufgeteilt und jeweils dazuaddiert...

bekomm damit den selben normalvektor wie magic7

magic7
22-01-2003, 21:08
@Kenny:

Lass Dich nicht von der amerikanischen Schreibweise verwirren:

Siehe Buch Seite 499, die eine Formel enthält cos Theta, die andere
Formel (N.L). Dieser Punkt ist das "dot product", also Kreuzprodukt.
KEIN simples mal.

Den Winkel zwischen a, b bekommst Du aus

(a*b)/(|a|+|b|)

{ der Betrag von z.b. (3/4) = Wurzel (9+16) }

Liebe Grüße
-Markus

Cha
22-01-2003, 22:17
Ist also mit N*L schon das Kreuzprodukt gemeint, nicht as Skalarprodukt.

Bsp 2 vom 6.12.02

(3,7,8) normalisiert ist ja (0.27,0.36,0.72)
---> Intensität von (3,7,8) = I1 und beträgt dann 0.5*1*(0,0,1)*(0.27,0.36,0.72)
---> Das Kreuzprodukt von (0,0,1)*(0.27,0.36,0.72) = (-0.63, 0,27,0) und das mit 0.5 multipliziert ergibt (0.315, 0,135,0) --- > sqrt 0.315²+ 0,135² = 0.34 ---> also I1 = 0.34

seh ich das richtig, oder mach i da was falsch, wär echt super, wenn das jemand nachrechnen könnte.

Cha
23-01-2003, 12:10
Also das mit dem Kreuzprodukt ist ein Blödsinn, da verwendet man das Skalarprodukt.

Aber muss man den Vektor (1,2,1) nicht normalisieren, bevor man die Intensität ausrechnet?

wolk
23-01-2003, 15:00
was ist jetzt die richtige lösung zum beispiel : 15. März 2002, Aufgabe 2

ist das jetzt 0,54 (was ich nicht ganz glauben kann)
oder der erste post von magic7 : Die gesuchte Intensität 0,1565.

stimmt meine vorgehensweise ?
1. normalvektor bestimmen (1,2,1)
2. normalisieren (0,408, 0,816, 0,408)
3. in formel einsetzen (mit skalarprodukt)
0,9 * 0,6 * Skalarprodukt(=0,408) == 0,22
dann kommt allerdings 0,22 raus

magic7
23-01-2003, 15:07
:hewa:

Meine Lösung war falsch - Winkel falsch berechnet.

Der cos @ = 0,4082 (1/Wurzel(6))

I = 0,6*0,9*0,4082 = 0,22


IMO berechnet man den Winkel jetzt so:

beide Vektoren normalisieren (0,0,1 ist bereits normalisiert)
dann Skalarprodukt bilden.

Liebe Grüße
-Markus

Cha
23-01-2003, 15:09
Bei mir kommt auch 0.22 raus, dürfte also stimmen.

Kenny
23-01-2003, 16:41
wie kann der normalvektor an der gesuchte stelle eigentlich 1,2,1 sein?

habt ihr die interpolierten nicht normalisiert oder wie ?

kenn mich grad nicht mehr ganz aus in dem ganzen durcheinander hier, an welchen stellen muss man welche vektoren normalisieren ?

magic7
23-01-2003, 19:00
Also *ich* normalisiere nur vor dem Berechnen des
cos. Sonst rechne ich mit den Normalvektoren, wie sie
sind.

Liebe Grüße
-Markus

buschti
23-01-2003, 20:01
Irgendetwas stimmt da nicht: in der Angabe heißt es: "Die Richtung des einfallenden Lichtes ist durch den Vektor (0,0,1) gegeben". das heißt dann L ist (0,0,-1) und nicht (0,0,1), was bedeuten würde, daß die intensität negativ wird (der punkt wird quasi von hinten beleuchtet)

was meint ihr dazu?

ciao,
Sebastian