카메라

Camera, 카메라는 플레이어의 시점, 플레이어가 월드를 보는 방식을 나타냅니다.

Choose your operating system:

Windows

macOS

Linux

Camera (카메라)는 플레이어의 시점, 플레이어가 월드를 보는 방식을 나타냅니다. 그 이유로 카메라는 사람이 제어하는 플레이어에만 관련이 있습니다. PlayerController 는 카메라 클래스를 나타내며, 플레이어가 월드를 보는 위치와 방향을 계산하는 데 사용되는 Camera 액터를 인스턴싱합니다.

카메라 작업 방법 관련 기본 예제는 카메라 사용법 문서를 참고하세요. 카메라 애님 기능 을 사용하여 카메라에 애니메이션 레이어를 씌울 수도 있습니다.

CameraComponent 와 CameraActor

카메라의 모든 프로퍼티와 작동방식은 CameraComponent 에 설정되어 있으며, CameraActor 클래스는 일차적으로 CameraComponent 를 감싸는(wrapper) 역할을 하여, 카메라를 다른 클래스 안에 놓지 않고도 레벨에 바로 놓을 수 있도록 하고 있습니다.

CameraComponent 에서는 카메라의 모드를 원근 또는 직교로 할 것인지 설정 가능합니다. 원근 모드에 대해서는 세로 시야(FOV)를 설정할 수 있으며, 직교 모드에 대해서는 월드 유닛 단위로 폭을 설정할 수 있습니다. 두 모드 공히 종횡비를 지정할 수 있으며, 흔한 디바이스나 디스플레이 유형에 대해 미리 설정된 종횡비가 제공됩니다. 카메라에 포스트 프로세스 이펙트 추가는 물론, 포스트 프로세스 이펙트의 세기에 스케일을 적용하는 것도 가능합니다.

게임플레이 도중 보이지는 않아도 에디터에서의 시각적 배치를 돕기 위해 CameraComponent 에 추가되는 컴포넌트가 둘 있습니다. FrustumComponent 는 카메라 시야를 표시해 줍니다. 이 부분은 기본적으로 표시되지는 않으며, 뷰포트 에서 Show > Advanced > Camera Frustums (표시 > 고급 > 카메라 프러스텀)을 선택하면 켜집니다. StaticMeshComponent 는 카메라가 레벨의 어디에 놓였는지를 나타냅니다.

PlayerCameraManger

PlayerCameraManager 클래스는 카메라 관리자입니다. 기본적으로 자체에 내장된 작동방식은, 대기중인 뷰 타깃과 콘솔 명령으로 트리거되는 디버그 카메라를 블렌딩하는 것입니다. 그 외의 경우 카메라의 시점과 기타 모든 카메라 세팅에 대해 무슨 작업을 할 것인지 질의합니다. 보통 PlayerCameraManager 서브클래스를 만들 필요까진 없고, 자동 규칙이 충분치 않아 뷰타깃 설정용 규칙을 추가해 주는 것 이상이 필요하다면 PlayerCameraManager 에 약간의 수정을 가할 필요가 있습니다.

PlayerCameraManager 서브클래스를 만들 필요가 있고, 그 작업을 C++ 가 아닌 블루프린트로 하고 있다면, 커스텀 카메라 구현을 위한 함수로 BlueprintUpdateCamera 가 존재합니다. 이 함수 사용시 True 를 반환하면 반환된 값을 사용하고, False 를 반환하면 무시합니다.

ViewTarget

PlayerCameraManager 에 정의되는 ViewTarget 구조체는 PlayerCameraManager 에 이상적인 시점(POV) 제공을 담당합니다. ViewTarget 에는 타깃 액터, (로컬에서 제어되지 않는 폰에 대한) 타깃 액터의 컨트롤러, PlayerState 에 대한 정보가 들어있으며, 이는 같은 플레이어의 폰 전환이나 관람시의 다른 변경사항을 따라가는 데 사용됩니다. POV 프로퍼티를 통해 PlayerCameraManager 에 전달된 카메라 정보는 FMinimalViewInfo 구조체 형태로 되어 있습니다. 이 구조체에는 CameraComponent 에서의 기본적인 카메라 정보가 들어 있으며, 거기에는 위치, 로테이션, 투영 모드 (원근 또는 직교), FOV, 직교 폭, 종횡비, 포스트 프로세스 이펙트 등이 포함됩니다. PlayerCameraManager 에 이 값을 접근할 수 있도록 하면 카메라 관리 도중 두 카메라 모드의 블렌딩이 가능해 집니다.

카메라 책임 체인

ALocalPlayer 에 전달되어 렌더링, 씬 뷰, 기타 관련 시스템으로 끝나기 전, 다음의 클래스를 위에서 아래로 흘러가는 카메라 "책임 체인" 흐름 상의 어느 지점에서도 게임 전용 카메라 작동방식을 제공할 수 있습니다:

CameraComponent

ViewTarget 이 CameraActor 거나, CameraComponent 가 들어 있으면서 bFindCameraComponentWhenViewTarget True 로 설정된 Actor 인 경우, CameraComponent 는 카메라의 프로퍼티에 대한 정보를 제공합니다. 어느 폰에 대해서도 설정 가능한 관련 프로퍼티는 bTakeCameraControlWhenPossessed 로, 여기서 폰이 PlayerController 에 빙의될 때 자동으로 ViewTarget 이 됩니다.

Actor 또는 PlayerController

PlayerController 와 Actor 공히 CalcCamera 함수가 들어 있습니다. bFindCameraComponentWhenViewTarget True 고 CameraComponent 가 존재하는 경우, Actor 의 CalcCamera 함수가 Actor 의 첫째 CameraComponent 의 카메라 시야를 반환합니다. 그렇지 않은 경우, Actor 의 위치와 방향을 구합니다. PlayerController 에서 CalcCamera 함수는 이 두 번째 경유와 유사한 동작을 하여, 빙의된 폰이 존재하면 그 위치와 PlayerController 의 컨트롤 로테이션을 반환합니다.

PlayerCameraManager

PlayerCameraManager 의 UpdateViewTarget 함수는 ViewTarget 에 질의하여 ViewTarget 의 시점(POV)를 반환합니다. 서브클래싱된 APlayerCameraManager 를 갖고서 CameraComponent 를 통해 보고 있지 않은 경우 BlueprintUpdateCamera 를 호출하는 함수이기도 합니다.

언리얼 엔진 문서의 미래를 함께 만들어주세요! 더 나은 서비스를 제공할 수 있도록 문서 사용에 대한 피드백을 주세요.
설문조사에 참여해 주세요
건너뛰기