View Full Version : Gouraud- und Phong-shading
Also 3 wichtige Fragen dazu. Sind vielleicht schon gestellt worden aber wo die Antwort steht keine Ahnung.
1. Wie bekommt man die x- und y-Werte von dem Pixel, dessen Intensität man berechnen soll? Also wie komme ich auf (yp-y2)/(y1-y2)? yp,xp?
2. Wie rechnet man mit negativen Intensitäten? Einfach mit dem negativen weiter oder die Int. auf 0 setzen?
3. Wie ist das mit dem Runden der Intensitäten? Muß man runden, wie viele Stellen hinter dem Komma sollte man angeben?
Wichtigste Frage ist die 1.!
:(
Original geschrieben von Kakarot
1. Wie bekommt man die x- und y-Werte von dem Pixel, dessen Intensität man berechnen soll? Also wie komme ich auf (yp-y2)/(y1-y2)? yp,xp?
also ich würde dir raten nicht so kompliziert zu denken!
Du brauchst eigentlich gar keine y-Werte von dem Punkt, du musst dir ja als erstes die Intensitäten von den punkten ausrechenen an denen die Normalvektoren gegeben sind!
Dann schaust du einfach wieviele Pixel es ZB in y-Richtung zwischen den zwei Punkten die du Interpolieren willst sind. Dann nimmst du die Differenz der beiden Intensitäten und dividierst sie durch die Anzahl der Pixel, also hast du jetzt den "Intensitätszuwachs" pro Pixel, jetzt brauchs du nur mehr die Pixel zu dem Punkt den du haben willst abzählen und den Zuwachs damit multiplizieren. Jetzt zählst du das zu dem Intensitätswert von einem Ausgangspixel dazu!
fertig!
Ich hoffe das ist irgendwie verständlich! :)
Ja und wie mach ich das bei phong shading?
Bei pixel-abzählen meinst du auf dem Angabeblatt im Raster zählen wie viele Pixel zwischen den Punkten sind oder?
ja genau, einfach am raster abz#hlen
wenn der eine vektor 1,2,4 is und der andere 4,8,4 und dazwischen liegen zb 3 pixel
dann schaust einfach die differenz der vektor-koordinaten an und dividierst diese durch die anzahl der pixel die dazwischen liegen, also 3
dann hast die "schrittweite", die du zu jedem vektor beim interpolieren dazuzählen musst:
also die x-werte wären für die vektoren auf der strecke:
1, 2, 3, 4 (weil der abstand von 1 nach 4 ist 3, und das musst auf 3 pixel=schritte aufteilen)
für y:
8-2 = 6 , aufgeteilt auf 3 schritte ergibt: jeweils 2 dazuzählen
also 2, 4, 6, 8
und z is bei beiden vektoren gleich, also bleibts konstant 4
alles klar? is eigentlich ganz simpel, dazu brauchst gar keine formel...
Also brauch ich bei beiden Gouraud und Phong für den Wert mit dem ich die Intensitäten bzw. die Normalvektoren beim Interpolieren multipliziere keine y-Werte, sondern ich zähle einfach auf dem Angabeblatt
den Abstand zwischen beiden Eckpunkten (a1)
und dann den Abstand zwischen Eckpunkt und dem eingezeichneten Pixel (a2)
und dividiere das.
sprich: (a2:a1)*Eckpunkt
Paßt das wenn ich es so bei der Prüfung mache?
edit: sorry, habe gerade bemerkt, dass es dazu ja einen eigenen thread gibt
-----
Eine kleine Frage noch zum Phong-Shading:
Wann muss ich, bzw. muss ich überhaupt, beim Interpolieren die Normalvektoren normalisieren?
Muss ich
1. normalisieren,zw. 2 Eckpunkten interpolieren, normalisieren, zw. 2 Eckpt. Interpolieren, normalisieren, zw. den Errechneten Punkten interpolieren, normalisieren
oder ist
2. Interpolieren zw. 2 Eckpt., Interpolieren zw. 2 Eckpt., Interpolieren zw. den errechneten Normalvektoren, Normalisieren
auch korrekt?
Zu 1. denke ich mir halt, dass wenn man zB bei einem Eckpunkt (0.0012,0.0045,0.0003434) und beim anderem Echpunkt (123,432.34,543.22) der zweite Eckpunkt ohne Normalisieren beim Interpolieren einen größeren Einfluss nimmt, und mann desshalb immer normalisieren muss - das könnte natürlich kompletter Quatsch sein...
im anderen thread sagte mir jemand, dass 2. stimmt
also zuerst alles interpolieren, und erst vorm einsetzen in die formel , also beim gesuchten punkt, normalisieren
es is nur wichtig dass du im beleuchtungsmodell den normalisierten vektor verwendest, vorhe anscheinend nicht !?
was meinen die andern dazu ?
ja beim Phong-Shading muß man erst beim Beleuchtungsmodell den Normalisierten Vektor verwenden.
Aber wie ich schon in einem anderen thread gefragt habe:
Wie rechnet man sich H bzw. R aus! Formel kenne ich aber wie geht das genau, mit bsp. bitte!
Muß ich beim R-ausrechnen auch schon den Normalisierten Vektor nehmen?
ja!
naja formel is R = (2N * L) * N - L
dh du nimmst die 3 koordinaten-werte vom normalisierten N doppelt, machst damit das skalarprodukt mit L=(0,0,1), das ergibt dann eine zahl
mit dieser zahl multiplizierst du die 3 koordinaten von N nochmals einzeln, und von dem ergebnis (vektor) sbutrahierst du den vektor L
dann bekommst du den Vektor R
vBulletin® v3.7.1, Copyright ©2000-2008, Jelsoft Enterprises Ltd.