![]() |
|
#1
|
|||
|
|||
![]() Quote:
first of all, because when you're measuring an object's apparent size on the screen by varying FOV until that object's apparent size seems to be right, it doesn't mean the object actually is at the proper distance which would give that same apparent in reality. that's one thing. another is that you don't actually know which is the real scale of the objects in-game. a third one would be that zooming has the same scaling effect (ie is done with the same %) on all the objects on the scene, unless there's special code to over-ride that. a fourth one is that actually FOV is firstly about the field of view, not about the right distance/scale/apparent size of the rendered objects. hence the name FOV (Field of View), and the formula for computing the FoV depending on screen's size is actually about matching human's FoV (ie "view's width" = how much to the right/left can you see a close object), not matching object's apparent size, and using it to get object's apparent size is wrong. if you want a FoV which would give you the closest resemblance of object's apparent size, you should: - make sure the scale of the objects is right (draw the real wingspan of a known airplane into the game's editor (using game's "meter" scale) and compare it with that plane's wingspan. even better, import a proper known made object (using a real meter scale) into the game and measure it with game's "meter". - put that object at 100 "meters" and measure it's apparent size against a game's known FoV (at 60 degrees FoV, and 100 meters away, the screen width's represents X meters. put two objects at x/2 meters away from the center of the airplane, measure the apparent distance between them on the screen at that known FoV and distance, and then, by comparing airplane's apparent size with the distance between the 2 object's apparent size, you can see the real airplane's apparent size). then repreat vy changing FoV until you'll get the proper airplane's apparent size. you should see that the proper FoV for that it's at around 30 degrees (even less than more), for a same relative scale, no special object groups scaling code, normal screen size. simpler than that, assuming that the scale of the objects is right for all game object's, adjust your FoV until the targeting apparatus (or just the crosshair) has the same real meters apparent size on your monitor as if in reality you would keep that targeting apparatus (or crosshair) at screen's distance (from between your eyes and screen) from you. then you'll have your proper FoV, again at around 30 degrees, and you can check to see then if airplane's apparent size at 100 "meters" straight in front of you matches the crosshair's measurement as it should in reality. pretty nasty stuff, right? the ONE and ONLY solution to object's apparent size in a virtual world having a sufficient FoV (not causing tunnel vision) and objects having the same scale, is to have special code scaling the objects depending on the current FoV used and their distance from the camera. it's a nightmare from computation's point of view (because forcing the scale of the objects to match the visual appearance will make the objects bigger than they should be, and then.. what would you do with collision? because there's a difference between shooting at a packet of cigars and shooting at a door..), but there were games who did it successfully. CFS2 was one of them, if I remember right. flying in formation was really feeling like flying in formation in there ![]() |
![]() |
|
|