Hab mich da wirklich ein bisschen unglücklich ausgedrückt...
Sagen wollte ich, dass da ein Punkt ist von dem die Strahlen ausgehen. Vor diesem Punkt befindet sich eine Ebene auf die
Projiziert wird. Anhand des Schnittpunkts von Strahl und Ebene kann ich dann auf dieser Ebene eine Farbe setzten.
Zu Photon Mapping:
Ich hab mir das mir dass jetzt so gedacht...
Von einer Lichtquelle gehen auf jedes Objekt Strahlen aus. Die einfallenden Strahlen werden gepeichert und gebrochen,
reflektiert usw. Das ganze mach ich dann so lange bis entweder das Licht zu schwach ist, oder eine gewisse Tiefe erreicht
ist. Das würde dann alles auf einmal machen.
Edit:
Ok, harte Schatten hat man dann trotzdem noch... aber das ist dann eher ein Problem das mich jetzt noch nicht
interessieren sollte.
Mit Photon Mapping habe ich mich gerade in meiner Thesis etwas beschäftigt.
Evtl findest du hier noch Sachen, die dir helfen: http://graphics.ucsd.edu/~henrik/papers/ ansonsten findet man per google eingentliche viele Paper. Es gibt auch ein Buch vom Erfinde (ist mit auf der verlinkten Seite)
_________________ __________
"C++ is the best language for garbage collection principally because it creates less garbage." Bjarne Stroustrup
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Achso, ich dachte nur wegen dem Link.
Ganz nebenbei. Wenn ihr erfolgreich das Photonmapping mal implementiert habt dann könnt ihr darüber ja mal ein Tutorial schreiben.
Alternativ wäre ein Artikel fürs Wiki zum Thema Photonmapping sicherlich angemessen. Dort könnte man dann schön die Vor und Nachteile, Anwendungsfälle, Performancethemen etc. beschreiben.
Ich denke das wäre durchaus ein guter Wikiartikel. Idealerweise dann bebildert...
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Brauche ich die wirklich? Ich versteh noch immer nicht ganz was die genau macht...
Wenn ich jeden Strahl der auf eine Fläche fällt einfach aufspalte in einen Reflektierten und einen "Inneren"-Teil, dann löst
sich das ganze doch von selbst.
Bzw. ich hab da noch eine Frage im Zusammenhang mit der Physik:
Was macht/ist eig. die Amplitude der Welle des Lichtes?
Wäre das die "Intensität"?
Ich denke das wäre durchaus ein guter Wikiartikel. Idealerweise dann bebildert...
Bilder kann ich ein paar liefern - waren hier ja schon verlinkt, sind aus dem Projektethred für meinen Raytracer Diese Bilder dürfen gerne verwendet werden.
Zitat:
Brauche ich die wirklich? Ich versteh noch immer nicht ganz was die genau macht...
Sie beschreibt doch nur, daß das Licht aus allen richtungen kommt. Das ist besonders bei diffusem Licht sehr wichitg - so kommt dann farbbluten und ähnliches zustande. Ein Strahl alleine ist da zu wenig - aber deswegen macht man doch gerade Photon-Mapping, um an dieses Licht ranzukommen...
Andreas hat geschrieben:
Bzw. ich hab da noch eine Frage im Zusammenhang mit der Physik: Was macht/ist eig. die Amplitude der Welle des Lichtes? Wäre das die "Intensität"?
Die Farbe wird durch die Wellenlänge, bzw. Frequenz f festgelegt. Die Energie eines einzelnen Photons ist dabei h*f, wobei h das Planksche Wirkungsquantum ist. Die Amplitude ist eine Funktion über den gesamten Raum (kein Wert!) und beschreibt die quantenmechanisch die Aufenthaltswahrscheinlichkeit des Photons, was für Interferrenz wichtig ist. Beim Photon-Mapping werden jedoch Photonenpäckchen simuliert, die als Partikel gehandhabt werden, also in eine bestimmte Richtung fliegen und keine Amplitude besitzen - Interferrenz findet in der Photonmapping-Welt für gewöhnlich nicht statt. Die Intensität (Radiance) is abhängig von der Betrachtungsrichtung und misst im Prinzip die Anzahl der auftreffenden Photonen, genauer die Energie die diese mitbringen.
Hm... tut mir leid dass ich so oft nachfragen muss, aber mir passen da einige Dinge noch nicht ins Bild...
Zitat:
Sie beschreibt doch nur, daß das Licht aus allen richtungen kommt. Das ist besonders bei diffusem Licht sehr wichitg - so kommt dann farbbluten und ähnliches zustande. Ein Strahl alleine ist da zu wenig - aber deswegen macht man doch gerade Photon-Mapping, um an dieses Licht ranzukommen...
Wenn ich von der Lichtquelle Strahlen weg schieße und diese auf den selben Punkt auf der Projektionsfläche treffen, dann sollte doch genau das selbe herrauskommen?
Zitat:
Die Amplitude ist eine Funktion über den gesamten Raum (kein Wert!) und beschreibt die quantenmechanisch die Aufenthaltswahrscheinlichkeit des Photons, was für Interferrenz wichtig ist.
Die Amplitude ist doch die maximale Auslenkung. Heißt das, dass das Licht keine fixe maximale Auslenkung hat?
Was macht dann also eine Taschenlampe heller? Erst einmal der Einfallswinkel. Aber wenn der senkrecht ist, dann bleibt eig.
nur noch eine Eigenschaft übrig die sie heller machen kann. Die Anzahl der Photonen.
Also könnte ich die Farbe mit einem fixen Skalar multiplizieren, das die Helligkeit eines Photons darstellt.
Ich hab da auch noch eine Frage zu den Farben:
Bei additiver Farbmischung (mit der ich es ja hier zu tun habe) kann man ja einfach die Farben als Vektoren hernehmen
und einfach addieren (soweit ich das jetzt nicht fasch interpretiert habe). Was passiert jetzt aber wenn ich zB
(1, 1, 0) + (0, 1, 1) habe? Größer als 1 geht es ja nicht... würde also alles was >1 gleich 1 sein? und somit (1, 1, 1).
Um Beugung auch noch zu implementieren hab ich mir überlegt, dass man bei Kollision mit einer Fläche gezielt auf
Objekte (mit einer festgelegten Pixelung) in der nähe schießen könnte.
Da geht die Anzahl der Strahlen zwar wirklich schon gegen unendlich, aber mir geht es in erster Linie nur um die
physikalische Richtigkeit.
Ich hab euch eigentlich noch ganz verschwiegen, dass das ganze Teil (eigentlich Thema) eines Physik Referates ist.
Es soll nur demonstriert werden was man mit den div. Gesetzten so alles in der Programmierung machen kann. Mit etwas
Glück werden die Kollegen ein bisschen interessierter in die Physik. Oder bekommen auch Lust einmal etwas selbst zu
programmieren...
Ein richtiges Bild zum herzeigen kann dann also schon 5h rechnen...
Wenn das einmal funktioniert, dann seh ich mir die anderen Algorithmen an, um noch mehr Geschwindigkeit heraus zu
holen.
Wenn ich von der Lichtquelle Strahlen weg schieße und diese auf den selben Punkt auf der Projektionsfläche treffen, dann sollte doch genau das selbe herrauskommen?
Könnte klappen, aber manche Oberflächen erzeugen keine perfekten Reflektionen oder reflektieren gleich völlig durcheinander. Da musst Du dann entweder herumspielen oder dich informieren, wie die Verteilungen üblicherweise so sind Aber wolltest Du nicht Photon-Mapping machen?
Zitat:
Die Amplitude ist doch die maximale Auslenkung. Heißt das, dass das Licht keine fixe maximale Auslenkung hat?
Nein, nicht quantenmechanisch. Das ding nennt man dort unter anderem Wahrscheinlichkeitsamplitude oder Wellenfunktion. Siehe auch Probablility amplitude
Zitat:
Was macht dann also eine Taschenlampe heller? Erst einmal der Einfallswinkel. Aber wenn der senkrecht ist, dann bleibt eig. nur noch eine Eigenschaft übrig die sie heller machen kann. Die Anzahl der Photonen.
Ja
Zitat:
Bei additiver Farbmischung (mit der ich es ja hier zu tun habe) kann man ja einfach die Farben als Vektoren hernehmen und einfach addieren (soweit ich das jetzt nicht fasch interpretiert habe). Was passiert jetzt aber wenn ich zB (1, 1, 0) + (0, 1, 1) habe? Größer als 1 geht es ja nicht... würde also alles was >1 gleich 1 sein? und somit (1, 1, 1).
Okay. Nimm irgendeinen Zeitgenossen her, lass ihn in eine dunkle Richtung schauen. Guck in die Pupillen: Groß. Jetzt lass ihn ins Helle schauen. Pupillen: zugezogen. Das kannst Du jetzt auch simulieren. Die Farbmischung die Du hast, beschreibt nämlich plötzlich Energien und deine Projektionsfläche ist in bestimmten Maße empfindlich auf Energie und wenn Du davor einen grau-Filter setzt, dann kommt da einfach weniger Energie an. Kannst auch nen Farbfilter davor setzen, ist aber vielleicht nicht so sinnvoll. Jedenfalls ist hier 1+1=2 besser als 1+1=1. Es genügt am Ende die empfinlichkeit des "Messinstruments anzupassen" und so z.B. Lichtquellen übersteuert darzustellen und das was du eben anzeigen willst im Bereich dessen, was du mit dem Bildschirm darstellen kannst.
Zitat:
Um Beugung auch noch zu implementieren hab ich mir überlegt, dass man bei Kollision mit einer Fläche gezielt auf Objekte (mit einer festgelegten Pixelung) in der nähe schießen könnte.
Also normalerweise sieht man solche Effekte ja nur in stark abgedunkelten Räumen hinter seltsamen Punktierten oder linierten Oberflächen. Computergrafik simuliert üblicherweise Strahlenoptik. Im Wikipedia-Artikel steht da was von:
Zitat:
Effekte, die von der geometrischen Optik nicht beschrieben werden können, sind unter anderem: * die Beugung,
Wellenoptik muss halt anders simuliert werden. Da würde ich empfehlen, daß Du dich erstmal ein Jahr lang in die passende Physik hineinkniest, die verwendete Mathematik verstehst und dir dann überlegst, wie du das vielleicht approximieren kannst. Könnte sicher ganz lustig werden .
Zitat:
Ich hab euch eigentlich noch ganz verschwiegen, dass das ganze Teil (eigentlich Thema) eines Physik Referates ist. Es soll nur demonstriert werden was man mit den div. Gesetzten so alles in der Programmierung machen kann. Mit etwas Glück werden die Kollegen ein bisschen interessierter in die Physik. Oder bekommen auch Lust einmal etwas selbst zu programmieren...
Dann sind wir in einer völlig anderen Situation. Nimm dir ein einzelnes Phaenomen heraus und schreibe dafür eine ganz Spezielle simulation und verwende alles was du an Formeln zur Verfügung hast, aber versuche lieber nicht das ganze mit einem Raytracer zu simulieren. Der ist da um Makroeffekte zu simulieren. Mikrokosmos ist da zu speziell Den Tracer kannst Du höchstens zum Anzeigen des Effektes gebrauchen. Du könntest deinen Physikalischen Effekt in eine Textur rendern und dann mit dem Tracer anzeigen...
Zuletzt geändert von Delphic am Fr Jul 10, 2009 07:49, insgesamt 1-mal geändert.
Brauche ich die wirklich? Ich versteh noch immer nicht ganz was die genau macht... Wenn ich jeden Strahl der auf eine Fläche fällt einfach aufspalte in einen Reflektierten und einen "Inneren"-Teil, dann löst sich das ganze doch von selbst.
Was du beschreibst ist das Whitted Raytracing, oder dass, was man als normales rekursives Raytracing kennt. Das simuliert den ideal spiegelnden Fall.
Die Rendergleichung ist da etwas allgemeiner: Wir haben einen Oberflächenpunkt x. Ich will jetzt wissen, wieviel Licht dieser Punkt in eine bestimme Richtung strahlt. Das ist die Aufgabe der Rendergleichung. Und jetzt gibt es verschiedene Möglichkeiten, warum der Punkt x Licht abstrahlt. Er kann Licht emittieren, er kann einfallendes Licht reflektieren. Und das Reflektieren ist hier ganz allgemein gehalten. Ich unterscheide an dieser Stelle erstmal nicht das aus den einfachen Modellen bekannte diffus und spiegelnd. Ich hab wirklich den Fall, von anderen Flächen der Szene kommt Licht, das fällt auf den Punkt x. Dieser Punkt x absorbiert einen Teil der Engerie und der andere wird auf irgendeine Art und Weise reflektiert.
Diese Art und Weise hängt jetzt davon ab, wie genau ich sein will. Im einfachen Fall mache ich das ideal spiegelnde Modell. Ich kann aber auch eine komplexere BRDF benutzen, oder sogar eine BSSRDF. Hier wird die Reflexion anhand von Einfallswinkel, Ausfallwinklel udn sonstigen Eigenschaften beschrieben.
MfG Pellaeon
_________________ __________
"C++ is the best language for garbage collection principally because it creates less garbage." Bjarne Stroustrup
Vielen Dank euch beiden!
Ihr habt mir sehr geholfen!
Delphic hat geschrieben:
Aber wolltest Du nicht Photon-Mapping machen?
Ich hab am Anfang geglaubt Photon-Mapping ist genau das, was ich mir die ganze Zeit vorgestellt habe. Stellte sich jedoch dann als etwas ganz anderes heraus.
Zitat:
Dann sind wir in einer völlig anderen Situation. Nimm dir ein einzelnes Phaenomen heraus und schreibe dafür eine ganz Spezielle simulation und verwende alles was du an Formeln zur Verfügung hast, aber versuche lieber nicht das ganze mit einem Raytracer zu simulieren. Der ist da um Makroeffekte zu simulieren. Mikrokosmos ist da zu speziell Den Tracer kannst Du höchstens zum Anzeigen des Effektes gebrauchen. Du könntest deinen Physikalischen Effekt in eine Textur rendern und dann mit dem Tracer anzeigen...
Hm... wird wohl besser sein. Ich geh einmal auf die suche nach solchen Phänomenen.
Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste
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.