# Set Web Xr fov via projection matrices

So I have been trying to change web xr camera fov. Since I am using web xr and quest emulator for chrome, they both return a fov of 50. This is not acceptable. I want to try to change the fov by modifying threejs source code.

I have seen that inside the web xr manager there is this part of code:

if ( camera.isPerspectiveCamera ) {

camera.fov = RAD2DEG * 2 * Math.atan( 1 /camera.projectionMatrix.elements[ 5 ] );
camera.zoom = 1;
}

What I could maybe do is change the value of 2 to maybe 3 or more. Wouldn’t that technically increase the fov?

Another thing I could do is (still inside the web xr manager) change this part:

const topFov = ( projL[ 9 ] + 1 ) / projL[ 5 ];
const bottomFov = ( projL[ 9 ] - 1 ) / projL[ 5 ];
const leftFov = ( projL[ 8 ] - 1 ) / projL[ 0 ];
const rightFov = ( projR[ 8 ] + 1 ) / projR[ 0 ];

I might be saying something stupid, but technically aren’t this values just floats? That is they could something like 50, 60 and so on. Can’t I just input the value I want?

Last thing I could try is modding the perspective camera updateProjectionMatrix. This part

let top = near * Math.tan( DEG2RAD * 0.5 * this.fov ) / this.zoom;

Looking at the code it seems like everything gets calculated depending on the top value. Thereby if I just change this.fov to an arbitrary value will the final camera projection change. That is have more or less fov?

DISCLAIMER: I am a noob in matrices. I really have no idea how camera matrices work. I making this post because I have found no other solution to change the web xr fov. There are some 2 or 3 posts about me, but they all end with no solution or discontinued methods.

If anybody knows a solution, even if it makes the non vr experience incorrect (what I mean is that if the non vr experience: the vr isn’t active; makes the normal perspective camera corrupted, it doesn’t matter. I just need the normal xr experience to work with increased fov).

Thank you very much and have a great day.

What is acceptable?

This 50 is given by you when you set the perspective camera. Most likely you have a command like this:

``````camera = new THREE.PerspectiveCamera( 50, ... )
``````

If you change it to another value, does it show up in the WebXR emulator?

With not acceptable I meant having 50 as fov for vr.

The problem I think is that I am use xr-polyfill and that has to be setting the fov to a value of 50. I am now trying to change the polyfill source code in order to change the fov.

Have you maybe any idea how to?

Thanks!