- Home /
Zoom/scale perspective camera viewport
I want to be able to zoom in the camera without actually changing the perspective of the scene. The effect would be similar to zooming in on an 2D image, things gets larger but the perspective remains unchanged. With an orthographic camera I simply scale the size of the viewport, is there a similar way to do this with an perspective camera?
Answer by patrik-org · Mar 31, 2014 at 11:39 AM
Found a solution here: https://docs.unity3d.com/Documentation/ScriptReference/Camera-projectionMatrix.html
private Matrix4x4 PerspectiveOffCenter(float left, float right, float bottom, float top, float near, float far)
{
var x = (2.0f * near) / (right - left);
var y = (2.0f * near) / (top - bottom);
var a = (right + left) / (right - left);
var b = (top + bottom) / (top - bottom);
var c = -(far + near) / (far - near);
var d = -(2.0f * far * near) / (far - near);
var e = -1.0f;
var m = new Matrix4x4();
m[0, 0] = x; m[0, 1] = 0.0f; m[0, 2] = a; m[0, 3] = 0.0f;
m[1, 0] = 0.0f; m[1, 1] = y; m[1, 2] = b; m[1, 3] = 0.0f;
m[2, 0] = 0.0f; m[2, 1] = 0.0f; m[2, 2] = c; m[2, 3] = d;
m[3, 0] = 0.0f; m[3, 1] = 0.0f; m[3, 2] = e; m[3, 3] = 0.0f;
return m;
}
You simply multiply left, right, bottom and top by a scale factor to change the size of the viewport.
Your answer
Follow this Question
Related Questions
Best way to downsample camera viewport? 1 Answer
How to do perspective camera zoom? 1 Answer
Make long distance objects visible on camera 0 Answers
Sphere turns oval at edge of viewport 1 Answer
Scale box collider to camera view? 2 Answers