So nun möchte ich euch mit einen paar Wunderschönen Fragen belästigen:
Ich arbeite z.Z. an einem größerem Projekt, wobei der Release in 2 Jahren sein soll, im Moment findet sich das Projekt in der Anfangsphase b.z.w. der Planungsphase!
Da es wie gesagt noch in der Planungsphase ist( bis auf ein paar geschriebene Header ), brauche ich Informationen.
So:
1.) Soweit ich weiss Eignet sich Photon-Mapping nicht für Outdoorlevel richtig( Die Lightingmethode fände ich eigentlich Ideal )?
2.) Könntet, falls ihr welche wisst( Sollt sie nicht Suchen( dürft aber ) ) mir ein paar Links zu dem Thema geben( Theorie & Umsetzung( Kann auch in einer anderen Sprache sein ) ), insbesonderst bin ich an HDR und Photon Mapping interresiert, falls es noch andere gute Lightningmethoden gibt die gut aussehen wäre ich auch dran interresiert.
Noch was: ich bin an der allgemeinen Theorie interresiert, ich habe keine Lust( Und Zeit ), mit durch herumpfuschen die Theorie der Effektpalleten selber herzuleiten!
Hoffe ich habe mich klar ausgedrückt!
mfg
Speedmaster
_________________ Shareholder und Leitender Entwickler bei Pipedream-Games.
Zitat: Siehst du diesen Park da unten? Jeden Tag lernen sich darin Menschen kennen und verlassen einander. Und du hast dein ganzes Leben Zeit darin zu gehen.
_________________ Shareholder und Leitender Entwickler bei Pipedream-Games.
Zitat: Siehst du diesen Park da unten? Jeden Tag lernen sich darin Menschen kennen und verlassen einander. Und du hast dein ganzes Leben Zeit darin zu gehen.
Ergebnisse 1 - 10 von ungefähr 289.000 für Photon Mapping. (0,05 Sekunden)
Ergebnisse 1 - 10 von ungefähr 7.740.000 für High Dynamic Range Lighting. (0,32 Sekunden)
Das ist der Grund weshalb es ein bischen schwer ist an Informationen zu kommen!
_________________ Shareholder und Leitender Entwickler bei Pipedream-Games.
Zitat: Siehst du diesen Park da unten? Jeden Tag lernen sich darin Menschen kennen und verlassen einander. Und du hast dein ganzes Leben Zeit darin zu gehen.
Ich hab zwar 0 Erfahrung mit Photonmapping und auch nicht wirklich viel Ahnung, aber da die anderen wohl nicht viel mehr Ahnung haben, werde ich einfach mal meinen Senf dazu geben:
Soweit ich weiß, wird beim Photonmapping so ziemlich das simuliert, was in echt mit den Photonen passiert - zummindest, wenn man mal Licht als Strahl sieht...
Man hat ne Lichtquelle, und schickt von der aus zufällig Strahlen in alle Richtungen. Wenn die dann auf irgendwelche Faces fallen, dann wird das Lightmap an der Stelle ein wenig aufgehellt (abhängig von Winkel, Distanz, ...) und es werden neue Strahlen von den Stellen ausgesand, die dann etwas dunkler sind. Das wiederholt man dann so lange, bis die Strahlen so dunkel, sind, dass man sie vernachlässigen kann.
Ich würde mir ne Q3 Map nehmen (da sind die Lightmaps bereits drin, die kannste dann überschreiben, und n BSP-Tree ist auch schon da) und es ausprobieren - aber dass willst du ja nicht...
Zitat:
ich habe keine Lust( Und Zeit ), mit durch herumpfuschen die Theorie der Effektpalleten selber herzuleiten!
Wo du von Zeit redest: Könnte mir vorstellen, dass das für Outdoorlevel scheiße lange dauert, da die normalerweise riesen groß sind, und du nicht nur ne Sonne, sondern auch nen blauen Himmel hast...
N weiteres Problem ist, dass du bei Lightmaps kein Bumpmapping hast...
_________________ [18:30] tomok: so wie ich das sehe : alles. was nich was anderes ist als nen Essay ist nen Essay
hi, i'm a signature viruz, plz set me as your signature and help me spread
Registriert: So Sep 26, 2004 05:57 Beiträge: 190 Wohnort: Linz
Obwohl der Thread schon etwas älter ist, möcht ich jetzt auch noch das ein oder andere Wort darüber verlieren. Lichtberechnungen sind zwar nicht unbedingt meine Stärke, aber das ein oder andere hab ich aus der Computergrafik Vorlesung doch mit genommen.
Also die nicht Echtzeit Beleuchtungsverfahren die wir durchgenommen haben waren Raytracing (obwohl es da mehr ums Rendern geht hängt es auch sehr stark mit Beleuchtungsmethoden zusammen), Radiosity und auch kurz Photon Rendering.
Alle 3 Methoden haben ihre Haupt-Stärke darin, dass sie die Reflektionen von allgemeinen Materialien mit in die Lichtberechnung einbeziehen. Dies wird bei OGL üblicherweise durch den Ambient Wert erreicht, was im Endeffekt bedeutet: Ein gewisser Prozentteil der Photonen verirrt sich überall hin. Bei Landschaften (ich sage bewusst nicht Outdoor, denn Outdoor beinhaltet auch viele viele andere Objekte) spielt dies jedoch verhältnismäßig wenig Rolle, da sie üblicherweise eher flach sind, wodurch üblicherweise eher wenig Licht auf die anderen Landschaftsbereiche reflektiert wird (das meiste wird zurück nach oben reflektiert). Erst wenn die Sonne einen sehr sehr flachen Einfallswinkel hat, könnte ich mir vorstellen, dass derartige Methoden Ergebnisse erzielen die ziemlich geil ausschauen (im Verhältnis zu Echtzeit Sachen).
Du hast recht damit das Photon Mapping der einen Seite der Realität am ehesten Entspricht. Der einen Seite sage ich deshalb, weil der Betrachter dabei üblicherweise weniger Rolle spielt, es sei denn du willst nur ein einziges Bild (bzw. aus einer einzige Perspektive) berechnen. Du kannst dir das vorstellen wie einen umgekehrten Raytracer, also wo die Strahlen nicht durch die Pixel des Bildschirms (oder allgemein der Near Plane der View Frustum) geschossen werden, sondern von allen Lichtern entspringen. Physikalisch ist es ja so, das Photonen auf einer "ebenen" Fläche mit einer gewissen Wahrscheinlichkeit in eine gewisse Richtung zu einem gewissen Prozentteil reflektiert werden (glaub ich halt, wenns nicht ganz der Wahrheit entspricht, so kann man sich das auf alle Fälle etwa so vorstellen :-) ). Und bei dieser Wahrscheinlichkeit stoßen wir auch schon auf eines der Haupt-Probleme bei Lichtberechnungen über Photonen. Üblicherweise wird diese Reflektion beim Photon Mapping durch einen Zufallswert mit einer gewissen Zufallsfunktion (unter Beachtung des Einfallswinkels und natürlich auch des Materials) bestimmt. Möglich wäre es auch mehrere "schwächere" Photonen von einem Punkt aus zu reflektieren. Mit schwächer meine ich jetzt, dass es für die Simulation möglich wäre, gleich 1000 Photonen auf die Reise in die selbe Richtung zu schicken, am ersten Punkt wo ich auftreffe schicke ich dann in 10 unterschiedlichen Reflektionswinkeln jeweils 100 weiter usw. und so fort.
Da wir aber nicht "unendlich" viele Photonen auf die Reise schicken können, dürfte es nicht verwunderlich sein, dass man verschiedene Annahmen treffen muss. Und zwar sagt man das ein Photon welches auf einem Punkt mit einem gewissen Einfallswinkel auftrifft zu einen gewissen Prozentteil diesen Punkt beleuchtet. Da ein einzelner Punkt aber "unendlich" klein ist, muss natürlich noch ein gewisser Radius für diesen Punkt gewählt werden. Und hier kommt die Anzahl der Photonen die man auf die Reise schickt zum tragen, denn je weniger man verwendet, umso größer muss natürlich dieser Radius sein, und um so größer muss der Einfluss eines einzelnen Photons sein.
Realistisch betrachtet würde es ja noch weiter gehen mit:
Ein Punkt hat keine Helligkeit, sondern nur Photonen die er weiter schickt, und erst wenn ein Photon zum Auge kommt (auf die Near Plane der Frustum unter einem bestimmten Winkel eintrifft) dann sieht man diesen Farbwert an der entsprechenden Position. Und da dies etwas sehr sehr sehr viele Photonen erfordern würde, kann man nun die Unterscheidung treffen zwischen einem Bild welches nur aus einer bestimmten Perspektive gerendert wird und einem Bild was für alle Perspektiven halbwegs brauchbar sein soll. Oder um es anders zu sagen: Ob der specular Wert den wir vom OpenGL Lighting kennen in die Berechnung des Prozentteils der Helligkeit den ein Photon auf einem bestimmten Punkt hinterlässt mit einbezogen werden soll oder nicht.
Und nun noch kurz zu den Stärken:
Die Stärke von Photon Mapping liegt darin, dass du beispielsweise in einem Raum ein bisschen was siehst wenn nur durch einen Türspalt Licht herein kommt. Wenn du genug Photonen aussendest, findet ein gewisser Prozentteil den Weg durch den Türspalt, und wenn du die Reflektionen oft genug durchführst (irgendwann muss schluss sein) dann erhältst du von diesem Prozentteil auch ein klein wenig Licht in dem Raum.
Die Schwäche sollte offensichtlich sein:
Wenn du nicht sehr sehr viele Photonen für jedes Licht aussendest, dann erhältst du nicht mal annehmbare Ergebnisse. Und um nun den Vergleich anzubringen: Wenn du bei einer Physikengine jedes Molekül oder sogar Atom simulierst, dann ist das ja schön und gut. Um jedoch eine größere Welt zu simulieren musst du sagen, dass nur jedes Millionste (oder so) Molekül simuliert wird, und dann stellt sich die Frage ob du damit bessere Ergebnisse erzielen würdest, als wenn du mit "einfachen" Newtonschen Formeln ein bisschen größere Objekte simulierst.
Nun zum Radiosity Zeugs:
Beim Radiosity Rendering / Mapping zerlegst du deine Welt in viele eher kleine 2D-Bereiche (Dreiecke oder Rechtecke dürften sich wohl am besten eignen). Nun berechnest du wie viel Einfluss ein Bereich auf jeden anderen Bereich hat. Bei dieser Berechnung solltest du natürlich Schatten von anderen Bereichen, Winkel, Größe, Materialeigenschaften und dergleichen zwischen 2 Bereichen mit einfließen lassen. Dadurch erhältst du dann eine riesige Matrix. Nun setzt du für jedes Licht die Bereiche die direkt beleuchtet werden und rechnest dann mit dieser Matrix die Beleuchtung der anderen aus. Das ist dann im Endeffekt ein ziemlich ziemlich großes lineares Gleichungssystem welches es zu lösen gilt.
Der Vorteil daran ist, dass ein Raum halbwegs realistisch beleuchtet wird, auch wenn einige Bereiche im Schatten liegen.
Der Raum hinter dem Türspalt wird beim Radiosity Mapping jedoch auch eher weniger beachtet, und die Position des Betrachters ist dem Radiosity Zeugs natürlich auch komplett egal, obwohl wahrscheinlich schon irgendwer mal eine Methode entwickelt hat um ein einziges Bild schöner zu Rendern. Glas und dergleichen, also wo du Reflexionen und Beugungen in alle möglichen Richtungen hast ist natürlich damit auch nicht sonderlich gut zu machen.
Nebenbei bemerkt müsste das meines Wissens nach die Methode sein, die für die Quake Lightmaps verwendet wird.
Und nun noch kurz zum Raytracing:
Beim Raytracing gibt es ja viele viele Möglichkeiten wie man das besser, schneller, schöner oder anders machen könnte. Normalerweise hast du hier für ein Bild eine statisch beleuchtete Szene (womit diese Beleuchtung berechnet wurde ist mal mehr egal). Umgekehrt zum Photon Rendering könntest du hier theoretisch für einen Punkt auf einem ganz allgemeinen Material den Ray in viele neue Aufteilen und alle (oder besser gesagt viele :-) ) möglichen Lichteinfallswinkel weiterverfolgen, bis du eine Lichtquelle erreichst. Dies wäre dann das optimale, realistischste, umgekehrte Photon Rendering.
Da man dies üblicherweise nicht, oder nur sehr sehr begrenzt macht, ist das Raytracing auch nur begrenzt für realistische Beleuchtung geeignet.
Photon Rendering und Raytracing sind also in gewisser Weise genau das selbe, fangen jedoch vom gegenüberliegenden Ende an. Beide vereint könnten unter gewissen Umständen wahrscheinlich die besten Ergebnisse erzielen. Eines der größeren Probleme dabei dürfte wohl sein, dass sich diese beiden Herangehensweisen teils überschneiden.
Im Endeffekt liegt der Hauptvorteil sowohl beim Raytracing, als auch beim Photon Mapping darin, dass man Lichtbrechungen und dergleichen besser simulieren kann als bei anderen Methoden.
Da das ganze schon etwas länger her ist, weiß ich nicht ob das alles so ganz genau den Tatsachen entspricht, und von der Physik dahinter hab ich kaum eine Ahnung. Aber so ungefähr dürfte es schon passen ... hoffe ich. Natürlich sind es nur die Prinzipien die aus Software-Sicht dahinter stehen, die physikalisch korrektesten Formeln musst du dir noch zusammen suchen wenn sich nicht noch jemand findet der da mehr Ahnung hat.
Also im Endeffekt denke ich, dass für Outdoor Radiosity Mapping am besten geeignet wäre wenn du es auf Fotorealismus anlegst.
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Da wir das gerade in ComputerGrafik behandeln hier kurz ne Meinung:
Raytracing wird verwendet um Spekulares Licht, Lichtbrechung etc. zu simulieren. Also All die Sachen bei denen der Weg des Lichtes Wichtig ist. Dass heißt damit auch, dass Schatten automatisch mit dabei sind. Allerdings fehlt hierbei der Diffuse Anteil und der wird meist mit weniger aufwändigen Verfahren hinzugefügt (bevor Raytracing gemacht wird), weil sonst dem Betrachter ein Bart gewachsen ist...
Radiosity beschäftigt sich mit ideal diffusen Reflektionen. Bei Radiosity wird der Einfluss von Flächen auf andere Flächen berechnet. Also wieviel Licht geht von Fläche A auf Fläche B über. Das nette dabei ist, dass in der Radiositygleichung Schatten ebenfalls mit enthalten sind. Glanzlichter und Refraktion gibt es allerdings nicht.
Beide Verfahren stellen keine Möglichkeit der Berechnung von diffusen Transluzenz zur Verfügung. (Lichtausbreitung innerhalb von Materialien) Wobei sowas dann meistens mit selbstleuchtenden Materialien umgangen wird.
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Sehr schöne beiträge, HDR ist ja soweit ich weiss nur die überbeleuchteten Effekte( Also damit meine ich Glow Effekte u.s.w. ), und weniger eine Relalistische Darstellung.
Bei Photon Mapping habe ich bisher halt die Bedenken das das nicht mal mit dem Cell Prozessor zu einer vernünftigen FPS Rate führen würde, selbst wenn man die eigenliche Richtung der Photonen vor berechnet( Im moment dauert es immer noch bis zu mehreren Tagen oder Stunden, je nach Genauigkeit der Berechnung, das Lightnign zu berechnen ), besonderst da ich einen Real Zeit Tagesablauf haben möchte, sprich eine Stunde ist im Spiel eine Stunde!
Spontan viel mir eben ein das man das licht vielleicht in mehr Stufen berechen könnte( In einem Thread ), und je nach Prozessorspeed die Schattenveränderung schneller oder langsamer abläuft!
_________________ Shareholder und Leitender Entwickler bei Pipedream-Games.
Zitat: Siehst du diesen Park da unten? Jeden Tag lernen sich darin Menschen kennen und verlassen einander. Und du hast dein ganzes Leben Zeit darin zu gehen.
Single precision floating point computation is geared for throughput of media and 3D graphics objects. In this vein, the decision to support only a subset of IEEE floating point arithmetic and sacrifice full IEEE compliance was driven by the target applications. Thus, multiple rounding modes and IEEE-compliant exceptions are typically unimportant for these workloads, and are not supported.
Wenn ich bei meinem kleinen Raytracer auf single waechsle bekomme ich deutlich sichtbare Artefakte.
Also ich habe in der Zeitschrift wo D2005PE drin war, das sich der Cell Prozessor genau für solche Dinge eignet( Spiele )!
Photonmapping wäre Theoretisch ja im Vorraus berechenbar! Bei mir Liegt das Problem darin das ich eben Dynamische Wettereffekte haben will( Auch Tag und Nacht ), das führt halt zu erheblichen Problemen bei der Statischen Berechnung!
_________________ Shareholder und Leitender Entwickler bei Pipedream-Games.
Zitat: Siehst du diesen Park da unten? Jeden Tag lernen sich darin Menschen kennen und verlassen einander. Und du hast dein ganzes Leben Zeit darin zu gehen.
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Solcherlei Lichtberechnungen kannst du dir aus dem Kopf schlagen in Sachen echtzeit. Versuchs in 10 Jahren nochmal.
Mal ehrlich: Spiele wie z.B. WoW sind nicht mit solchen Techniken ausgeleuchtet. Sowas wird verwendet, wenn höchste Qualität/Realismus gebraucht wird, und Zeit keine Rolle spielt.
Wenn du Wolkenschatten auf Landschaften haben willst, solltest du z.B. mal Projektive Texturen/Schatten ausprobieren. Ansonsten wirst du wohl aus Speed gründen mit Phong vorlieb nehmen müssen.
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2623 Wohnort: Berlin
Programmiersprache: Go, C/C++
Ich denke in dem umfang wie du es dir wünscht wird es momentan wirklich nicht realisierbar sein aber es gibt immer Alternativen.
Meine Idee wäre hier aufgrund von der Zeitdauer einer tag/nacht wechsel berechnungen in intervallen zu machen, also nicht jeden Frame.
Bei einer gut detailierter Map könnte man vertexcolor verwenden und die vertexfarben per raytracing errechnen.
Ich kann mich an eine Nvidia und ATI demo erinnern die light scattering auf ein terrain anwendet und sehr eindrucksvolle ergebnisse lieferte. Natürlich kannst du auch einfach versuchen raus zubekommen wie es z.B. STALKER macht da in der überarbeiteten x-ray Engine auch unterschiedlichste wetterverhältnisse realisiert wurde.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Die idee mit dem überlaufen hatte ich auch schon, wollte dann eigentlich, das per Frame blenden.
Aber man kann dann im Falle das sich Obekte verändern diese Änderungen nicht Anzeigen.
Was mir einfiel war das man Theoretisch für jedes Objekt im Zusammenhang zur Welt eine Lichtberechnung durchführt, und im Falle das sich das Objekt ändert, nur dieses Objekt neu berechnet, wobei man die fertigen Lightwerte der Welt bekommt!
---
Edit: Habe mir "Light scattering" Angeschaut, die Ergebnisse bei Terrain gefielen mir nicht so sonderlich!
_________________ Shareholder und Leitender Entwickler bei Pipedream-Games.
Zitat: Siehst du diesen Park da unten? Jeden Tag lernen sich darin Menschen kennen und verlassen einander. Und du hast dein ganzes Leben Zeit darin zu gehen.
Mitglieder in diesem Forum: 0 Mitglieder und 5 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.