Same camera parameters but different views in UE and Unity

I am trying to use Unreal Engine to render some indoor pictures.

I have tried Unity before, and i would like to use the same camera parameters from the Unity in UE,

but I cannot get the same view because of the FOV.

I set camera and the model both at (0,0,0), camera FOV 60 degree

output picture size, width:1024, height: 768

and the result look like this

left: Unity, right:UE
(please ignore the difference of lighting and textures)

if I want them to look similar,

than I have to change the FOV of UE camera to about 77 degree, than they will look like this

(they will be more alike, but still not the same)

I use “screenShot.ReadPixels()” in Unity C# script to get the screenshot,

and use “HighResShot 1024x768” in console when I am “piloting Camera Actor” to get the screenshot in UE.

I have looked up many tutorials and webpages but still cannot find any solutions or any explanations,

if anyone have dealt with this kind of problems, I would be so happy if you give me a hint.
thank you!!

I encountered the same problem.
It seems that Unity uses vertical field of view (FOV) while Unreal Engine uses horizontal field of view (FOV).

Vertical FOV and horizontal FOV can be converted between each other, and you can use the following code:

	const float AspectRatio = GEngine->GameViewport->Viewport->GetDesiredAspectRatio();
	float VerticalFOVRadians = FMath::DegreesToRadians(VerticalFOV);
	float HorizontalFOVRadians = 2.0f * FMath::Atan(FMath::Tan(VerticalFOVRadians / 2.0f) * AspectRatio);
	return FMath::RadiansToDegrees(HorizontalFOVRadians);

This will give you a very similar appearance.