FOV discrepancy when overriding Player Camera Manager > Blueprint Update Camera

Hi, newbie here! :waving_hand:

I’m implementing a third-person portal system using blueprints, and to account for when the player character has teleported but the camera hasn’t, I’ve decided to subclass the Player Camera Manager. Before tackling this, I already tried some stuff out for the visual aspect of the portals with Scene Capture 2D components, so I know that a way to make both FOVs match is to go to my character’s Camera component and toggle Override Aspect Ratio Axis Constraint on, leaving everything else related as-is.

However, upon overriding my Player Camera Manager’s Blueprint Update Camera function, no matter what I set the New Camera FOV output to, it won’t behave the same, regardless of the player character’s Camera component parameters. Which is a problem, because now I have no clue how to make my camera’s and the Scene Capture 2D’s FOVs match. Here’s the easiest way I found to reproduce and see the issue— I’ve tried this in Unreal Editor 5.5.4, 5.6.1 and 5.7.0 (Preview), and they behave the same:

  1. Start a Third Person game project.
  2. (Skip for UE5.6+) Open the Game Mode blueprint (BP_ThirdPersonGameMode), and set its Player Controller Class to a new blueprint. Go back to BP_ThirdPersonGameMode and save it.
  3. Open the Player Controller blueprint (BP_ThirdPersonPlayerController in UE5.6+) and set its Player Camera Manager Class to a new blueprint. Go back to the Player Controller blueprint and save it.
  4. Go to the new Player Camera Manager blueprint, and override the Blueprint Update Camera function.
  5. In there, cast the Camera Target input to BP_ThirdPersonCharacter (yes we’re being dirty), get its Follow Camera, and get its World Location, World Rotation and Field of View. Connect those to the corresponding ‘New Camera *’ function outputs.
  6. Promote the Return Value output to a (non-local) variable, compile and make its default value checked.
  7. Go to this blueprint’s Event Graph, add a Debug Key event, and set your new variable to unchecked when pressed, and back to checked when released.
  8. In this blueprint’s Class Defaults, set Auto Receive Input to Player 0, and save the blueprint.
  9. Play, and press the key you chose to see the difference in FOVs. Fiddle with BP_ThirdPersonCharacter’s Camera component parameters too.

I’m obsessing over this now, so much so that I’ve decided to plot the correlation between the Camera component’s Field Of View parameter, the PIE window’s aspect ratio, and what value I have to set Player Camera Manager > Blueprint update Camera > New Camera FOV, for the views to match— you can see it here: Unreal FOVs | Desmos . The Camera component had everything set to default except for Override Aspect Ratio Axis Constraint being on. As you can see, the FOVs match if the aspect ratio is 1.33 (actually 1.333333… or 4/3; I’ve checked). And I’m trying to come up with some magical equation that passes through all the sampled points and makes sense (Desmos’s regression feature is a blessing), but no dice.

I have also tried different stuff to no avail: getting the FOV from a Minimal View Info, using Get Effective Field Of View, also read a bit of the AActor, UCameraComponent and APlayerCameraManager C++ implementations (with my very limited knowledge)… No idea where this extra FOV manipulation comes from. I would be the happiest man alive if anyone here could shed any light on this!

Thanks in advance,
Unai