Raycaster - Textur verzogen
Übersicht

![]() |
TrustBetreff: Raycaster - Textur verzogen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo,
lang ists her, nun hab ich mal wieder etwas Zeit gefunden, meinem Hobby nachzugehen. Rein aus Interesse, wollte ich mich mal ein bisschen mit dem Thema Raycasting beschäftigen. -> http://de.wikipedia.org/wiki/Raycasting Funktioniert auch einigermaßen gut. Nur habe ich das Problem: sobald sich der Spieler zu nah auf eine Wand zubewegt, also schon direkt davor steht, sich die "Textur" auf der Wand stark verzieht. Ich komme einfach nicht drauf, woran das liegen könnte. Hier mal ein paar Bilder dazu, um es verständlicher zu machen: Spieler ist weit weg von der Wand: (alles noch in Ordnung) Spieler kommt der Wand näher: (immer noch alles gut) Spieler steht direkt an der Mauer:("Textur" verzieht sich sehr stark) Da ich überhaupt nicht weiß, wo das Problem liegt, weiß ich auch nicht, welchen Codeabschnitt ich dazu posten soll. Wenn gewünscht, kann ich den kompletten Code nachreichen. Vielen Dank MfG Trust |
||
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen. |
![]() |
DAK |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hast du irgendeinen anderen Shader den du statt dem Texturshader verwenden kannst um herauszufinden, ob es am Shader oder am sonstigen Code liegt? | ||
Gewinner der 6. und der 68. BlitzCodeCompo |
![]() |
Trust |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich weiss jetzt nicht genau, was du mit "Shader" meinst. | ||
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen. |
![]() |
DAK |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ok, wie bestimmst du, perspektivisch korrekt welches Pixel der Textur wo am Bildschirm landet?
Das sollte üblicherweise in einem Shader passieren. Hast du eventuell eine Variante gebaut, wo du untexturierte Objekte anzeigen kannst? Am besten Mehrfarbige oder welche mit Farbüberlaufen? Wenn ja, tritt das Problem dort immer noch auf? Tritt das Problem auch auf, wenn du zwei verschiedenfarbige jeweils einfarbige Objekte direkt nebeneinander stellst? Kannst du eventuell die genaue Funktionsweise deines Raycasters beschreiben? |
||
Gewinner der 6. und der 68. BlitzCodeCompo |
![]() |
Trust |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ach so ok.
Also bei diesem Raycaster wird nicht jeder Pixel einzelnd berechnet (ist glaub ich auch üblich so, denn sonst wäre es Raytracing wenn ich das richtig verstanden habe) sondern "streifenweise". Also für jede X-Koordinate ein ausgesendeter Strahl. Bei einer Auflösung von 800 x 600 wären das 800 Streifen bzw. ausgesendete Strahlen. Und jenachdem, welche Länge dieser Strahl hat (Distanz zur Mauer), wird dementsprechend von weiter oben angefangen, die Mauer auf den Bildschirm zu zeichnen. Umso weiter weg die Mauer, desto kleiner wird sie auf den Bildschirm gezeichnet und umgekehrt. Das alles natürlich in Abhängigkeit zum Blickwinkel des Spielers. Hier einmal der Code, welcher auswertet, wo der Strahl die Mauer getroffen hat (X-Koordinate) und dementsprechen den dazugehörigen, ein Pixel breiten, vertikalen Streifen von der Textur, auf den Bildschirm zeichnet. BlitzMax: [AUSKLAPPEN]
|
||
Es gibt 10 Gruppen von Menschen: diejenigen, die das Binärsystem verstehen, und die anderen. |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group