Okluzja przecięcia sfery (do hybrydowego raytracingu)

9

Myśląc o hybrydowym raytracingu, stąd następujące pytanie:

Załóżmy, że mam dwie solidne kule s1 i s2. Znamy ich centra i promienie oraz wiemy, że mają one pewną nakładającą się objętość w przestrzeni.

Mamy typową konfigurację grafiki 3D: zakładamy, że oko jest u źródła, i rzutujemy sfery na płaszczyznę widoku w z=f dla niektórych pozytywnych f. Sfery znajdują się poza płaszczyzną widoku i nie przecinają jej.

Pozwolić c być okręgiem w przestrzeni, który jest punktami na powierzchni obu sfer, tj. widzialnym (pod pewnymi kątami) „łączeniem” ich nakładających się objętości.

Chcę obliczyć, czy którykolwiek cjest widoczny, gdy jest rzutowany na naszą płaszczyznę widoku. Może nie być, jeślis1 lub s2 całkowicie przeszkadzać.

Jakieś pomysły na to?

okluzja
źródło
jeśli c jest połączeniem rzutowanych pikseli, gdy s1 lub s2 całkowicie blokuje drugą sferę, nie oznacza to, że c się opróżnia. proszę o wyjaśnienie.
v.oddou

Odpowiedzi:

7

Biorąc pod uwagę, że niczego nie przeoczyłem, prawdopodobnie można to ograniczyć do problemu w przestrzeni 2D. Patrząc na płaszczyznę zdefiniowaną przez punkty środkowe kulek i początek kamery, scena wygląda następująco:

scena z widocznym przecięciem

Kule stają się okręgami z punktami środkowymi C1 i C2, a okrąg przecięcia ma teraz tylko 2 punkty z tylko jednym bliższym Pbyć interesującym. Kamera / oko jest dowolnie ustawione na punktE.

Obliczanie, czy jeden punkt na sferach jest widoczny, czy nie jest łatwe: po prostu sprawdź, czy kąty w punkcie P pomiędzy E i C1 odpowiednio E i C2są oba większe (lub równe) 90 stopni 1 .

Gdyby Pjest widoczna, widoczna jest część (np. przynajmniej ten punkt) okręgu przecięcia. W przeciwnym razie całe koło przecięcia musi zostać zasłonięte przez jedną z twoich sfer, mianowicie tę, która tworzy kąt mniejszy niż 90 stopni.

Oto jak to wygląda P nie jest widoczne z E:

wprowadź opis zdjęcia tutaj

Możesz wyraźnie zobaczyć, jak ten punkt jest zasłonięty przez okrąg dookoła C2 i że kąt pomiędzy E i C2 w P jest mniejszy niż 90 stopni.


1 Posiadanie kąta dokładnie 90 stopni oznacza, że ​​linia pomiędzyE i P po prostu dotyka odpowiedniego okręgu / kuli w punkcie P jako styczna.

Nero
źródło