FoV value scaling

I'm creating an FPS project in Unity 2018. My reference FoV is 90. Let's say I'd like to create an sniper rifle which let player change FoV to 60 when he's aiming with optics.

But what should be the FoV of this gun when using optics for player who plays in 105 or 80 FoV by default? How should I scale it?

• What is ADS mode? What is "150 od 50"? – Almo Jan 29 at 22:36
• Aiming down sights, "150 or 50". Corrected. – dargemir Jan 29 at 22:53

If your goal is to express the particular feel of this specific weapon and its optics, then arguably its FoV should not scale at all. If you've determined that this sniper rifle has 60 degrees of visibility when aimed down sights, then 60 degrees is the value everyone uses.

Or you could set a different goal - like trying to ensure the portion of the scene image visible through the scope is a fixed ratio of the unzoomed scene. For this approach, you can do something like this:

// These parameters represent your default normal FoV and its corresponding zoomed FoV,
// in radians, measured from the bottom of the view to the top.
float referenceFullFoV = 90.0f * Mathf.Deg2Rad;
float referenceZoomedFoV = 60.0f * Mathf.Deg2Rad;

// This derived value describes what fraction of the default scene should fit in the zoomed image.
float zoomedHeightRatio =  Mathf.Tan(0.5f * referenceZoomedFoV)
/ Mathf.Tan(0.5f * referenceFullFoV);

// This describes the half-height of the projection of the full scene
// at the current FoV (in radians) onto an image plane 1 unit away from the camera.
float unzoomedHalfHeight = Mathf.Tan(0.5f * currentFullFoV);

// Now we scale this by our ratio and undo the tangent operation
// to calculate the FoV to use for the scoped version (in radians).
float zoomedFoV = 2.0f * Mathf.Atan(zoomedHeightRatio * unzoomedHalfHeight);


As a designer, I would allow the player to choose FoV for normal play. Movement can make people ill if the FoV is too high. I personally have to play at 90 when I'm in Quake 3 or I get sick.

But for zooming, since it's not usually for movement and the FoV is lower, not higher, I would set it to what you want for playbalance. So if the zoomed FoV is normally 60, then it would be 60 for anyone regardless of their normal FoV.

• I see your point. That seems right when we're talking about using optics. And what about pistols or PMs which grants you just a little zoom when using ironsights? Is it better to give them fixed FoV for zoom, or scale it? I'm afraid that going from 90 fov to 85 for pistol would be almost unnoticable, but going from 115 (as I like to play) to 85 would make all expirience weird. – dargemir Jan 30 at 10:17
• Personally, I'd make zoom fixed for playbalance reasons. Sniping players might lower their FoV as much as possible to change their zoom FoV. In Quake 3, you can change it as you play. So I had zoom switch FoV from 22.5 (default) to 10 on mousewheel up or down. 10 was a huge advantage over other people on really huge maps. Decide if you want that kind of messing around to be possible. – Almo Jan 30 at 15:18