Published on

相机更新

Authors
  • avatar
    Name
    东哥
    Twitter

前言

顺序

相机的更新从World::Tick 开始

在更新完所有常见Group组,并且更新完Timer后,再更新PlayerController::UpdateCameraManager

所以第一个重点,相机更新的时序位于几乎所有其他场景对象的tick的后面

后面就到了CameraManager

以Lyra为例,相机的主要逻辑的更新如下

APlayerCameraManager::UpdateCamera

  • DoUpdateCamera(DeltaTime);

    • UpdateViewTarget

    • UpdateViewTargetInternal

      • BlueprintUpdateCamera(是否有蓝图重载,否则使用下面的步骤)

      • Actor::CalcCamera

        • CameraComponent::GetCameraView
          • UpdateCameraModes (Lyra特有的相机模式,在这里更新,会影响相机的位置,旋转和FOV等信息)
          • PC->SetControlRotation (这一步强行刷新一下PlayerController的朝向)
          • SetWorldLocationAndRotation(设置相机自己的位置和旋转)
    • ApplyCameraModifiers (CameraShake等效果是在这一步应用)

    • SetActorLocationAndRotation (更新Manager自己的位置和旋转)

    • UpdateCameraLensEffects(更新相机后效)

    • 刷新Fade相关逻辑

    • FillCameraCache(填充相机数据)

  • 如果需要就同步相机的位置到服务端