Raytracing: почему сферы на изображении ниже выглядят растянутыми?

8

введите описание изображения здесь введите описание изображения здесь

Некоторый контекст. Выше приведен код и полученное изображение для него в Raytracing Питера Ширли в книге выходного дня. Как видно из кода, он добавляет в некоторых сферах. И все же на последнем изображении есть 2 эллипсоида рядом. Я просто не могу понять, почему это так, независимо от того, сколько раз я смотрел на код. Кто-нибудь может мне объяснить? Вот ссылка на исходный код. https://github.com/petershirley/raytracinginoneweekend

Мань Нгуен
источник
2
Это выглядит нормально и вызвано тем, что перспективная камера находится близко к сферам и имеет большое значение FOV.
PaulHK
Кстати, это не только трассировка лучей.
Себастьян Мах

Ответы:

16

Появление вытянутых на периферии форм является следствием перспективной проекции. Чем шире поле зрения (FOV), тем сильнее становится эффект растяжения.

Чтобы продемонстрировать эффект, я написал небольшой пример для ShaderToy: https://www.shadertoy.com/view/MltBW2

Как вы можете видеть на изображениях ниже (соответствует FOV 40, 80 и 120; если я не сделал никакой ошибки), это становится особенно заметно с широким FOV, например, 90 ° и выше.

Угол обзора 40 ° Угол обзора 80 ° Угол обзора 120 °

Жюльен Геро
источник
Хороший пример. Это может помочь иметь какую-то текстуру (например, сетку) на плоскости земли, хотя; в противном случае трудно определить разницу между изменением угла обзора и просто перемещением камеры. (См. Также: Долли зум .)
Илмари Каронен
1
Следует также отметить, что этот эффект обычно возникает при высоком FOV относительно расстояния объектов от камеры. Это выглядит неестественно, потому что вы обычно не видите объекты, которые находятся близко к вашим глазам. По крайней мере, не без быстрого поворота глаз.
Николь Болас