PDA

View Full Version : Gouraud- und Phong-shading


Kakarot
25-01-2003, 15:03
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.!

:(

RS250
25-01-2003, 16:26
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! :)

Kakarot
25-01-2003, 18:27
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?

Kenny
25-01-2003, 20:19
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...

Kakarot
25-01-2003, 21:26
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?

MarkusL
26-01-2003, 10:44
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...

Kenny
26-01-2003, 13:49
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 ?

Kakarot
26-01-2003, 14:06
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?

Kenny
26-01-2003, 14:16
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