Raytracing: por que as esferas na imagem abaixo aparecem esticadas?

8

insira a descrição da imagem aqui insira a descrição da imagem aqui

Algum contexto. Acima estão o código e a imagem resultante no Raytracing de Peter Shirley no livro de um final de semana. Como você pode ver no código, ele adiciona algumas esferas. E, no entanto, na imagem final, existem 2 elipsóides lado a lado. Eu simplesmente não consigo entender por que é assim, não importa quantas vezes eu olhei para o código. Alguém pode me explicar? Aqui está o link para o código fonte. https://github.com/petershirley/raytracinginoneweekend

Manh Nguyen
fonte
2
Isso parece normal e é causado pelo fato da câmera em perspectiva estar próxima das esferas e ter um grande valor de FOV.
PaulHK
Aliás, isso não é exclusivo do traçado de raios.
Sebastian Mach

Respostas:

16

As formas que aparecem esticadas na periferia são uma conseqüência da projeção em perspectiva. Quanto maior o campo de visão (FOV), mais forte fica o efeito de alongamento.

Para demonstrar o efeito, escrevi um exemplo rápido no ShaderToy: https://www.shadertoy.com/view/MltBW2

Como você pode ver nas imagens abaixo (correspondendo ao FOV de 40, 80 e 120; se eu não cometer nenhum erro), isso se torna especialmente visível com o FOV amplo, como 90 ° e acima.

FOV 40 ° FOV 80 ° FOV 120 °

Julien Guertault
fonte
Belo exemplo. Pode ser útil ter algum tipo de textura (por exemplo, uma grade) no plano do solo; caso contrário, é difícil dizer a diferença entre alterar o ângulo de visão e apenas mover a câmera. (Veja também: dolly zoom .)
Ilmari Karonen
11
Também deve ser observado que esse efeito geralmente ocorre com um FOV alto em relação à distância dos objetos da câmera. Parece antinatural porque você geralmente não vê objetos tão perto dos seus olhos. Pelo menos, não sem virar rapidamente os olhos.
Nicol Bolas