Ray Tracing mit Kegeln: Abdeckung, Überlappung und Aneinandergrenzen von Dreiecken


10

John Amanatides beschreibt in seiner klassischen Arbeit Ray Tracing with Cones eine Variation der klassischen Ray Tracing. Indem das Konzept eines Strahls um einen Öffnungswinkel erweitert und zu einem Kegel gemacht wird, können Aliasing-Effekte (einschließlich solcher, die von zu wenigen Monte-Carlo-Proben stammen) reduziert werden.

Während des Kegel-Dreieck-Schnittpunkts wird ein skalarer Abdeckungswert berechnet. Dieser Wert repräsentiert den Bruchteil des Kegels, der vom Dreieck bedeckt ist. Wenn es kleiner als , bedeutet dies, dass das Dreieck den Kegel nicht vollständig bedeckt. Weitere Tests sind erforderlich. Ohne die Verwendung fortgeschrittener Techniken wissen wir jedoch nur, wie viel des Kegels bedeckt ist, nicht aber welche Teile.1

Amanatides sagt:

Da derzeit nur der Teildeckungswert zum Mischen der Beiträge der verschiedenen Objekte verwendet wird, werden überlappende Oberflächen korrekt berechnet, anliegende Oberflächen jedoch nicht.

Das ergibt für mich keinen Sinn. Aus meiner Sicht ist es umgekehrt. Nehmen wir ein Beispiel: Wir haben zwei angrenzende Dreiecke, ein grünes und ein blaues, von denen jedes genau 50% unseres Kegels bedeckt. Sie befinden sich in gleicher Entfernung vom Betrachter.

Grünes und blaues Dreieck

Das grüne Dreieck wird zuerst getestet. Es hat einen Abdeckungswert von 0,5, daher wird als nächstes das blaue Dreieck getestet. Mit dem Bedeckungswert des Blauen von 0,5 ist unser Kegel vollständig bedeckt, sodass wir fertig sind und eine grün-blaue Mischung von 50:50 erhalten. Groß!

Stellen Sie sich nun vor, wir töten das blaue Dreieck und fügen ein rotes Dreieck in einiger Entfernung hinter dem grünen hinzu - überlappend . Greeny gibt uns wieder einen Deckungswert von 0,5. Da wir den blauen nicht mehr zum Testen haben, schauen wir weiter den Kegel hinunter und finden bald den roten. Auch dies gibt einen Abdeckungswert größer als 0 zurück, was nicht der Fall sein sollte, da er hinter dem grünen Wert liegt .

Daraus schließe ich, dass angrenzende Dreiecke gut funktionieren, während überlappende Dreiecke etwas mehr Magie wie Abdeckungsmasken benötigen würden, um korrekt zu sein. Dies ist das Gegenteil von dem, was Amanatides sagt. Habe ich etwas falsch verstanden oder ist das ein Fehler in der Zeitung?

Antworten:


3

Ich habe einen Ray Tracer implementiert, der auf Amantides 'Arbeit basiert, aber wie vor Jahren ist meine Erinnerung an das Papier ein wenig verrostet.

Wenn ich diesen speziellen Fall jedoch im Allgemeinen ignoriere, wenn ich mit fraktionierter Abdeckung arbeite, z. B. Alpha-Compositing (siehe "A über B" ), gehe ich davon aus, dass die übliche Annahme darin besteht, dass die zusammengesetzten Elemente nicht korreliert sind.

Wenn also A mit X% Deckung über B mit Y% Deckung und C im Hintergrund liegt, wird angenommen, dass
X% * ​​A + (100-X%) * Y% * B + (100-X) angezeigt wird %) (100-Y%) * C.

Ist das sinnvoll? Offensichtlich führt dies zu "Lecks" in dem Fall, in dem A und B stark korreliert sind.

Ich glaube, ich hätte vielleicht eine kleine Maske auf die Strahlen gelegt, um diese Probleme zu vermeiden, aber es ist sehr lange her.


Mit dieser Erklärung macht es total Sinn, danke! Wenn Sie sich erinnern, wie war Ihre Erfahrung mit der Kegelverfolgung im Vergleich zur normalen Strahlverfolgung? Natürlich ist es eine Annäherung, aber erreicht es eine beträchtliche Beschleunigung bei akzeptabler Qualität?
David Kuri

Oh mein Gott, es ist lange her. Eigentlich habe ich nur die Kegelverfolgung implementiert. Ob ich tatsächlich versucht habe, den Radius-Teil auszuschalten, kann ich mich einfach nicht erinnern, aber wenn ich Zeit habe, werde ich versuchen, mich an die Vor- und Nachteile des Weges der Kegelverfolgung zu erinnern.
Simon F
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.