Насколько я понимаю, вертикальное поле зрения должно быть отрегулировано так:
fov = 2 * arctan(0.5*screenHeight / distanceEyeScreen);
То есть поле обзора должно соответствовать расстоянию пользователя и размеру экрана.
Во многих FPS значение по умолчанию составляет 90 ° для горизонтального поля зрения или 60 ° для вертикального поля зрения (при условии 16: 9). Одним из примеров является CryEngine. Но для 16: 9 20-дюймового экрана (диагональ видимой области, то есть около 40 см х 25 см), это значение по умолчанию требует, чтобы пользователи смотрели в 20 см от экрана, чтобы получить перспективный вид.
Так что либо я допустил ошибку в своих расчетах, либо должна быть причина, по которой вы намеренно выбрали бы неадекватное значение FoV.
Какова причина по умолчанию FoV 90 ° Гц / 60 ° Верт?
3d
camera
perspective
DYP
источник
источник
Ответы:
Я думаю, что наличие поля зрения 90 градусов - это то, что кажется естественным, когда вы пытаетесь имитировать «взгляд человеческими глазами». Ваши расчеты будут правильными, если вы будете использовать экран для имитации окна в виртуальный мир, а не от первого лица. Представьте, что вам нужно увидеть мир через 20-дюймовую рамку на расстоянии 80 см от вашей головы ...
источник
Большое влияние FOV на то, как быстро вы, кажется, двигаетесь по миру (это все та же скорость; это чисто восприятие). При слишком широком горизонтальном поле зрения вы будете двигаться очень быстро, а при слишком узком - очень медленно. Горизонтальный угол в 90 градусов кажется «сладкой точкой», и разработчик игры может настроить желаемую скорость движения для отдельных игр оттуда.
Это также тот случай, когда 4 раза 90 градусов - это 360 градусов, то есть круг. Настройка горизонтального поля зрения так, чтобы он хорошо соответствовал передним / левым / задним / правым квадрантам, имеет смысл.
И, наконец, старый каштан старшинства и инерции. Я не уверен, предлагали ли какие-либо игры регулируемый игроком FOV до Quake, но Quake сделал, и он по умолчанию установил 90 градусов по горизонтали; Легко представить, что другие игры просто поднимаются оттуда на 90 градусов.
Стоит отметить, что в настоящее время 90 градусов становятся все менее распространенными, при этом игры (особенно современные FPS) устанавливаются на несколько более низкое значение - в пределах или около 80.
Если вы хотите скорректировать аспект вашего поля зрения, вы можете использовать что-то вроде этого (я не претендую на то, что это единственный или лучший способ, но это согласуется с калькулятором поля зрения на http://www.emsai.net/projects/widescreen / fovcalc / ; предполагается, что относительно базового соотношения сторон 4: 3 (вы можете изменить это при вызове CalcFovY ниже))
Тогда назовите это как:
Вычисленные значения fov_x и fov_y могут быть затем включены в следующую матрицу перспективы (соглашение OpenGL):
Это даст вам горизонтальное поле зрения с коррекцией аспекта, которое поддерживает вертикальное поле зрения независимо от разрешения и соотношения сторон.
источник