Myśląc o hybrydowym raytracingu, stąd następujące pytanie:
Załóżmy, że mam dwie solidne kule i . 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 dla niektórych pozytywnych . Sfery znajdują się poza płaszczyzną widoku i nie przecinają jej.
Pozwolić 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 jest widoczny, gdy jest rzutowany na naszą płaszczyznę widoku. Może nie być, jeśli lub całkowicie przeszkadzać.
Jakieś pomysły na to?
raytracing
3d
occlusion
okluzja
źródło
źródło
Odpowiedzi:
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:
Kule stają się okręgami z punktami środkowymiC1 i C2 , a okrąg przecięcia ma teraz tylko 2 punkty z tylko jednym bliższym P być 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 punkcieP pomiędzy E i C1 odpowiednio E i C2 są oba większe (lub równe) 90 stopni 1 .
GdybyP jest 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ądaP nie jest widoczne z E :
Możesz wyraźnie zobaczyć, jak ten punkt jest zasłonięty przez okrąg dookołaC2 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.
źródło