카메라(Camera) 는 플레이어가 월드를 보는 방식 같은 플레이어의 시점을 나타냅니다. 따라서
카메라는 사람이 제어하는 플레이어와만 관련이 있습니다. 플레이어 컨트롤러는 카메라 클래스를 지정하며
플레이어가 월드를 보는 위치와 방향을 계산하는 데 사용되는 카메라 액터(ACameraActor
)를
인스턴스화합니다.
카메라로 작업하는 방법에 대한 기본 예시는 카메라 사용법을 참조하세요. 카메라에 애니메이션을 레이어링하는 방법에 대한 예시는 카메라 애님 기능 문서를 참조하세요.
카메라 액터
모든 카메라의 행동 및 프로퍼티는 카메라 컴포넌트에서 설정합니다. CameraActor
클래스는 주로 카메라 컴포넌트(CameraComponent)의 래퍼 역할을 하므로 카메라를 다른 클래스 안이 아니라 레벨에 직접 배치할 수 있습니다. 에디터에서 카메라 컴포넌트를 사용할 때는 디테일(Details) > 카메라 세팅(Camera Settings) 에서 카메라가 원근(Perspective) 모드인지 직교(Orthographic) 모드인지 설정할 수 있습니다.

원근 모드에서는 세로 필드 오브 뷰(FOV)를 설정할 수 있으며, 직교 모드에서는 월드 유닛 단위로 너비를 설정할 수 있습니다. 두 모드 모두 종횡비를 지정할 수 있으며 일반 디바이스 및 디스플레이 타입에 대한 프리셋 종횡비가 제공됩니다.
포스트 프로세스 이펙트를 카메라에 추가할 수 있으며, 포스트 프로세스 이펙트의 강도를 조절할 수도 있습니다.
게임플레이 중에는 보이지 않지만 에디터에서의 시각적 배치를 돕기 위해 카메라 컴포넌트에 추가되는 컴포넌트가 둘 있습니다. 프러스텀 컴포넌트(FrustumComponent) 는 카메라 필드 오브 뷰의 위치를 보여줍니다. 이 위치는 기본적으로 표시되지 않지만, 뷰포트 에서 표시(Show) > 고급(Advanced) > 카메라 프러스텀(Camera Frustums) 을 선택하여 켤 수 있습니다.
카메라 컴포넌트
카메라 컴포넌트(CameraComponent) 는 프로젝션 타입(Projection Type), 필드 오브 뷰(Field Of View) 및 포스트 프로세스 오버라이드(Post-Process Overrides) 같은 카메라 시점과 세팅을 나타냅니다. 뷰 타깃(ViewTarget)이 카메라 액터이거나 카메라 컴포넌트가 포함된 액터이고 bFindCameraComponentWhenViewTarget
이 있는 경우,
true 로 설정합니다. 모든 폰에 설정할 수 있는 관련 프로퍼티는 bTakeCameraControlWhenPossessed
이며, 이 경우 플레이어 컨트롤러가 폰을 소유하면 폰이 자동으로 뷰 타깃이 됩니다.
액터 및 플레이어 컨트롤러
플레이어 컨트롤러(PlayerControllers) 및 액터에는 CalcCamera
함수가 포함되어 있습니다. 액터의 CalcCamera
함수는 bFindCameraComponentWhenViewTarget
이 true 이고 카메라 컴포넌트가 있는 경우 액터 내 첫 번째 카메라 컴포넌트의 카메라 뷰를 반환하며, 그 밖의 경우에는 액터의 위치와 회전을 가져옵니다. 플레이어 컨트롤러 클래스에서 CalcCamera 함수는 비슷하게 행동하며 소유한 폰이 존재하면 해당 폰의 위치와
플레이어 컨트롤러의 컨트롤 회전을 반환합니다.
플레이어 카메라 매니저
플레이어 카메라 매니저(PlayerCameraManager) 특정 플레이어의 카메라를 관리합니다. 플레이어 카메라 매니저는 렌더러 같은 다른 시스템에서 사용되는 최종 뷰 프로퍼티를 정의하며, 세계를 보는 '가상의 눈' 기능을 할 수 있습니다. 최종 카메라 프로퍼티를 직접 계산할 수도 있고 카메라에 영향을 주는 다른 오브젝트나 액터 간을 블렌딩할 수도 있습니다(하나의 카메라 액터에서 다른 카메라 액터로 블렌딩).
PlayerCameraManagers의 외부에 대한 주요 기능은 GetCameraViewPoint
같은 다양한 Get*()
함수에 안정적으로 응답하는 것입니다.
기본적으로 플레이어 카메라 매니저는 카메라가 연결된 프라이머리 액터인 뷰 타깃을 유지합니다. 최종 뷰 스테이트에 카메라 애니메이션, 포스트 프로세스 이펙트 또는 카메라 렌즈에 묻은 흙 같은 특수 효과 등, 다양한 포스트 이펙트를 적용할 수 있습니다.
플레이어 카메라 매니저에서 상속해야 하고 C++ 대신 부모 클래스 블루프린트를 생성하는 경우, 플레이어 카메라 매니저에 포함된 BlueprintUpdateCamera
함수로 사용자만의 커스텀 카메라를 구현할 수 있습니다.
이 함수를 사용하는 경우 반환된 값을 사용하려면 true 를 반환하고, 반환된 값을 무시하려면 false 를 반환합니다.
플레이어 카메라 매니저의 UpdateViewTarget 함수는 뷰 타깃을 쿼리하고 해당 뷰 타깃의 시점을 반환합니다. 이 함수는 APlayerCameraManager를 서브클래싱하고 카메라 컴포넌트를 통해 보지 않는 경우, BlueprintUpdateCamera 함수를 호출합니다.
뷰 타깃
플레이어 카메라 매니저에서 정의된 뷰 타깃(ViewTarget) 구조체는 플레이어 카메라 매니저에 이상적인 시점(POV)을 제공하는 역할을 합니다. 뷰 타깃에는 타깃 액터, 타깃 액터의 컨트롤러(로컬에서 제어하지 않는 폰의 경우), 관전하는 동안 폰 트랜지션 및 기타 변경 사항을 통해 같은 플레이어를 따라가는 데 사용되는 플레이어 스테이트에 대한 정보가 포함되어 있습니다.
POV 프로퍼티를 통해 플레이어 카메라 매니저에 전달되는 카메라 정보는 FMinimalViewInfo
구조체 형식입니다. 이 구조체에는 위치(Location), 회전(Rotation),
프로젝션 모드(Projection Mode) (원근 또는 직교), FOV, 직교 너비(Orthographic Width), 종횡비(Aspect Ratio) 및 포스트 프로세스 이펙트(Post Process Effects) 를 비롯한 카메라 컴포넌트의 기본 정보가 포함되어 있습니다. 이러한 값에 대한 액세스 권한을 플레이어 카메라 매니저에 제공하면
플레이어 카메라 매니저가 카메라 관리 중에 두 카메라 모드를 블렌딩할 수 있습니다.
카메라 책임 체인
게임별 카메라 행동은 카메라 '책임 체인'의 어느 시점에서든 제공될 수 있으며, 이 책임 체인은 위에서 아래로 다음 클래스를 거쳐 흘러간 후 ALocalPlayer
에 전달되고 [렌더링]designing-visuals-rendering-and-graphics), 씬 뷰(Scene View) (FSceneView
) 및 기타 관련 시스템으로 끝납니다.