D
Hi,
ich beschäfftige mich in letzter Zeit mit der Reflexion. Jetzt hab ich es schon mal geschafft, dass ich ein reflektiertes Bild auf der Wasseroberläche sehe. Das Problem ist nur, dass ich ja die Pixel mit y < 0 clippen muss. Natürlich geht das mit einer Clipping-Plane, na ja theoretisch. ^^ Aber ich wollte das Clipping sowieso in die Projektionsmatrix integrieren, welche ich den Shadern übergebe, so wie es in einem Tutorial steht, das ich gelesen habe. Allerdings ist die Beispielfunktion fehlerhaft, alleine schon syntaktisch gesehen. Also habe ich mich selbst auf die Suche nach einer solchen Möglichkeit gemacht und nach etwas längerer Suche, habe ich heraus gefunden, dass es schon mal möglich ist (D3DXMatrixPerspectiveOffCenterLH). Jetzt wollte ich allerdings die selbe ProjectionMatrix benutzen, die es schon gibt und habe bemerkt, dass
_22 = 2*zn/(t-b)
und
_32 = (t+b)/(b-t)
ist. Deshalb dachte ich, modifiziere ich nur diese Member, da diese ja nur mit den y-Werten zu tun haben. b muss ja 0 sein, also muss ich noch t herausfinden.
Zwei Funktionen, zwei Unbekannte, eigentich ja einfach. Meine Umformungen und Einsetzung ergab allerdings, dass _22 gleichzeitig t/2 sein müsste, was ich allerdings für falsch halte
Kann mir da vielleicht jemand weiterhelfen?
Danke
Edit:
Wies aussieht, hab ich wohl irgendeine komisch gerechnet. Jetzt sieht t schon viel "realistischer" aus ;). Trotzdem kommt nicht das von mir gewünschte Ergebnis dabei raus... Es sieht so aus, also ob ich das wohl falsch verstanden hätte. Meine Szene sieht jetzt vertikal gestreckt aus.^^
Hier meine Umformung: ( es sei _22 = r und _32 = s )
s = (t+b)/(b-t)
<=> sb-st = t+b
<=> sb-b = st+t
<=> b(s-1) = st+t
<=> b = (st+t)/(s-1) = t (s+1)/(s-1)
r = 2zn/(t-b) | b = t (s+1)/(s-1)
<=> r = 2zn/(t-t(s+1)/(s-1))
<=> r = 2zn/(t(1-(s+1)/(s-1)))
<=> t = 2zn/(r(1-(s+1)/(s-1)))