Something I’ve not seen discussed when planning a 3D world is the scale i.e. what size to make objects etc.
Say I draw all my objects as though 1 coord = 1 meter and then make the z clip = 1. Does that an object will look the same scale as though I was standing 1 meter away from it (when right next to it)? Also, field of view, is 90 degrees generally used for “normal vision”?
Anyone got any advice on things to consider when planning the coord size, FOV etc?
One thing I’ve noticed in FPSs is you can often go right up against (say) a wall and it just doesn’t look the same as though you were doing the same thing in real life. Not sure what the problem is, maybe “focus” or scale or FOV, but something doesn’t look right.
As far as I know “natural” FOV goes hand in hand with monitor size and distance to the viewer, so a perfect solution can hardly be achieved. Many FPSs allow tweaking the FOV settings.
If everything is set up as in real life, it will look as in real life. However, FOV is usually something people get really wrong and overestimate alot.
Consider this. You’re viewing your scene from your chair, looking through your monitor. The field of view is therefore a function of your windows physical size (not measured in pixels, but in real life length units) and the distance you sit from the monitor.
I’ll give you an example. My monitor is about 30 cm tall, and the distance from the surface to my eyes are about 50 cm.
VFOV = 2atan(0.5height/distance)
That makes a vertical fov of about 34 degrees. To get a perspective correct real life representation, I should therefore use 34 degree vertical FOV.
For a 90 degree FOV, you need to have your face a distance from your monitor equal to half the height of your monitor. Calculates to 15 cm in my case, and I can say that I can’t focus my eyes properly in the monitor if I sit that close. Not to mention that I really have to move my eyes to even see the edges of it.
But that’s for a fullscreen window. For a windowed application, the FOV needs to be recalculated, but keep in mind that it’s the real world size of the window that matters, not the number of pixels which is what you get from yout windowing API. In other words, you need the real dimensions of the users monitor.
That said, I use 60 degrees usually. In my oppinion, a somewhat good compromise between little perspective distortion and a FOV that you can actually fit something inside. For FPS, 90 works. But keep in mind, the true FOV is calculated as above.
Nowadays it is quite easy to do fish eye projection.
Render a cube view, tesselate it, distord, and voilà !
An old example :
Horizontal FOV 150 seem nice…