DGL
https://delphigl.com/forum/

@Raytracer
https://delphigl.com/forum/viewtopic.php?f=14&t=6069
Seite 1 von 7

Autor:  Evil-Devil [ Mi Okt 25, 2006 08:45 ]
Betreff des Beitrags:  @Raytracer

Sieht sehr gut aus. Wird es dazu vielleicht irgendwann von dir ein Tutorial geben? So wirklich gute Tutorials hab ich bisher zu dem Thema im Netz nicht gefunden.

Autor:  Delphic [ Mi Okt 25, 2006 09:17 ]
Betreff des Beitrags: 

Hm, einige Kleinigkeiten habe ich ja vor ein paar Tagen schon eingestreut - Ray-Sphere Collision ist ja versteckt schon drinne. Aber bislang war die Resonanz auf den Raytracer ja nicht allzu grosz und so hab ich das Gefuehl, dasz sich auch das Interesse dazu in Grenzen haelt. Moeglich waere es schon, hier ein wenig mehr zu zu schreiben, sobald ich die Zeit dazu finde. Wenn aber dieser Thread so leer und unberuehrt bleibt wie er ist, wird es sich wohl auf die Informationen beschraenken, die man auch in normalem OpenGL verheizen koennte oder dort zumindest interessant sind, weil das ist ja schon ein ganzer Haufen Arbeit, der da hinter steckt.

Autor:  Evil-Devil [ Mi Okt 25, 2006 09:48 ]
Betreff des Beitrags: 

Das es viel Arbeit ist mir klar. Ich meine in der OpenGL Super Bible widmet sich ein Kapitel auch dem Raytracing, bin mir gerade nur nicht sicher, muss ich zuhause mal ins Buch schauen. Trotz allem wären Texte auf Deutsch schon schön, auch wenn es bedeutet nur hier und da Informationen zu Teilthemen zu bekommen.

Würde nämlich gerne einen Raytracer zum erstellen von Lightmaps nutzen.

Autor:  Shaddow [ Mi Okt 25, 2006 11:42 ]
Betreff des Beitrags: 

Also ich wäre an dem Tut dazu auch interessiert

Autor:  Gaukler [ Mi Okt 25, 2006 19:07 ]
Betreff des Beitrags: 

tut mir leid wegen der frage, aber was ist genau ein raytracer?

die screenshots gefallen mir wirklich sehr gut, geil die weiss ich nicht wievielen spiegelungen ;)

Autor:  Delphic [ Mi Okt 25, 2006 19:24 ]
Betreff des Beitrags: 

Naja, ums kurz zu umschreiben, was ein Raytracer ist: Die antiken Griechen glaubten, daß um sehen zu können, ihr Auge viele Strahlen verlassen. Treffen sie irgendwo auf, dann sieht man die Farbe des getroffenen Objektes, tun sies nicht, siehst du irgendwann den Äther - der wohl blau oder schwarz sein muss... Trotz seiner etwas seltsamen konsequenzen (z.B. daß man zwischen Tag und Nacht eigentlich keinen Unterschied hat), kann man sich dieses Prinzip bei einem Raytracer zunutze machen. Man sendet Strahlen von der Kamera aus und schaut, ob sie sich mit einem Objekt in der Szene schneiden. Wenn ja, dann wird anhand des nahesten Objektes entschieden, wie weiter verfahren wird. So wird meist ein Strahl zur nächsten Lichtquelle weitergeschickt, um zu sehen ob der getroffene Punkt im Schatten eines anderen Objektes liegt und wenn nicht wie das Licht einfällt. Das kann man dann noch etwas weiter treiben und für Spiegelungen, Brechungen, etc, erweitern. So im groben...

Autor:  Seth [ Do Okt 26, 2006 09:20 ]
Betreff des Beitrags: 

angenommen dieser "strahl" trifft auf eine deiner kugeln, dann wird der also an der tangente mit einfallswinkel = ausfallswinkel abprallen und so die spiegelung am boden erzeugen, richtig ? wenn er jetzt wieder gespiegelt wird geht das immer so weiter, riecht nach rekursion. aber wie stellst du das am ende dar ? irgendwann ist ja die linie am ziel angekommen (da wo wenig oder garnichts mehr mit dem licht passiert) und dann muss du ja diesen punkt irgendwie mappen Oo und wie regelst du die schatten etc. mich würde das schon interessieren ;) (schatten geraytraced vom licht aus ? )

mfg

Autor:  Evil-Devil [ Do Okt 26, 2006 09:59 ]
Betreff des Beitrags: 

Ich schätze mal der Strahl hat nur eine bestimmte Länge die sich aus der Helligkeit und dergleichen ergibt. Sonst würd das ja endlos gehen...

Autor:  Flash [ Do Okt 26, 2006 11:41 ]
Betreff des Beitrags: 

Also mal ne vermutung meiner Seits. Hab das zwar mal in ner Vorlesung gehört aber nie implementiert:

Du schickst einen Strahl los, er trifft auf ein Objekt. Du merkst dir die Farbe an der Stelle und schickst den Strahl weiter (entsprechend der Reflexionsgesetze). Trifft er wieder auf ein Objekt mekrst du dir wieder die dortige Farbe. Und so weiter. Bis zum Ende. Dann nimmst du die Farben und verrechnest die letzte mit der Vorletzten. Das ergebnis benutzt du für die Vorletzte Stelle. Dann verrechnest du diese neue Farbe mit der VorVorletzten usw. Solange bis du die Farbe der ersten Kollisionstelle hast. Und dann shcickst du den nächsten Strahl los.

U.A. der Grund warum Raytracing nicht in Echtzeit geht. Jedenfalls im Moment noch nicht...

Autor:  Sidorion [ Do Okt 26, 2006 13:33 ]
Betreff des Beitrags: 

... und um die Farbe an den jeweiligen Punkten zu berechnen, wird jeweils ein Strahl zu jeder Lichtquelle geschickt, um deren Einfluß auf die aktuelle Oberfläche zu berechnen. Dieser Einfluss errechnet sich dann wie bei OpenGL aus Entfernung, Anstrahlwinkel, Farbe des Lichts und Reflexionsgrad usw. der Oberfläche.
Dadurch ergeben sich dann automatisch die Schatten. Das ist der Grund, warum beim Raytracing die Schatten immer so hart sind. Weiche Schatten erreicht man dann, indem man zusätzlich das Radiosity-Verfahren anwendet.

Autor:  Delphic [ Do Okt 26, 2006 14:40 ]
Betreff des Beitrags: 

Ja, in etwa so wirds gemacht. Entscheiden, wann man fertig ist mit der Rekursion ist eigentlich ganz leicht: Einerseitz gibt man fest einen maximalen Rekursionsgrad an. Andererseits kann man sich merken, wieviel Farbe denn höchstens in die nächste Rekursionsebene mit eingeht - fällt dieser Intensitätswert unter einen Schwellwert, so wird nicht weitergerechnet, da der Einfluss auf die Endfarbe nicht weiter wahrnehmbar ist.

Autor:  Delphic [ Do Okt 26, 2006 21:21 ]
Betreff des Beitrags: 

Sidorion hat geschrieben:
Das ist der Grund, warum beim Raytracing die Schatten immer so hart sind. Weiche Schatten erreicht man dann, indem man zusätzlich das Radiosity-Verfahren anwendet.

Es gibt zwar auch Tricks, Schatten im Standard-Raytracer weicher zu machen, aber es stimmt, man nimmt hier inzwischen andere verfahren, allerdings ist Radiosity inzwsichen deutlich auf dem rückzug - gehört inzwischen eher in die Kategorie altbacken und nicht optimal. Photon-Mapping ist das momentane Zauberwort - mal sehen ob sich die Zeit findet, das in meinem Raytracer unterzubringen - man bekommt dadurch aber nicht nur schöne Schatten sondern auch gleich Caustics und ähnliches als Gratisbonus.

Autor:  Flo [ Sa Okt 28, 2006 11:14 ]
Betreff des Beitrags: 

In der letzten Weinachstsvorlesung die ich gehoert habe, hat uns unser Prof. auch einen (in java) selbst geschriebenen Raytracer vorgestellt.

Interessant war das er in seinem Raytracer eingebaut hat das er Objekte kombinieren kann. z.B. das nur das sichtbar ist was in Objekt 1 ist und in Objekt 2. Oder das nur das Sichtbar ist was in Objekt 1 ist aber nicht in Objekt 2. So hat er zum Beispiel in einem kleinen Film eine Kugel durch einen Wuerfel fliegen lassen. Die Kugel selbst war nicht sichbar, allerdings verschwand der wuerfel an den stelllen an dem ihn die Kugel beruehrte.

Habe mal schnell ein Bild in Blender gerendert so wie es damals aussah, als sich die Kugel mitten im Würfel befand.

Dateianhänge:
Dateikommentar: Ein Würfel von dem eine Kugel abgezogen wurde.
WuerfelMinusKugel.jpg
WuerfelMinusKugel.jpg [ 21.92 KiB | 10076-mal betrachtet ]

Autor:  La Boda [ Sa Okt 28, 2006 11:34 ]
Betreff des Beitrags: 

Richtig cool kommt dieser Effekt aber erst zur Geltung, wenn das, was vom Würfel übrigbleibt, auch innen nach eine Oberfläche hat, also nicht wie in deinem Bild, dass man dann die Außenseiten des Würfels von innen sieht. Aber ich denke, das ist nicht so leicht zu implementieren...

Autor:  Delphic [ Sa Okt 28, 2006 11:40 ]
Betreff des Beitrags: 

Ja.. Das läuft unter dem Begriff Constructive Solid Geometry - dazu kann man solide Objekte verwenden und darauf Mengenoperationen wie Differenz, Schnitt, Vereinigung, etc. anwenden. Das ist ganz lustig und steht bereits auf der TODO-Liste, aber ist nicht unbedingt das erste, was man implementiert, weil man dabei sehr genau nachdenken muss, was man tut ;-) Jedenfalls: Das wird noch kommen, wobei meine Schnittebenen bereits nach diesem Prinzip funktionieren - allerdings schneiden offene Schnittebenen das Objekt auf und drehen die Innenseite des Objektes nach aussen (die normalen müssen umgedreht werden, damit das Licht, Reflexion, ecc stimmt. ). Die geschlossenen Schnittebenen werden dagegen das Objekt solid erhalten und können dann auch mit anderen CSG Objekten verbraten werden - soweit bin ich aber noch nicht. Übertrieben kompliziert ist die Sache aber auch wieder nicht, weshalb eigenlich jeder etwas vorangeschrittene Raytracer, der nicht für sehr spezielle aufgaben ausgelegt ist, etwa Lightmapgeneratoren, CSG implementiert ;-)

Seite 1 von 7 Alle Zeiten sind UTC + 1 Stunde
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/