CG: Aufgabe 6

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

CG: Aufgabe 6
Hallo,

hätte da zwei Fragen, eine zur Theorie, die andere zur Programmierung:

Zum einen ist mir die Projektions-Transformation noch nicht so ganz klar. In der Aufgabe soll ja ein Viewing Frustum im 2D mittels einer Matrix M in die Canonical View Volume transformiert werden. Dazu habe ich versucht die Matrix aus der Vorlesung (Kapitel 6, Folie 39) so zu verwenden, dass sie im 2D-Raum benutzt werden kann. Hab es auch geschafft den rechten oberen Punkt des Frustum auf den Punkt (1,1) zu mappen. Aber die anderen waren da ganz fürchterlich kaputt. Irgendwie mach ich das noch nicht richtig, aber irgendwie häng ich fest. Wäre schön, wenn mir da jemand weiterhelfen könnte.

Zur Programmierung: In der Aufgabe steht, dass man die Formel aus der Vorlesung verwenden soll, um eine Textur auf eine Kugel zu kleben, allerdings wurde bisher weder in den Folien noch in den Video-Aufzeichnungen etwas derartiges durchgenommen. Nun habe ich mal versucht, diese Formel zu verwenden (http://de.wikipedia.org/wiki/UV-Koordinaten), allerdings sieht das ganze noch ganz falsch aus. Nun bin ich mir nicht sicher, ob man mit der Formel überhaupt weiterkommt und auch die Anwendung ist mir noch nicht ganz klar, ob man diese beim Kugel zeichnen schon verwenden soll (quasi mittels glTexCoord2f) oder erst im Shader.

Gruß


Wir haben erst die Projektion gemacht und erst anschliessend die Translation (also die beiden Matrizen dann multipliziert). So hat’s bei uns geklappt.

In der .cpp. Im Shader werden die Koordinaten dann ja interpoliert. Ich hab mich etwas am englischen Wikipediaartikel orientiert, aber statt den arcus Funktionen musst du Phi / Theta direkt einsetzen, sonst geht’s kaputt.


Irgendwie will es nicht in meinen Schädel, was mach ich falsch?!

Code entfernt  

Du postest ein großes Stück von dem Code, den du vermutlich abgeben willst.

Was mir direkt auffällt, ist, dass du das +0.5 noch wegmachen musst. i * dTheta / j * dPhi geht von 0° bis 180° / 360°, die Definitionen im Wiki Artikel gehen von -90° bis 90° (-180° bis 180°). Wie siehts dann denn aus?


Es sieht noch sehr merkwürdig aus. Es ist doch so, dass ich ja eigentlich einen Wert zwischen 0 und 1 brauche, da, soweit ich das verstanden habe, man zwischen 0 und 1 auf der Textur rumrutscht. Müsste ich dann nicht noch das ganze durch PI bzw 2*PI teilen, und auf den Bereich [0…1] zu mappen?


Ich dachte das wäre in dPhi / dTheta schon eingerechnet. Aber hat sich nun wohl eh erledigt…^^


Naja, scheint ja wohl, wenn es bei dir funktioniert…

Eigentlich nicht, Abgabe ist erst heut Nacht um 23:59 Uhr :wink:


Die Box wird richtig angezeigt? Dann kanns schonmal nicht am Shader liegen. Ansonsten einfach mal alle Werte mit gleichem i oder gleichem j ausgeben lassen und schauen, wie sich die Texturkoordinaten verändern…


Es hat letztendlich doch funktioniert, war (wie solls auch anders sein) ein sau dummer Fehler, nunja :slight_smile:


Das ist ja meistens so^^