Ray Tracing ze stożkami: pokrycie, nakładanie się i przyleganie trójkątów

10

W swojej klasycznej pracy Ray Tracing with Cones John Amanatides opisuje odmianę klasycznego ray tracingu. Rozszerzając pojęcie promienia o kąt apertury , czyniąc go stożkiem, efekty aliasingu (w tym te pochodzące ze zbyt małej liczby próbek Monte Carlo) można zmniejszyć.

Podczas przecięcia stożek-trójkąt obliczana jest wartość pokrycia skalarnego. Ta wartość reprezentuje ułamek stożka objęty trójkątem. Jeśli jest mniejsza niż , oznacza to, że trójkąt nie całkowicie pokrywa stożek. Wymagane są dalsze testy. Jednak bez użycia bardziej zaawansowanych technik wiemy tylko, ile stożka jest przykryte, ale nie wiemy, które części.1

Amanatydy stwierdza:

Ponieważ obecnie do mieszania wkładów różnych obiektów wykorzystywana jest tylko wartość pokrycia ułamkowego, pokrywające się powierzchnie zostaną obliczone poprawnie, ale nie przylegają do nich powierzchnie przylegające.

To nie ma dla mnie sensu. Z mojego punktu widzenia jest na odwrót. Weźmy przykład: mamy dwa przylegające trójkąty, zielony i niebieski, z których każdy pokrywa dokładnie 50% naszego stożka. Są w tej samej odległości od widza.

Trójkąt zielony i niebieski

Najpierw testowany jest zielony trójkąt. Ma wartość pokrycia 0,5, więc niebieski trójkąt jest następnie testowany. Przy wartości pokrycia niebieskiego wynoszącej 0,5 nasz stożek jest w pełni pokryty, więc skończyliśmy i otrzymujemy mieszaninę 50:50 zielono-niebieską. Świetny!

Teraz wyobraź sobie, że zabijamy niebieski trójkąt i dodajemy czerwony w pewnej odległości za zielonym - nakładając się . Greeny ponownie daje nam wartość pokrycia 0,5. Ponieważ nie mamy już niebieskiego do przetestowania, patrzymy dalej w dół stożka i wkrótce znajdujemy czerwony. To także zwraca pewną wartość pokrycia większą niż 0, czego nie powinno, ponieważ znajduje się za zieloną.

Na tej podstawie dochodzę do wniosku, że przylegające trójkąty działają dobrze, podczas gdy nakładające się trójkąty będą wymagały trochę więcej magii, jak maski zasięgu, aby były prawidłowe. Jest to przeciwieństwo tego, co mówi Amanatides. Czy coś źle zrozumiałem, czy jest to błąd w pracy?

David Kuri
źródło

Odpowiedzi:

3

Wdrożyłem ray tracer oparty na pracy Amantidesa, ale jak to było lata temu, moja pamięć tego papieru jest trochę zardzewiała.

Jednak ignorując ten szczególny przypadek, ogólnie jeśli chodzi o pracę z pokryciem ułamkowym, np. Kompozycją alfa, (patrz „A powyżej B” ), rozumiem, że zwykle zakłada się, że komponowane elementy są nieskorelowane.

Zatem jeśli A z pokryciem X% znajduje się nad B z pokryciem Y%, a C w tle, zakłada się, że zobaczysz
X% * ​​A + (100-X%) * Y% * B + (100-X %) (100-Y%) * C

Czy to ma sens? Oczywiście da to „przecieki” w przypadku, gdy A i B są silnie skorelowane.

Wydaje mi się, że mogłem nałożyć niewielką maskę na promienie, aby uniknąć tych problemów, ale to było bardzo dawno temu.

Simon F.
źródło
Dzięki temu wyjaśnieniu ma to sens, dziękuję! Jeśli pamiętasz, jak wyglądało twoje doświadczenie ze śledzeniem stożka w porównaniu do normalnego śledzenia promieni? Oczywiście jest to przybliżenie, ale czy osiąga znaczne przyspieszenie przy akceptowalnej jakości?
David Kuri,
O rany, to było dawno temu. Właściwie zaimplementowałem tylko śledzenie stożka. Czy rzeczywiście próbowałem wyłączyć część promienia, po prostu nie pamiętam, ale jeśli będę miał czas, postaram się zapamiętać zalety i wady zejścia drogą śledzenia stożka.
Simon F