Schrompf hat geschrieben:Krishty hat geschrieben:Schrompf hat geschrieben:Das 1/d² gilt doch nur für Punktlichtquellen. Bei echten Lichtquellen mit Ausdehnung ist bei irgendnem d Schluss.
Öhm ... nein? Ein Photon hat kein Verfallsdatum; es bewegt sich so lange fort, bis irgendwas im Weg ist, das es stoppt.
Neee, sorry. Ich meinte damit "Man kann nicht beliebig nah an ne Lichtquelle ran". Das 1 / d² gilt in der echten Welt nur für den Fernbereich. Je näher man der Lichtquelle kommt, desto mehr wirkt deren Form. Und die einfachste Methode, das umzusetzen, wäre zum Beispiel ein 1 / max(d, 0.1)²
Ich denke, wie es eigentlich funktioniert ist ungefähr so (sollte man vermutlich nochmal mathematisch präzise durchrechnen):
Du hast eine Lichtquelle, die eine Gesamtenergie (wir wollen es nicht zeitlich aufgelöst betrachten, also ist die Einheit für Energie für uns Watt und nicht Joule) hat. Mal angenommen, sie verteilt diese Energie gleichmäßig in jede Richtung, wie hell (wie viel Energie bekommt es ab) ist dann ein Objekt? Man projiziert es auf die Hemisphäre der Lichtquelle und misst den
Raumwinkel. In anderen Worten, wenn das Objekt 10% vom Sichtfeld des Lichtest abdeckt, sollte auch 10% des Lichtes auf das Objekt fallen (wir nehmen ja an, dass jede Richtung gleichmäßig ist).
Wenn man jetzt die Perspektive rumdreht (was sinnvoll ist, aber ich weiß gerade nicht, wie man das mathematisch sauber legitimiert), kann man sich fragen: Wie viel Licht pro Fläche bekomme ich ab? Die Antwort ist: So viel wie die Lichtquelle groß aussieht. Wenn die Sonne (oder sagen wir die Hälfte von der Sonne, die ich sehen könnte) so groß ist, dass sie mein halbes Sichtfeld ausfüllt, fülle ich (in Näherung) auch die Hälfte ihres Sichtfeldes aus und bekomme die Hälfte ihrer Energie. Das schöne ist, dass man damit direkt auch noch Schatten erschlagen hat: Ist die Sonne verdeckt, ist der sichtbare Teil in mein Sichtfeld projiziert 0, ist die Sonne halb verdeckt (und ich bin im Halbschatten), ist die Lichtmenge halb so groß, als wäre sie überhaupt nicht verdeckt.
Wichtig ist aber vor allen Dingen, dass die Lichtquelle niemals mehr als 100% meines Sichtfeldes abdecken kann. Ein Objekt kann also niemals und unter gar keinen Umständen heller aussehen, als die Lichtquelle selber. Auch nicht, wenn es eine Lupe ist. An diesem Zeitpunkt könnte man eigentlich
diesen schönen Artikel lesen (es geht darum, ob man mit einer großen Lupe auch mit Mondlicht statt Sonnenlicht ein Feuer anzünden kann. Das Ergebnis geht sehr stark in die Richtung meiner Ausführungen).
Eigentlich müsste man dazu noch ein paar bunte Bilder malen. Mal sehen, ob ich darauf auch noch Lust habe. Und man müsste vor allen Dingen eine vernünftige Formel herleiten, mit der man es berechnen kann. Ich bin mir aber relativ sicher, dass es auf etwas wie 1/(d+x)^2 hinauslaufen wird, wobei x die Größe der Lichtquelle ist. Die Formel erscheint mir sinnvoll, weil sie auf weite Entfernung ungefähr quadratisch abnimmt, und auf kurze Entfernung langsam gegen ein Maximum konvergiert, was beides wichtige Eigenschaften sind, die man in der Natur beobachtet.
Wenn man jetzt die Idee mit dem projizieren auf Punktlichter anwendet, stellt man fest, dass man wieder mit 0en arbeitet und kein sinnvolles Ergebnis bekommt (die Lichtquelle sieht immer unendlich klein aus). Aber seien wir mal ehrlich, ein unendlich kleiner Punkt mit einer endlichen Energiemenge bedeutet eine unendliche Energiedichte und man will einfach keine unendliche Energiedichte in seiner Szene haben :D. Man hat also eigentlich immer nur sehr kleine Flächenlichter.
Noch was schönes: Flächen die schräg zur Lichtquelle stehen, sehen von der Lichtquelle aus kleiner aus und sind damit dunkler. Nach dem gleichen Prinzip strahlt eine flache Flächenlichtquelle nach unten die meiste Energie ab und zu den Seiten weniger (und das obwohl jeder Punkt auf ihr in jede Richtung leuchtet). Würde man sie einfach durch ein Array von Punktlichter simulieren, hätte man ein anderes (und falsches) Ergebnis.