Según tengo entendido, el campo de visión vertical debe ajustarse a:
fov = 2 * arctan(0.5*screenHeight / distanceEyeScreen);
Es decir, el campo de visión debe coincidir con la distancia y el tamaño de la pantalla del usuario.
En muchos FPS, hay un valor predeterminado de 90 ° para FoV horizontal, o 60 ° para FoV vertical (suponiendo 16: 9). Un ejemplo es CryEngine. Pero para una pantalla de 16: 9 de 20 "(diagonal del área visible, es decir, aproximadamente 40 cm x 25 cm), este valor predeterminado requeriría que los usuarios tengan sus ojos a 20 cm de la pantalla para obtener una vista correcta en perspectiva.
Entonces, o cometí un error en mis cálculos, o debe haber una razón por la que elegiría un valor FoV inadecuado a propósito.
¿Cuál es la razón de un FoV predeterminado de 90 ° horz / 60 ° vert?
fuente
Respuestas:
Creo que tener un FoV de 90 grados es lo que se siente natural cuando intentas imitar "mirar a través de los ojos humanos". Sus cálculos serían correctos si usara la pantalla para simular una ventana a un mundo virtual, no una perspectiva en primera persona. Imagen que tendría que ver el mundo a través de un marco de 20 "a 80 cm de distancia de su cabeza ...
fuente
Gran parte del efecto del FOV está en qué tan rápido parece moverse por el mundo (sigue siendo la misma velocidad; esto es puramente perceptivo). Con un FOV horizontal demasiado ancho, parecerá que se mueve muy rápido, con un ángulo demasiado estrecho, parecerá que se mueve muy lento. 90 grados horizontal parece ser el "punto óptimo", y el desarrollador del juego puede ajustar la velocidad de movimiento deseada para juegos individuales a partir de ahí.
También es el caso de que 4 veces 90 grados es 360 grados, que es un círculo. Parece que tiene sentido configurar el FOV horizontal para que se asigne bien a los cuadrantes frontal / izquierdo / posterior / derecho.
Y finalmente está la vieja castaña de precedencia e inercia. No estoy seguro de si algún juego ofreció un FOV ajustable por el jugador antes de Quake, pero Quake lo hizo y su valor predeterminado fue 90 grados horizontal; Es fácil imaginar que otros juegos simplemente aumenten 90 grados desde allí.
Vale la pena señalar que hoy en día los 90 grados se están volviendo menos comunes, con los juegos (particularmente los FPS modernos) en un valor ligeramente más bajo, en o alrededor de 80.
Si desea corregir el aspecto de su FOV, puede usar algo como esto (no pretendo que sea la única o la mejor manera, pero es consistente con la calculadora de FOV en http://www.emsai.net/projects/widescreen / fovcalc / ; esto supone una relación de aspecto base de 4: 3 (puede ajustar eso en la llamada a CalcFovY a continuación))
Entonces llámalo como:
Los fov_x y fov_y calculados se pueden conectar a la siguiente matriz de perspectiva (convención OpenGL):
Esto le dará un FOV horizontal con ajuste de aspecto que mantiene el FOV vertical independientemente de la resolución y la relación de aspecto.
fuente