Blending between Perspective and Orthographic Projection at Run-Time

I’m trying to make a platformer where the main gameplay mechanic is rotating the camera 90 degrees and simultaneously modifying the FOV to and from a 2D orthographic side-scroller view and a 3D platformer view (think Super Paper Mario).

So far, my method of tackling this has been to fake an orthographic projection by changing the FOV to 0.1 degrees and adjusting the spring arm length to 200,000. Then when I switch to “perspective mode”, I rotate the camera and use a lerp to change the camera’s FOV to 90 degrees and spring arm length to 200.

Unfortunately, the relationship between FOV and spring arm length is not linear, and this causes the camera to freak out during the rotation. I am new to Unreal Engine and don’t quite understand the mathematical relationship between FOV and spring arm length or how to implement it to make the transition smooth/seamless.

Here is a video of what is currently happening:

Trigonometry is essential here. The effect you are trying to achieve is called “dolly zoom” and there are many tutorials how to implement it. For example: