Unity - 시네머신(Cinemachine) 기초

김도현·2023년 11월 30일
0

TIL

목록 보기
69/76

시네머신이란?

시네머신은 영화 촬영을 하는 것처럼 씬을 촬영하여 게임 화면상에 비추어주는 유니티 패키지라고 생각하면 됩니다.

  • 사용하기 위해선 패키지 매니저에서 시네머신을 다운 받아야 한다.
  • 컷신을 연출할 때 자주 사용됩니다.
  • 시네머신 소개 & 튜토리얼

시네머신 추가하기

에셋 스토어 혹은 패키지 매니저에서 Cinemachine이라고 검색하면 찾을 수 있다.

시네머신의 이해

시네머신은 기본적으로 유니티상의 카메라 오브젝트를 생성하지 않고 가상 카메라를 이용한다.

가상 카메라는 유니티상에 생성된 카메라를 오브젝트를 이용하여 다양한 각도에서 비추어줄 게임상의 씬을 보여주도록 도와준다. 또한 가상 카메라는 각각 서로에게 영향을 끼치지 않으며, 유니티 카메라에도 영향을 받지 않기 때문에 자유로운 카메라 구성이 가능하다.

그러므로, 가상 카메라로 할 수 있는 기능은 다음과 같다.

  • 유니티 카메라의 포지션 설정.
  • 유니티 카메라의 시선 설정.
  • 유니티 카메라에 노이즈 설정 혹은 이펙트나 쉐이크 설정.

가상 카메라는 유니티 카메라보다 소모하는 프로세스 등이 적으므로, 더욱 유용하게 활용할 수 있다.

시네머신에는 Virtual Camera (가상 카메라), FreeLook Camera, Blend List Camera, State-Driven Camera, ClearShot Camera, Dolly Camera, Target Group Camera, Mixing Camera, 2D Camera 가 있는데, 각각 활용도에 따라 다르게 사용할 수 있다.

시네머신 브레인 (Cinemachine Brain)

씬 안에 있는 시네머신의 모든 가상 카메라를 모니터링하는 오브젝트. 유니티 카메라에 붙여서 사용한다.

시네머신 브레인은 실질적으로 게임 화면상에 비추어줄 가상 카메라가 무엇인가를 설정하는데, 이때 가장 먼저 엑티브 되거나 우선순위가 있는 가상 카메라를 비추어준다.

시네머신의 종류

Virtual Camera (가상 카메라)

가장 기본이 되는 카메라로, 유니티 카메라를 조정하듯 자유롭게 활용이 가능하다.

FreeLook Camera

오브젝트를 중심으로 원형의 링을 생성하여 그 구간 안에서 타깃을 관찰하는 카메라.

Blend List Camera

할당된 버추얼 카메라들을 정해진 블랜드 방식에 따라 순차적으로 전환하는 카메라.

State-Driven Camera

타겟 에니메이션의 상태별로 활성화/비활성화 시킬 수 있는 카메라.

ClearShot Camera

플레이어의 충돌/트리거 상태에 따라 활성화/비활성화 시킬 수 있는 카메라.

Dolly Camera

트랙을 깔고 그 트랙을 따라 움직이는 카메라. Dolly Track 과 함께 쓰인다.

Target Group Camera

그룹으로 묶인 카메라들을 자동으로 계산해 한 화면에 보여주는 카메라.

Mixing Camera

Child Camera Weight 값에 따라 활성화/비활성화 해주는 카메라.

2D Camera

직교 뷰로 사용되는 카메라.

기본적인 시네머신 인스펙터 설명

가장 기본이 되는 Virtuam Camera (가상 카메라)를 기준으로 설명하며, 이외에는 깊게 활용해보지 않았으므로 간단한 설명만 남긴다.

  • Property : 카메라의 우선도.
  • Save During Play : 유니티상에서 플레이 중에 변경한 시네머신 설정을 저장한다.
  • Follow : 어떤 오브젝트를 따라다닐지 설정한다.
  • Look At : 어떤 오브젝트를 바라볼지 설정한다.
  • Standby Update : Live 상태가 아닌 카메라의 업데이트 빈도 설정.
    (Never - 항상 / Always - Live일때만 / Round Robine - 정기적으로)
  • Lens : 카메라 렌즈를 설정.
  • Transitions : 카메라 사이를 이동할 때 씬 전환 효과 설정.
  • Body : 씬 내부의 버추얼 카메라가 움직일 때 따라가는 알고리즘 설정을 변경한다.
  • Aim : 씬 내부의 버추얼 카메라가 Look At 타깃을 바라볼 때의 따라가는 알고리즘 설정을 변경한다.

위의 설명만 알아도 어느정도 시네머신 활용이 가능하다.

스크립트상에서 인스펙터에 접근하기

가상 카메라와 같은 것들은 그냥 컴포넌트로 가져올 수 있지만 컴포넌트 내부의 하위값 (예를 들어, Lens 안의 Field Of View 값 등...) 으로 접근하려면 컴포넌트에서 또 다시 컴포넌트를 가지고 와서 변경해야 한다.

using Cinemachine; //시네머신을 using 해줘야 활용이 시네머신을 스크립트로 가져올 수 있다.

public CinemachineVirtualCamera cinevirtual;

main()
{
    // 시네머신 자체에 접근하려면 이렇게 해도 된다.
    cinevirtual.m_Lens.FieldOfView = 60;
    
    // 하지만 transposer 의 follow offset에 접근하려면 아래와 같이 컴포넌트를 가져오는
    // 방식으로 가져와야 한다.
    cinevirtual.GetCinemachineComponent<CinemachineTransposer>().m_FollowOffset.y = 10;
}

그외 팁

시네머신을 더이상 참조하고 싶지 않을때나 우선순위를 낮추고 싶다면 시네머신 브레인에서 설정을 하던가 아니면 스크립트상에서 enabled = false;으로 사용하지 않으면 됩니다.

참조사이트

0개의 댓글