Von greenhybrid - Freitag, 15. September 2006 um 21:04

Willkommen in Monte Carlo!

Gestern habe ich etwas Zeit gefunden um Spiegelungen nach dem Phong-Modell einzubauen.

Die Bilder zeigen sculpture und dragon mit 100 Prozent reflektierendem Material (aber weichen und unscharfen Reflektionen) und einigen zusätzlichen (auch spiegelnden) Objekten, mit unterschiedlichen Oberfächen-Eigenschaften.

Die letzten Renderings haben gezeigt, dass mit Importance-Sampling bei 400 Samples pro Pixel und bei einer Auflösung von 640x480 in der gegebenen Szene keine Bild-Rauschen mehr vorhanden ist. Die Renderzeit betrug ungefähr 35-45 Minuten bei einer maximalen Path-Länge von drei.

Weil damit zu rechnen ist dass developia das Bild mal wieder richtig schön verhunzt: Die Originale gibt es auf meiner Seite:

http://de.greenhybrid.net

Zum Bewerten musst du registriert und angemeldet sein.
1. Von fimbo_ am Samstag, 16. September 2006 um 04:25:

sind beeindruckend deine bilder, vorallem die unscharfen reflexionen, bei heutigem stand der technik müsste diese bildqualität aber schon mit ein paar tricks und preprocessings nahezu in echtzueit zu erreichen sein, schau dir mal ein paar realtime raytracer an, da in cpu raytracern eigentlich schon alles erreicht ist was zu erreichen ist.

Als Beispiel mal mein (zugeben sehr simpler) Realtime GPU Raytracer: http://www.surface.at/wiki/index.php/GPU_Realtime_Raytracer



Zum Bewerten musst du registriert und angemeldet sein.
2. Von greenhybrid am Samstag, 16. September 2006 um 22:57:

Danke erstmal für das Kompliment!

Genau deswegen, weil ich keine Tricks benutze (die oft auch 'dirty tricks' [a la Photon Mapping oder ebenb besagtes Preprocessing mit z.B. via Open GL] genannt werden und oft [nicht immer] bei genauem Hinsehen unrealistische Artefakte aufweisen), sondern einen Ray Tracer schreibe, der die Lösung der Render-Gleichung sehr gut ohne Bias approximmiert (siehe Kayija Paper 'The Rendering Equation') ist das obige Ergebnis kaum in Echtzeit möglich. Ausserdem kenne ich keinen Trick, der das Gesamt-Ergebnis nicht mit Bias versehen würde.

Ich kenne genug Echtzeit-Ray-Tracer ( http://ompf.org/forum, z.B. Jacco Bikkers Ray Tracer oder Thierry Berger Perrins' radius ). Ich sehe in deinem Ray Tracer auch keine globale Beleuchtung (das ist nämlich der Punkt: mein Tracer kommt ohne Ambient-Lighting a la Direct3D aus, sondern das gesamte Ergebnis [übrigens durch Path-Tracing] ist das Resultat vieler Milliarden simulierter Lichtstrahlen, und sprich vieler Milliarden Schnittpunktberechnungen (mein Tracer ist nicht sonderlich schnell, 0.1M Rays/sec.) Sollte ich mich irren, zeige mir bitte ein Bild deines Tracers mit echter indirekter Beleuchtung und Color-Bleeding.

Nimm mir bitte meine Kritik nicht böse, ich äußere lediglich meine Meinung (so soll es ja auch sein, denke ich) :D

Gruss, hybrid



Zum Bewerten musst du registriert und angemeldet sein.
3. Von Lionheart am Sonntag, 17. September 2006 um 19:51:

Hi,

Warum verzerren eigentlich die weißen Kugeln so deutlich, je näher sie am oberen Bildschirmrand kommen? Diese wirken eher platt, während die unteren ründliche wirken.

Gruß Thomas



Zum Bewerten musst du registriert und angemeldet sein.
4. Von greenhybrid am Sonntag, 17. September 2006 um 20:19:

Hallo,

das liegt daran, dass ich mathematisch die gleiche Projektion wie z.B. Direct3D verwende statt ein richtiges Kamera-Modell. Wählt man in Direct3D eine extreme Field-Of-View-Einstellung wird dieser Effekt auch hier sehr deutlich.

Gruß,

Sebastian



Zum Bewerten musst du registriert und angemeldet sein.
5. Von TGGC am Montag, 18. September 2006 um 11:15:

Hui, das hab ich gleich in der kleinen Vorschau wieder erkannt, gab ja schon viele Bilder deiner Raytracer hier zu sehen! Interessante Experimente, die du da machst.

Ich habe allerdings bemerkt, das dein Drache etwas "flatshaded" aussieht. Kannst du da nichts mit interpolierten Normalen machen, das waer doch grad der Witz bei Phong? Oder ist dein Drachen-Model, wie mein Kollege meint, einfach zu schlecht?



Zum Bewerten musst du registriert und angemeldet sein.
6. Von greenhybrid am Montag, 18. September 2006 um 13:38:

Stimmt, ist flat-shaded. Allerdings ist das in den obigen Bildern nicht zu sehen, der Drache besteht aus ca. 0,2M Dreiecken wenn ich mich richtig erinnere, also aus mehr Dreiecken die Maps in den meisten 1st-Person-Shootern. Was ihr als flat-shaded erkennt ist vermutlich die schuppige 'Haut' des Drachens, deren Struktur man erst bei seeeehr genauem Hinsehen erkennt. Schade das hier die Bilder so sehr verkleinert werden.



Zum Bewerten musst du registriert und angemeldet sein.
7. Von greenhybrid am Montag, 18. September 2006 um 16:27:

Habe noch einmal nachgedacht über die interpolierten Normalen (hab wohl schneller geschrieben als gedacht, sry)

A: es ist kein Flat-Shading

B: Interpolation nicht möglich mit globaler Beleuchtung ...

... denn: würde Bias vom feinsten verursachen, vor allem beim Metropolis-Light-Transport (ich zitiere einige Programmierer, wenn ich sage Metropolis is "a hell to debug").

Als Beispiel nehme ich Eric Veach's PhD Thesis, Kapitel 5.2 "non-symmetry due to shading normals": Stellt man sich einen Partikel-Tracer vor, so stossen die Partikel nicht an die durch die interpolierte Normale simulierte Oberfäche, sondern an die physikalisch vorhandene. Diese ist meist kleiner oder größer als die durch die interpolierten Normalen simulierte Fläche, hat also pro Flächeneinheit einen größeren oder kleineren Energiegehalt, also eine falsche Beleuchtung.

Ich will jetzt nicht zu weit ausholen, aber einmal verstanden springt es einem geradezu ins Gesicht.

Durch die Verwendung deiner Normalen wird also die ganze Beleuchtung unrealistisch, kurz zusammengefasst, weil die physikalische Fläche der Szene nicht mit der virtuellen kooperiert.



Zum Bewerten musst du registriert und angemeldet sein.
8. Von fimbo_ am Donnerstag, 21. September 2006 um 00:18:

zu der Interpolationsgeschichte: klar hat die Oberfläche dann einen größeren oder kleinern Energiegehalt, muss sie ja auch, du willst ja keine eckicke form sondern eine runde und wenn diese dann einen angepassten energiegehalt hat ist das sicher richtiger als mit einem eckicken drachen einen runden darzustellen, vorrausgestzt du willst einen runden haben, wobei natürlich klar ist dass mit einem Objekt mit extrem hoher Polygonauflösung die besten Werte erzielt werden können, genau das soll aber umgangen werden, siehe subdividing Methoden

was mir noch auffällt was dein "Bias" noch erheblich verschlechtert ist der Hardshadow, wenn du schon so auf Realismus herumreitest dann besser das bitte nach :-) Es ist deutlich zu erkennen dass die Lichtquelle nicht unendlich klein ist (siehe spiegelnte Kugeln, wobei das mit viel Fantasie auch mit diffuser spiegelung erklärbar wäre, trotzdem sind diese lichtquellen in Natura nicht existent)

freue mich auf weitere Bilder



Zum Bewerten musst du registriert und angemeldet sein.
9. Von greenhybrid am Freitag, 22. September 2006 um 08:28:

Dann musst du aber auch die Intersections anpassen, die nicht mehr auf den Dreiecken selbst liegen dürfen sondern auf der simulierten Oberfläche >> E. Veach, Thesis, Kapitel 5.2

zum Hardshadow: richtig, ist noch in Arbeit. Ich verwende zwei Phong-Algorithmen, einmal für die Spiegelungen, einmal für die Beleuchtung. In der Tat wird die Kugel-Leuchtquelle noch als Punktlichtquelle gehandhabt, hat aber einen nicht unendlich kleinen Körper. (Bias brauchst du übrigens nicht in Anführungsstiche zu setzen, ist keine Erfindung von mir)

Gruß,

hybrid



Zum Bewerten musst du registriert und angemeldet sein.
Kommentartext:
Zum Kommentieren musst du registriert und angemeldet sein.