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.