Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save Samsy/13a2a1f7a043b43de02aba1f3454004e to your computer and use it in GitHub Desktop.
Save Samsy/13a2a1f7a043b43de02aba1f3454004e to your computer and use it in GitHub Desktop.
Threejs Fit plane to screen
var cameraZ = camera.position.z;
var planeZ = 5;
var distance = cameraZ - planeZ;
var aspect = viewWidth / viewHeight;
var vFov = camera.fov * Math.PI / 180;
var planeHeightAtDistance = 2 * Math.tan(vFov / 2) * distance;
var planeWidthAtDistance = planeHeightAtDistance * aspect;
// or
let dist = camera.position.z - mesh.position.z;
let height = ... // desired height to fit
camera.fov = 2 * Math.atan(height / (2 * dist)) * (180 / Math.PI);
camera.updateProjectionMatrix();
// Basically solving an AAS triangle https://www.mathsisfun.com/algebra/trig-solving-aas-triangles.html
https://i.stack.imgur.com/PgSn3.jpg
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment