Pelo que entendi, o campo de visão vertical deve ser ajustado para:
fov = 2 * arctan(0.5*screenHeight / distanceEyeScreen);
Ou seja, o campo de visão deve corresponder à distância e ao tamanho da tela do usuário.
Em muitos FPS, há um valor padrão de 90 ° para FoV horizontal ou 60 ° para FoV vertical (assumindo 16: 9). Um exemplo é o CryEngine. Mas para uma tela 16: 9 20 "(diagonal da área visível, ou seja, cerca de 40 cm x 25 cm), esse valor padrão exigiria que os usuários tivessem seus olhos a 20 cm da tela para obter uma visão correta correta.
Então, ou eu cometi um erro nos meus cálculos, ou deve haver uma razão pela qual você escolheria um valor de FoV inadequado de propósito.
Qual é o motivo de um FoV padrão de 90 ° horz / 60 ° vert?
3d
camera
perspective
dyp
fonte
fonte
Respostas:
Eu acho que ter um FoV de 90 graus é o que parece natural quando você tenta imitar 'olhar através dos olhos humanos'. Seus cálculos seriam corretos se você usasse a tela para simular uma janela para um mundo virtual, não para uma perspectiva em primeira pessoa. Imagem que você teria que ver o mundo através de uma moldura de 20 "a 80cm da sua cabeça ...
fonte
Muito do efeito do FOV está na rapidez com que você parece se mover pelo mundo (ainda é a mesma velocidade; isso é puramente percebido). Com um FOV horizontal muito amplo, você parecerá se mover muito rápido; com estreito demais, parecerá se mover muito lentamente. 90 graus na horizontal parece ser o "ponto ideal", e o desenvolvedor do jogo pode ajustar a velocidade de movimento desejada para jogos individuais a partir daí.
Também é o caso que 4 vezes 90 graus é 360 graus, que é um círculo. A configuração do FOV horizontal para que ele mapeie bem os quadrantes dianteiro / esquerdo / traseiro / direito parece fazer sentido.
E, finalmente, há a velha castanha de precedência e inércia. Não tenho certeza se algum jogo ofereceu FOV ajustável por jogador antes do Quake, mas o Quake o fez e o padrão foi 90 graus na horizontal; é fácil imaginar outros jogos pegando 90 graus a partir daí.
Vale ressaltar que hoje em dia 90 graus está se tornando menos comum, com jogos (particularmente os modernos FPSs) configurando um valor um pouco menor - em torno de 80.
Se você deseja corrigir o aspecto do seu FOV, pode usar algo assim (não pretendo que seja o único ou o melhor caminho, mas é consistente com a calculadora do FOV em http://www.emsai.net/projects/widescreen / fovcalc / ; isso assume em relação a uma proporção básica de 4: 3 (você pode ajustar isso na chamada para CalcFovY abaixo))
Então chame assim:
Os fov_x e fov_y calculados podem então ser conectados à seguinte matriz de perspectiva (convenção OpenGL):
Isso fornecerá um FOV horizontal ajustado ao aspecto que mantém o FOV vertical, independentemente da resolução e proporção.
fonte