I’m trying to calculate the highest perceived resolution of a virtual screen viewed through a physical screen, given the dimensions of the virtual 3D scene and properties of the physical display.
Specifically, a virtual screen viewed from given distance, with a VR headset of given resolution and field of view.
For example, if I was using a VR headset with 1080x1200 display panel, with horizontal FOV of 110 degrees and I was viewing a virtual 65” 16:9 TV from 2 meters, what would be the true resolution I’m getting out of the TV?
To keep it simple (albeit less correct), it’s not necessary to account for any optics distortion or stereo rendering with dual panels. Let’s just assume pixels are distributed uniformly through the entire FOV.
We'll also assume the screen is flat and facing directly at the camera in the scene, so we don't need to mind any angles or curvature.
I’ll call the provided properties as follows:
HMDPanelResX, // Display panel horizontal resolution in px HMDPanelResY, // Display panel vertical resolution in px HMDFOVX, // Horizontal field of view coverage in degrees VRScreenSizeX, // Virtual screen width in cm VRScreenSizeY, // Virtual screen height in cm VRScreenDistance // Distance to screen in cm
I know vertical FOV (
HMDFOVY) can be derived through the aspect ratio and horizontal FOV. Also getting the pixels per degrees value for each axis is a matter of a simple division.
I think the next step would be to figure out how large portion of the FOV the virtual screen will cover horizontally and vertically with the given dimensions, but I don’t know how to calculate it.
The return values I want to derive can be called