Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Do Jul 10, 2025 12:43

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 15 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: RayTracer
BeitragVerfasst: Do Okt 22, 2009 16:25 
Offline
DGL Member
Benutzeravatar

Registriert: Do Okt 16, 2008 13:18
Beiträge: 252
Hi,
ich baue immernoch an einem RayTracer jetzt habe ich ein Problem. Die Strahlen der Kamera werden ja perspektivisch "ausgesendet", das heißt dann aber doch, dass sie, je weiter weg sie kommen, sich voneinander entfehrnen bis Zonen entstehen, die nicht getroffen werden weil die "Strahlen" zu weit auseinander liegen. Wie verhindert man das oder habe ich nur einen Denkfehler.

_________________
You even trying ...

Website: http://rise-of-light.de/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Okt 22, 2009 16:40 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Diese Zonen sind theoretisch egal, denn dazwischen hast du keine Pixel, die das widergeben können. So ist das zumindest, solange du kein Antialias betreibst, zum Beispiel per Multisampling. Dann schickst du mehr Strahlen, als du Pixel hast und verrechnest die dann, was dann die weicheren Kanten gibt.

greetings

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Okt 22, 2009 16:45 
Offline
DGL Member
Benutzeravatar

Registriert: Do Okt 16, 2008 13:18
Beiträge: 252
Aber es fällt doch auf wenn ich zB einen Stab habe und ihn weiter weg stelle. Dann verschwindet er ihrgenwann in den Zwischenräumen, wenn ich ihn jetzt seitlich bewege fällt er ihrgendwann wieder in einen Bereich eines Strahls und ist sichbar. Das ist das Problem, das an manchen Positionen Sachen verschwinden können und es nicht mit der Tiefe sondern nur mit den X- und Y-Koordinaten zu tun hat.

_________________
You even trying ...

Website: http://rise-of-light.de/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Okt 22, 2009 16:50 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Das ist wahr, aber ob und wie das zu umgehen ist ... keine Ahnung... Außer halt mehr Strahlen schicken, als du brauchst.

greetings

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Okt 22, 2009 17:35 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Aber der Stab ist dann so weit weg, dass er doch eh kein Abbild mehr in der Szene produziert, oder?

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Okt 22, 2009 17:41 
Offline
DGL Member
Benutzeravatar

Registriert: Do Okt 16, 2008 13:18
Beiträge: 252
Doch er ist nach der Z-Achse noch zu sehen, Aber da die Strahlen nicht paralel laufen, treffen sie je nach X- und Y- Wert nicht, was eigendlich falsch ist. Dadurch kommt es, dass wenn man sich zB nach links bewegt, der Stab abwechselnd verschwindet und wieder auftaucht. Vorallem bei niedrigen Auflösungen oder großen Sichtwinkeln dürfte das auftreten

_________________
You even trying ...

Website: http://rise-of-light.de/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Okt 22, 2009 21:38 
Offline
DGL Member
Benutzeravatar

Registriert: Di Sep 20, 2005 13:18
Beiträge: 1054
Wohnort: Dresden
Programmiersprache: C, C++, Pascal, OPL
Ich denke hier hilft wirklich nur AntiAliasing oder die Strahlen nehmen ab einem gewissen Punkt, wo eine tote Zone entstehen würde, nichts mehr an. Ist aber kacke, wenn du große Objekte in weiter Entfernung hast, die auf einmal "verschwinden"

_________________
Denn wer nur schweigt, weil er Konflikte scheut, der macht Sachen, die er hinterher bereut.
Und das ist verkehrt, denn es ist nicht so schwer, jeden Tag zu tun als ob's der letzte wär’.
Und du schaust mich an und fragst ob ich das kann.
Und ich denk, ich werd' mich ändern irgendwann.

_________________Farin Urlaub - Bewegungslos


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Okt 23, 2009 09:54 
Offline
DGL Member
Benutzeravatar

Registriert: Do Sep 02, 2004 19:42
Beiträge: 4158
Programmiersprache: FreePascal, C++
Man sollte aber auch bedenken, dass Raytracing eher nicht in Echtzeit läuft, also ein Objekt, welches bei leicht unterschiedlichen Blickwinkeln mal da und mal nicht da ist, kaum auffallen dürfte.

greetings

_________________
If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung.
current projects: ManiacLab; aioxmpp
zombofant networkmy photostream
„Writing code is like writing poetry“ - source unknown


„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Okt 23, 2009 14:47 
Offline
DGL Member
Benutzeravatar

Registriert: Do Okt 16, 2008 13:18
Beiträge: 252
Die einzig Lösung, die mir eingefallen ist, ist extrem Rechenintensiv, dabei werden die Strahlen nicht perspektivisch sondern immer in eine Richtung ausgeworfen. Aber der Punkt des Auswurfes verschiebt sich. Also wenn ich eine Kamera habe, die parallel zur X- und Y-Achse steht. Dann berechne ich mit Hilfe des Sichtwinkels und der Sichtweite, wo man den letzten Pixel auf der X-Achse sehen könnte, dann gehe ich alle Punkte der Linie "Äußerster sichtbarer Pixel" zu "Äußerster Pixel mit Z-Abstand 0 zu Kamera" ab, und werfe jedesmal gerade einen Strahl aus. So verhindert man diesen Effekt, leider Steigen die Strahlen enorm an also statt zB 300*400 Strahlen bei der Perspektivischen Variante, werden es bei dieser bei 45 Grad Sichtwinkel und 300 Sichtweite etwa 450*550 = 247500 Strahlen anstatt von 120.000, also fast 100.000 mehr.

_________________
You even trying ...

Website: http://rise-of-light.de/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Okt 23, 2009 15:11 
Offline
DGL Member

Registriert: Fr Okt 03, 2008 13:32
Beiträge: 367
Vielleicht bringt es auch was, wenn man für weit entfernte oder kleine Objekte, zusätzlich Strahlen hinzunimmt die zB aus den Mitten der Flächen oder den Eckpunkten kommen. Und die Farbwerte daraus dann mit den 4 Pixeln, zwischen denen jeder dieser Strahlen verläuft, verrechnet.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Okt 23, 2009 15:23 
Offline
Guitar Hero
Benutzeravatar

Registriert: Do Sep 25, 2003 15:56
Beiträge: 7810
Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Soweit ich verstanden habe, werden die Strahlen nicht in Raumkoordinaten ausgestrahlt, sondern für jedes Pixel auf dem Bild wird durch dieses ein Strahl geschickt. Damit sollte sowas dann nicht mehr auftreten.

_________________
Blog: kevin-fleischer.de und fbaingermany.com


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Okt 23, 2009 15:35 
Offline
DGL Member
Benutzeravatar

Registriert: Do Okt 16, 2008 13:18
Beiträge: 252
Das Problem ist nicht das ein Pixel keinen Inhalt hat, sondern das Lücken zwischen den Strahlen entstehen und Objekte die in diese Lücken geraten einfach "verschwinden". Oder meintest du was anderes.

_________________
You even trying ...

Website: http://rise-of-light.de/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Fr Okt 23, 2009 21:05 
Offline
DGL Member

Registriert: Fr Okt 03, 2008 13:32
Beiträge: 367
Also beim Raytracer gehn die Strahlen doch quasi vom Betrachter zu den Objekten? So hatte ich mir das zumindest gedacht. Wenn man jetzt einfach mehr Strahlen in einem festen Raster aussendet, ist zwar die Chance das die Objekte getroffen werden größer, aber wenn man dann statt einem vier Strahlen pro Pixel nimmt hat man eben auch 4mal soviel Aufwand.
Ich hatte mir das eben so gedacht das für eine Fläche überprüft wird, ob sie überhaupt sichtbar ist und dann wird das normale Prozedere für den Strahl durchgeführt, der zB von der Mitte der Fläche zum Betrachter verläuft (bzw genau anders rum). Dadurch geht der Strahl nicht genau durch einen Pixel und sollte deshalb natürlich nicht einfach so mit den anderen Farbwerten kombiniert werden.
Das ganze sollte sowieso nur für kleine/weit entfernte Flächen gemacht werden, weshalb sich der Aufwand hoffentlich in Grenzen hält. Jedenfalls werden die Strahlen da ein bischen zielgerichteter ausgesendet. Aber vielleicht weicht das schon ein bischen zu sehr von der normalen Funktionsweise eines Raytracers ab.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Okt 24, 2009 13:16 
Offline
DGL Member
Benutzeravatar

Registriert: Do Okt 16, 2008 13:18
Beiträge: 252
@Schläfer: Wenn du prüfst ob ein Objekt sichtbar ist und dann einen Strahl berechnest der zum Objekt führt, dann must du von Objekt aus rechnen und das ist dann eingendlich rastern wie normales OpenGL es macht und nicht RayTracing, oder doch?

_________________
You even trying ...

Website: http://rise-of-light.de/


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Okt 24, 2009 14:18 
Offline
DGL Member

Registriert: Fr Okt 03, 2008 13:32
Beiträge: 367
Ja, wahrscheinlich schon.
Ich denke das Verschwinden von Objekten bei Raytracern ist auch ein typisches Problem selbiger. Früher oder später passiert das immer, egal wie fein das Raster ist. Damit kann man leben oder man denkt sich etwas "untypisches" aus.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 15 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.009s | 15 Queries | GZIP : On ]