Gast
2008-04-26, 19:48:40
Hi Folks,
ich wollt mir grad mal n Raytracer programmieren, und bin dabei auf ein Problem gestossen (ein Kommilitone hatte das gleiche Problem, bei google find ich dazu nichts).
Das Problem ist, dass das Bild zum Rand hin immer mehr verzerrt wird, was vermutlich dadurch verursacht wird, dass man einen dreidimensionalen Raum auf eine zweidimensionale Flaeche abbildet.
Aber auch, als ich versucht habe, den Raum auf eine Kugeloberflaeche abzubilden (mal n bisschen mit tangens draufschiessen), sind verzerrungen aufgetreten - nur diesmal wurde es gestaucht statt gestreckt.
Beispiele:
erste Versuche mit Python (man war das langsam ^^), mit tangens (also versucht auf ne Kugelflaeche abzubilden):
[img=http://img237.imageshack.us/img237/3540/bospheresoi7.th.png] (http://img237.imageshack.us/my.php?image=bospheresoi7.png)
Dann mit C#, ich hab schnell was zusammengefrickelt, damit ich seh obs wieder verzerrt, deshalb ist Licht o.ae. nicht beruecksichtigt:
[img=http://img261.imageshack.us/img261/491/bladt1.th.png] (http://img261.imageshack.us/my.php?image=bladt1.png)
(es sollten nur Kugeln dargestellt werden)
Technik: Aufpunkt und Richtungsvektor fuer die Kamera, von da aus dann jeweils ein Vektor durch jeden Bildpunkt der Bildebene (x und y interpoliert).
Meine Frage ist jetzt: Was mache ich (bzw. was machen wir) falsch? Gibt es da irgendwelche trivialen loesungen dafuer, oder eine (meinetwegen auch ausfuehrliche) Anleitung, wie man das loswird bzw. wie man einen Raytracer von Anfang an aufzieht?
Ich wuerde mich sehr ueber Antworten und/oder Links zum Thema freuen (-:
Gruss,
Leo
PS1: ich habe sonst noch keine Erfahrung mit 3D-Programmierung.
PS2: Ich find's toll, dass man sich hier nicht gleich Registrieren muss (-:
ich wollt mir grad mal n Raytracer programmieren, und bin dabei auf ein Problem gestossen (ein Kommilitone hatte das gleiche Problem, bei google find ich dazu nichts).
Das Problem ist, dass das Bild zum Rand hin immer mehr verzerrt wird, was vermutlich dadurch verursacht wird, dass man einen dreidimensionalen Raum auf eine zweidimensionale Flaeche abbildet.
Aber auch, als ich versucht habe, den Raum auf eine Kugeloberflaeche abzubilden (mal n bisschen mit tangens draufschiessen), sind verzerrungen aufgetreten - nur diesmal wurde es gestaucht statt gestreckt.
Beispiele:
erste Versuche mit Python (man war das langsam ^^), mit tangens (also versucht auf ne Kugelflaeche abzubilden):
[img=http://img237.imageshack.us/img237/3540/bospheresoi7.th.png] (http://img237.imageshack.us/my.php?image=bospheresoi7.png)
Dann mit C#, ich hab schnell was zusammengefrickelt, damit ich seh obs wieder verzerrt, deshalb ist Licht o.ae. nicht beruecksichtigt:
[img=http://img261.imageshack.us/img261/491/bladt1.th.png] (http://img261.imageshack.us/my.php?image=bladt1.png)
(es sollten nur Kugeln dargestellt werden)
Technik: Aufpunkt und Richtungsvektor fuer die Kamera, von da aus dann jeweils ein Vektor durch jeden Bildpunkt der Bildebene (x und y interpoliert).
Meine Frage ist jetzt: Was mache ich (bzw. was machen wir) falsch? Gibt es da irgendwelche trivialen loesungen dafuer, oder eine (meinetwegen auch ausfuehrliche) Anleitung, wie man das loswird bzw. wie man einen Raytracer von Anfang an aufzieht?
Ich wuerde mich sehr ueber Antworten und/oder Links zum Thema freuen (-:
Gruss,
Leo
PS1: ich habe sonst noch keine Erfahrung mit 3D-Programmierung.
PS2: Ich find's toll, dass man sich hier nicht gleich Registrieren muss (-: