PDA

View Full Version : Scale of world?



Stuart McDonald
05-06-2007, 10:28 PM
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.

--Stuart.

predaeus
05-07-2007, 01:07 AM
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.

Bob
05-07-2007, 01:13 AM
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 = 2*atan(0.5*height/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.

zeoverlord
05-07-2007, 03:27 AM
Originally posted by Stuart McDonald:
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.Well you have to remember that humans have a fov around 180 degrees and that would look strange indeed on a monitor (try it), plus human vision uses something more like a fisheye projection, and computer graphics can't do that(yet).
90 degrees is a good value because it is a good compromise between the human eye and the actual fov of the screen(as described by bob), and it goes hand in hand with the natural characteristics of computer graphics, where a 1 unit square becomes a 0.5 unit square at double the distance.

Bob
05-07-2007, 05:01 AM
Originally posted by zeoverlord:
..., and it goes hand in hand with the natural characteristics of computer graphics, where a 1 unit square becomes a 0.5 unit square at double the distance. [/QB]An object's size if halved if the distance is doubled, for any FOV and for any size. It's not unique to 90 degrees in any way.

ZbuffeR
05-07-2007, 08:10 AM
Nowadays it is quite easy to do fish eye projection.
Render a cube view, tesselate it, distord, and voilą !

An old example :
http://strlen.com/gfxengine/fisheyequake/compare.html
Horizontal FOV 150 seem nice...