View Full Version : [Frage] Gouraud Shading
Gouraud Shading, Prüfung 6. Dezember 2002
:ausheck:
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,33
I2=0,037 (Rundungsfehler, aber den hab ich durchgeschleppt ;))
I3=0,095975
I4=0,27355
I5=0,120714285
I6=0,095975
I7=0,1145
Bis auf Rundungs- und Genauigkeitsfehler sollte die
Lösung stimmen - was meint Ihr?
Liebe Grüße
-Markus
hm, ich hab mir das noch nicht durchgerechnet, aber müßte für I3 nicht ein negativer Wert rauskommen? Nach der Lambert'schen Regel ist die Intensität an einem Punkt kd*Il*(N*L). Da L=(0,0,1) und der Punkt 3 einen negativen z-Wert besitzt, wäre die Intensität an dieser Stelle auch negativ.
Oder?
welche Formeln hast du da verwendet?
I(L,diff) = kd*Il*(L*N) und wenn ich da einsetzte: I1 = 1*0.5*((0,0,1)*(3,7,8)) = 0.5*8=4
Außerdem brauch ich doch für die Berechnung der I5 und I6 und I7 die y-WErte der Eckpunkte, die sind aber nicht gegeben, wie geh ich dann vor?
du mußt natürlich jeden normalvektor zuerst normalisieren. aber ansonsten stimmt die formel schon.
die y-Werte der eckpunkte sind schon gegeben: das raster ist ja abgebildet. aus dem kannst du leicht die y-werte rauslesen. abgesehen davon mußt du ja nicht explizit mit yWerten rechnen. du schaust einfach, wieviele pixel zwischen 2 punkten A und B sind, dann rechnest du (A-B)/(anzahl der pixel) und schon hast du die "schrittweite" der interpolation (es wird ja linear interpoliert).
aber eine andere frage: wenn ich eine negative intensität habe, bedeutet das ja quasi die intensität ist 0, also kein licht. setz ich jetzt die intensität von diesem punkt gleich auf null oder verwende ich für die interpolation den negativen wert (was mir eigentlich sinnvoller erscheint)?
Blöde Frage, aber wie normalisiert man einen Normalvektor?
N=(a,b,c) |N|=wurzel[a^2+b^2+c^2]
jetzt dividierst du a,b und c durch |N| und schon hast du den normalisierten vektor.
Korrektur:
Hab mich in der Zeile verschaut, I3 ist irrtümlich gleich I6 :(
I3: -0,0816
Schließe mich obiger Frage an - kann man da mit "-" weiterrechnen
oder wird der auf Null gesetzt??
Liebe Grüße
-Markus
Wie berechnet ihr (N*L)? mit dem Kreuzprodukt?
mumpstar
22-01-2003, 22:00
das ist das skalare produkt.
dass berechnest du so: für 2 vektoren..
(x1) (x2)
(y1) * (y2) = (x1*x2 + y1*y2 * z1*z2)
(z1) (z2)
da kommt dann nur ein wert raus.
bei dem gouraud beispiel musst du eh nur den z-wert berücksichtigen weil der L vektor ja (0,0,1) ist.
ciao, alex
dann kommt bei mir bei I3 aber -0.085 raus, weil -017*0.5 = -0.085 und nicht 0.0816, oder irr ich mich da?
lg
Guinness
22-01-2003, 22:47
Original geschrieben von mumpstar
(x1) (x2)
(y1) * (y2) = (x1*x2 + y1*y2 * z1*z2)
(z1) (z2)
sollte das nicht (x1*x2 + y1*y2 _+_ z1*z2) heissen?
mumpstar
22-01-2003, 23:07
aja. stimmt!! hab mich vertippt...
sorry..
Guinness
23-01-2003, 00:50
kein problem...
ich helf gern bzw bin froh, wenn ich auch einmal einen fehler find... :-))
also is N*L jetzt doch das skalarprodukt?
ich denk schon, weil das kreuzprodukt würde ja wieder einen vektor ergeben, und das würd uns doch nix bringen, wir brauchen in dem beispiel ja eine zahl...
Ja, N*L ist das Skalarprodukt, wobei die Vektoren vorher
normalisiert gehören.
Und meine Lösung von oben ist *FALSCH*,
da ich alle Winkel falsch berechnet hatte - werde
demnächst die richtige Version posten!
Liebe Grüße
-Markus
ich finde die obige lösung gar nicht sooo falsch
intensität :
oben : 0,362
oben rechts : 0,279
rechts unten : -0,085
links : 0,04
das ergibt interpoliert auf den gesuchten punkt 0,1223
oder ?
irgendwelche einwände ?
mfg wolk
mumpstar
24-01-2003, 13:49
@ wolk
ich hab eigentlich die gleiche lösung..
hast du schon den punkt b) dabei gemacht? dass muss man ja mit der formel auf seite 502 berechnen, oder?
mfg...
Hey!
Hab die gleichen Intensitäten in den Eckpunkten, aber mein Endergebnis stimmt nicht berrein. Ich habe eine Intensität zw oben und li unten von 0,13143 und rechts von -0,0119.
Meine Frage, wenn eine neg. Int. rauskommt, darf man dann mit der weiterrechnen, oder nicht?
Javanack
24-01-2003, 15:45
kleine frage am rande: nachdem ich die intensität für I1, I2, I3 und I4 berechnet habe, wie kommt man dann auf I5, I6 und I7?
vBulletin® v3.7.1, Copyright ©2000-2008, Jelsoft Enterprises Ltd.