PDA

View Full Version : [Frage] Gouraud shading, 2. Versuch


magic7
25-01-2003, 14:01
Hier die verbesserte Version!

Gouraud Shading, Prüfung 6. Dezember 2002


Hier kurz die Numerierung, welche Intensitäten
zu welchen Punkten gehören

(3,7,8) = I1
(10,-7,1) = I2
(2,-17,-3) = I3
(-2,-37,25) = I4

Auf der Linie des gesuchten Punktes liegt
auf der Strecke I1,I2 I5 und auf I3, I4 I6.
Der gesuchte Punkt ist I7.

I1=0,3621
I2=0,0408
I3=-0,1726 (? ich rechne jetzt mit dem neg. Wert weiter)
I4=0,2796

I5=0,1326
I6=0,0535

I7=0,1128


Diese Lösung sollte jetzt richtig sein, zumindest stimmt jetzt
die Winkelberechnung!

Liebe Grüße
-Markus

RS250
25-01-2003, 14:20
Du hast bei I3 vergessen mit kd zu multiplizieren!

aber sost durft das stimmen!

magic7
25-01-2003, 14:44
Arrrrg :(

Danke, hab tatsächlich vergessen, mit 0,5 zu multiplizieren.

Bist auch der Meinung, dass man mit den negativen weiterrechnet, oder?

Liebe Grüße
-Markus

Cha
25-01-2003, 17:31
meine Lösung für a) ist 0.1229475

(I3 = -0.85)

ich rechne auch mit dem neg. Wert weiter, keine Ahnung, ob man das darf oder nicht, hab dem Wilkie schon eine Mail geschrieben, aber er hat noch nicht geantwortet, mal sehen.

allerdings kommt mir bei b) ein neg. Wert für die specular Reflection raus, nämlich -0.13, das kann doch nicht sein, oder?

Der Normalvektor an dieser *-Stelle sit bei mir (6,-9,5)
ja den normalisiere ich ----> (0.504,-0.755,0.42)

Dann berechne ich R=(2N*L)*N-L, wobei L=(0,0,1) und N= normalisierter Vektor
---> R= 0.42336, -0.6342,-0.6648)

Ja und das dann alles in Ispec=ks*Il*(V*R)^ns eingesetzt (V=(0,0,1); ns=5; ks=0.5, Il=1) kommt -0.13 raus.

Findet jemand den Fehler, ich hab keine ahnung, was ich flasch gemacht habe.

Danke

magic7
25-01-2003, 18:28
@cha: ich denke, Du hast Dich verrechnet.

Hier meine korrigierten Werte, nicht aufgeführte stimmen mit denen oben überein:

I3=-0,0863

I6=0,0966

I7=0,1236 (das Ergebnis)


Ich hoffe, damit endlich auf Zustimmung zu stoßen! :D

Liebe Grüße
-Markus

RS250
25-01-2003, 18:33
@magic7
Ja, also ich rechne auch mit dem negativen Wert weiter, rein intuitiv sollt das glaub ich stimmen, weil sonst kommt ja beim interpolieren ein schmarrn raus!

@cha
also irgendwas stimmt da bei deiner Berechnung nicht, ich bekomm für phong I* = 0.21629 raus!
Ich glaub du hast da beim Beleuchtungsmodell was falsch gmacht:
kd*IL*(N*L) + ks*IL*(N*H)^ns, wobei H bei unserem Lichtvektor gleich dem Lichtvektor L ist weil ja der Viewingvektor = Lichtvektor und somit der Halfvektor auch gleich den beiden!!

Cha
25-01-2003, 19:36
WEnn ich mit der Formel Ispec = ks*Il*(N*H)^ns und H= L+V/|N+V| rechne:
H=(0,0,1) ... Ispec=0.5 * 1* (0.42)^5 (0.42 ist die z-Koord. vom normalisierten N) = 0.006534

Dein N stimmt aber schon mit meinem berien oder?? .. siehe oben

RS250
25-01-2003, 20:00
Ja, hab den gleichen Normalvektor! 0,5035/-0,75526/0,4195907

--> kd*IL*(N.L) + ks*IL*(N.L)^ns
-->0,5 * 1 * 0,4195907 + 0,5 * 1 * (0,4195907)^5 = 0,2162981

Kenny
25-01-2003, 20:23
nimm doch einfach die andere spec-formel:

ks * il * (V*R)^ns

das R kannst dir ausrechnen, und alles andere is eh gegeben!

Dove
25-01-2003, 23:18
hi!

ich hab beim Phong vom 6.12. beim ersten teil das gleiche,
aber beim 2. teil einen andren wert und weiss nicht wieso.

normalvektor normalisiert ist (0,504, -0,755, 0,42)
dann rechne ich R= (2.N.L).N-L und erhalte (0,42336, -0,6342, -0,6472)
da stimmt alles mit cha überein ausser der letze wert,
drum krieg ich dann auch für Ispec -0,0568 raus.

aber wieso sind zwei werte bei R gleich nur der dritte nicht,
ich habs schon so oft nachgerechnet, find den fehler aber nicht.

kann wer helfen?!

Shade
26-01-2003, 02:29
hier ist mal meine lösung für a) :
I7=0,1451

die meisten werte hab ich gleich nur I6 hab ich anders
für rechenweg,formeln etc. einfach in den anhang schauen.
ps: ( den anhang mit wordpad öffen)

Cha
26-01-2003, 10:58
@RS250

warum brechnest du Idiff + Ispec??? es ist doch nur Ispec verlangt, oder nicht?

RS250
26-01-2003, 11:38
ups, tschuldigung, mei Fehler, hast recht, Phong is ja nur Ispec, und das is dann
Ispec = ks*IL*(V.R)^ns
oder
Ispec = ks*IL*(N.H)^ns

Ispec = 0,0065028 ?!?!?

Cha
26-01-2003, 12:14
@RS250

Ja, das hab ich auch.
Aber ich verstehe trotzdem nicht, warum das mit der Formel (V*R) statt (H*N) nicht geht, da müsste ja dasselbe rauskommen.

Seltsam. :-)

Dove
26-01-2003, 12:43
das würde mich auch interessieren, wie es möglich ist bei (v*r) was andres rauszukriegen als bei (h*n).

wie geht das?

Kakarot
26-01-2003, 13:27
Vielleicht eine blöde Frage, aber könnte jemand genau posten wie man H bzw. R ausrechnet, mit bsp. und erklärung bitte!

Kenny
26-01-2003, 14:12
@ dove

ich habs genauso wie du, auch eine negative zahl bei der letzen kooordinate


@ all: in welche richtung habt ihr L und V angenommen? (0,0,1) oder (0,0,-1)

daran liegt das nämlich, dass bei dove und mir die z-koordinate immer negativ is...

Kakarot
26-01-2003, 15:57
Aslo was ist jetzt der endgültige und richtige Wert für
Ispec
vom 6.12?

Shade
26-01-2003, 16:01
Original geschrieben von Kenny
@ dove

ich habs genauso wie du, auch eine negative zahl bei der letzen kooordinate


@ all: in welche richtung habt ihr L und V angenommen? (0,0,1) oder (0,0,-1)

daran liegt das nämlich, dass bei dove und mir die z-koordinate immer negativ is...
naja ich würd (0,0,1) nehmen.Laut angabe ist das ja die richtung ZUR lichtquelle.und wenn du die jetzt die folien anschaust zeigt der vektor L auch immer ZUR lichtquelle

leadpen
26-01-2003, 16:46
Also ich steh grad auf der Leitung, ich klebe noch immer bei Bsp a):
Woher wißt ihr, dass der gesuchte Punkt I7 ist. Ich lese ständig was von Pixel-zählen in y-Richtung, aber weiss nicht ganz was ihr meint :-(

Kenny
26-01-2003, 16:57
pixel zählen in egal welche richtung, einfach entlang der kante

schau, du hast in den werten der eckpunkt-vektoren eine bestimmte differenz

un diese musst du aufteilen auf soviele schritte wie pixel (also kasterln, ganz einfach) dazwischen liegen

das is die ganze interpolation, ganz simpel :)

Dove
26-01-2003, 17:15
Das was SebyMan schreibt klingt sehr logisch:
ich glaub, man muß immer genau schauen, was in der angabe steht: "Die Richtung zur
Lichtquelle ist durch den Vektor (0,0,1) gegeben." bedeutet L=(0,0,1) aber "die Blickrichtung sei durch (0,0,1) gegeben" bedeutet V=(0,0,-1). mit V ist nämlich beim Phong-Modell (so wie ich das sehe) die Richtung zum Auge des Betrachters gemeint.

aber wenn man sich H ausrechnet würde ja 0 rauskommen, oder?!
und das hätt ja auch keinen Sinn.

Ich versteh ausserdem immer noch nicht, wieso bei Berechnung mit H was andres rauskommt als bei Verwendung von R!

magic7
26-01-2003, 18:24
Laut Buch (hab die entsprechende Stelle aber nicht genauer studiert) ist die Berechnung mit H weniger aufwendig, also eine Vereinfachung (mit scheinbar für die CG ausreichender Genauigkeit). Die Berechnung mit R (wo wiederum der Normalvektor verwendet wird) ist die genaue Berechnung.
Daraus erklärt sich der Unterschied.

?
-Markus, der's mit R berechnet.

Kenny
26-01-2003, 19:33
ja, das mit der vereinfachung hab ch auch gelesen!

und welche variante muss ma bei der prüfung verwenden? egal ?

tschurlo
26-01-2003, 22:47
Also I1-I4 habe ich auch noch, wie kommt man entlang der Linien auf die Werte, bzw. entlang der Scanlines? Kann mir jemand dieses interpolieren erklaeren und vielleicht auch ein Bsp schreiben?

Danke

Shade
26-01-2003, 23:34
siehe mein anhang vorherige seite.
beispiel teil a :
I5=I2 + [ (I1-I2)/Absatnd(in Pixel) von I2 zu I1 * Abstand(in Pixel) I2 zu I5] :


0,0408 + 2*(0,3261-0,0408)/7 =0,1326


was du im prinzip machst ist das du die veränderung von I ausrechnest wenn du von I2 nach I1
gehst.das teilst du dan durch die anzahl der pixel die dazwischen liegen.jetzt hast du die veränderung pro pixel.von I2 nach I5 sind es zwei pixel,also nimmst du den vorigen wert mal 2 und addierst ihn zu I2.

hoff es hat geholfen