UE编辑器相机窗口运行时相机fov 大小不一致

问题:相机要显示全屏,显示的窗口两侧不能有黑框,会在相机上取消Constrain Aspect Ratio (取消宽高比限制),相机会根据宽高比约束去改变运行时的fov 大小

  • 引擎底下BaseEngine.ini 有配置AspectRatioAxisContranit = AspectRatio_MaintainYFov 默认按Y 轴不变,X轴按视口宽高比进行拉伸
  • 在编辑器的设置 Level Editor | viewports| Aspect Ratio Axis Contranit 中默认相机Fov轴 是AspectRatio_MaintainXFov
  • 修改两个配置相机约束轴一样视口内容就一样了

运行时还可以在相机组件上重载相机约束

camera component 上有 AspectRatioAxisContranit = AspectRatio_MaintainYFov

其他:

相机组件上可能会用到的参数

Fov:调整视口大小的(近景fov15-20 远景90 多, 具体看场景),切换相机靠近的时候可以动态调整fov 效果更好些(ue 的 cropout 示例里面有fov 动态调整)

constrain Aspect Ratio: 限制窗口宽高比(不拉伸)

AspectRatioAxisContranit:限制拉伸对应的不变的轴向

override AspectRatioAxisContranit : 使AspectRatioAxisContranit生效

后处理上可以开focal distance 对相机进行聚焦

Spring Arm Component(弹簧臂):

  • Enable Camera Lag 用于相机位置平滑
  • Enable Camera Rotation Lag 用于相机旋转平滑
  • Draw Debug Lag Markers 输出当前相机中心和目标中心
  • DoCollisionTest 相机碰撞的时候自动抬高相机

PlayerController->SetViewTargetWithBlend 可以切换相机混合(支持平滑)

可以重载 UCameraModifer 的ModifyCamera 修改视口fov 起点位置(UCameraModifer_CameraShake 实现振动 )

PlayerCameraManager->StartCameraShake(...

PlayerCameraManager->AddNewCameraModifier(...

实现相机变黑和显示

PlayerCameraManager->StartCameraFade