Lyra의 카메라는 크게 3개의 뼈대로 구성됩니다.
1. HmPlayerCameraManager
- 실제 렌더링에 관여하는 매니저입니다.
이 클래스는 PlayerController에서 관리되며, CameraComponent에서 받아온 값을 통해 화면을 렌더링하는 역할을 합니다.
현재는 FOV나 PtichMin, PitchMax와 같은 설정값에 대해서 세팅되어 있습니다.
* FOV란? Field of view, 시야각을 의미합니다.
* Pitch는 시점의 위, 아래 회전량을 의미하며, 이 값을 제한함으로써 마우스를 위로 올렸을 때 뒤가 보이지 않도록 각도를 조정합니다.
2. HmCameraComponent
- HmPlayerCameraManager에 캐릭터의 시점에 대한 정보를 전달합니다.
- World Tick을 따라가지 않고 PlayerCameraManager Tick을 따라가는 것이 알아두어야 할 정보입니다.
- InitState_DataAvailable 상태에서 InitState_DataInitialized 상태로 넘어갈 때 HeroComponent로부터 Delegate가 바인딩됩니다.
- 매 틱마다 Delegate를 통해 HeroComponent에서 바안딩된 DetermineCameraMode를 호출합니다.
TSubclassOf<UHmCameraMode> UHmHeroComponent::DetermineCameraMode() const
{
const APawn* Pawn = GetPawn<APawn>();
if (!Pawn)
{
return nullptr;
}
if (UHmPawnExtensionComponent* PawnExtComp = UHmPawnExtensionComponent::FindPawnExtensionComponent(Pawn))
{
if (const UHmPawnData* PawnData = PawnExtComp->GetPawnData<UHmPawnData>())
{
return PawnData->DefaultCameraMode;
}
}
return nullptr;
}
- DetermineCameraMode는 PawnData에 설정된 카메라 모드를 반환합니다.
3. HmCameraMode
- CameraMode는 3인칭 액션, 스나이퍼 모드, 차량 탑승 모드 등 여러 모드들에 대한 카메라 시점을 추상화한 클래스입니다.
- CameraMode는 말 그대로 추상 클래스라 UCLASS(Abstract, Blueprintable)로 구성되어 상속 받아야 사용할 수 있도록 되어 있으며, 실제로 CameraMode_ThirdPerson과 같은 형태로 파생됩니다.
- 블루프린트 클래스 접두사로는 CM_를 사용하게 됩니다.
* CameraModeStack
- 이 클래스는 카메라의 시점이 변경될 때 두 카메라 시점을 적절히 블렌딩해주는 클래스입니다.
- D3D 프로젝트에서 시네마틱 카메라를 구현할 때 시점이 변경되면 카메라의 움직임을 선형보간해서 구현했었는데
마찬가지로 차 안에 타고 있다가 스나이퍼 모드로 변경될 때 갑자기 바뀌면 어색하기도 하고 3D 멀미를 유발할 수 있기 때문에 모드들을 매 프레임 쌓아두고 보간하여 보여주는 역할을 합니다.
- 이 클래스는 CameraComponent에서 멤버 변수로 들고 있는데 어떻게 사용할 지는 추후 강의에서 공개될 듯 합니다.
'Unreal Engine > [Inflearn_rookiss] UE5 Lyra 분석' 카테고리의 다른 글
12. InputComponent 완료 (0) | 2024.10.19 |
---|---|
11. Camera Blending과 Update (1) | 2024.10.13 |
9. Pawn Extension 및 Init State 내용 정리 (0) | 2024.10.11 |
8. Pawn Extension_2 (0) | 2024.10.08 |
7. Pawn Extension (1) | 2024.10.07 |
댓글