Raytracing: dlaczego kule na poniższym obrazie wydają się rozciągnięte?

8

wprowadź opis zdjęcia tutaj wprowadź opis zdjęcia tutaj

Trochę kontekstu. Powyżej znajduje się kod i obraz wynikowy w Raytracing Petera Shirleya w książce z jednego weekendu. Jak widać z kodu, dodaje kilka sfer. A jednak na ostatecznym zdjęciu są obok siebie 2 elipsoidy. Nie mogę pojąć, dlaczego tak jest, bez względu na to, ile razy patrzyłem na kod. Czy ktoś może mi wyjaśnić? Oto link do kodu źródłowego. https://github.com/petershirley/raytracinginoneweekend

Manh Nguyen
źródło
2
Wygląda to normalnie i jest spowodowane tym, że kamera perspektywiczna znajduje się blisko sfer i ma dużą wartość pola widzenia.
PaulHK,
Przy okazji, nie dotyczy to wyłącznie ray tracingu.
Sebastian Mach

Odpowiedzi:

16

Pojawiające się na obrzeżach kształty są konsekwencją rzutowania perspektywicznego. Im szersze pole widzenia (FOV), tym silniejszy efekt rozciągania.

Aby zademonstrować efekt, napisałem szybki przykład na ShaderToy: https://www.shadertoy.com/view/MltBW2

Jak widać na poniższych zdjęciach (odpowiadających FOV 40, 80 i 120; jeśli się nie pomyliłem), staje się to szczególnie zauważalne przy szerokich FOV, takich jak 90 ° i więcej.

FOV 40 ° FOV 80 ° FOV 120 °

Julien Guertault
źródło
Niezły przykład. Może jednak pomóc mieć jakąś teksturę (np. Siatkę) na płaszczyźnie podłoża; w przeciwnym razie trudno jest odróżnić zmianę kąta patrzenia od ruchu kamery. (Zobacz także: dolly zoom .)
Ilmari Karonen
1
Należy również zauważyć, że efekt ten zwykle występuje przy wysokiej wartości pola widzenia w stosunku do odległości obiektów od kamery. Wygląda to nienaturalnie, ponieważ zwykle nie widzisz obiektów z tak bliskiej odległości . Przynajmniej nie bez szybkiego odwrócenia wzroku.
Nicol Bolas,