[Unity] Cinemachine Clearshot 활용 간단한 팁

JongHa Shin (John)
Ward Games
Published in
11 min readFeb 27, 2021

유니티 Cinemachine의 Clearshot을 효과적으로 활용하는 방법!

작성자 : Jong Ha Shin (John)

  • 들어가며:
  • How-to guide :: 클리어샷 활용법
  • 마치며:

들어가며 :

안녕하세요! Ward Games에서 소프트웨어 엔지니어를 맡고 있는 John입니다. 이번 포스팅에서는 유니티 시네머신(Unity Cinemachine)의 클리어샷(Clear Shot)을 주제로 다뤄보겠습니다. 저희가 올 해 출시 예정인 게임 Zooports의 트레일러를 촬영할 때 유니티 시네머신을 적극적으로 활용하였는데요! 시네머신 기능 중 클리어 샷(Clear Shot)에 관한 간단한 팁을 공유하고자 합니다.

유니티 시네머신 (Unity Cinemachin)이란?

유니티 시네머신은 유니티에서 손쉽게 영상을 촬영하고 편집할 수 있는 에셋입니다. 시네머신의 주요 기능인 타임라인(Timeline)과 가상 카메라(Virtual Cam)을 이용해 누구든지 코딩 없이 전문가 못지 않은 퀄리티의 영상을 촬영할 수 있습니다. 타임라인 기능은 유니티로 구현한 컨텐츠를 시간에 따라 영상으로 촬영할 수 있게 해줍니다. 따라서 애니메이션, 트레일러를 촬영할 때 사용하면 굉장히 유용합니다. 가상 카메라는 타임라인에서 활용할 수 있는 다양한 촬영 기능을 제공합니다. 물론 인게임 플레이의 메인 카메라 기능으로 사용하기에도 충분합니다.

Unity Korea DEV Weeks : 타임라인(Timeline) & 시네머신 (Cinemachine)

How-to guide :: 클리어샷(ClearShot)활용법

시네머신 기능 중에서도 가상 카메라를 적극적으로 활용할 수 있는 클리어샷이 있습니다. 클리어샷은 여러 대의 가상 카메라가 있을 때, 씬 내부의 움직이는 오브젝트에 맞추어 시네머신이 가장 적절한 가상 카메라로 타깃을 촬영할 수 있도록 자동으로 변경해줍니다. 타임라인에서 사용할 때도 좋지만, 인게임 플레이에서 실시간으로 캐릭터를 여러 카메라로 촬영해야될 때도 유용합니다.

클리어샷 준비하기

클리어샷을 준비하는 방법은 간단합니다. 먼저 유니티 Package Manager에서 Cinemachine을 인스톨해줍니다. 아래에 예시로 나올 테스트 환경은 Cinemachine 패키지에서 샘플로 제공하고 있습니다.

시네머신 설치

설치 후 import 까지 끝났다면 유니티 엔진 상단 메뉴바에 Cinemachine 탭이 생긴 것을 확인할 수 있습니다. Cinemachine 탭을 눌러서 ClearShot을 선택해줍니다. (주의! : 메인카메라가 없으면 시네머신의 가상 카메라를 컨트롤하는 Cinemachine Brain 컴포넌트가 이후 만들어지는 메인 카메라에 자동으로 추가되지 않을 수 있습니다. Cinemachine Brain 컴포넌트가 메인 카메라에 없다면 추가해주세요.)

클리어샷 생성

클리어샷을 성공적으로 생성했다면 Hierarchy에는 다음과 같이 메인 카메라 옆에 가상카메라 아이콘, 그리고 ClearShot 게임 오브젝트가 생성된 것을 확인할 수 있습니다.

다음은 클리어샷이 활용할 가상 카메라를 추가해주는 작업을 해보겠습니다. ClearShot 오브젝트를 선택하면 CinemachineClearShot 컴포넌트 내부에 Virtual Camera Children 리스트를 찾을 수 있습니다. +- 로 가상 카메라를 리스트에 추가, 제거 가능하며 여기에 있는 가상 카메라들은 클리어샷이 컨트롤하게 됩니다. Dolly Track과 같이 특수한 촬영 기능을 가진 가상카메라도 클리어샷에서 활용이 가능합니다.

가상 카메라 생성과 촬영 타겟 세팅

다음으로는 클리어샷 컴포넌트의 옵션을 살펴보겠습니다.

우선 클리어샷에 포함된 가상카메라들이 촬영할 대상으로 Follow와 Look At을 지정할 수 있습니다. Follow는 지정한 대상을 따라 카메라가 이동하는 기능이며, Loot At은 카메라가 회전을 하면서 촬영 대상을 바라보게 하는 기능입니다. Default Blend는 가상 카메라간의 전환을 어떤 방식으로 할 지를 지정하는 옵션입니다. 위에 지정되어 있는 Ease In Out은 입력한 시간 동안 카메라와 카메라 사이의 전환이 부드럽게 이어집니다. 유니티 클리어샷 메뉴얼을 참조하셔서 여러가지 효과를 테스트해보시기 바랍니다.

다음은 클리어샷을 어떤 상황에서 쓰면 좋은 지에 대한 팁을 소개해드리겠습니다.

Tip 1 :: 장애물이 많은 공간에서 타깃이 보이도록 촬영해야할 때

아래는 유니티 패키지 매니저에서 시네머신을 다운로드 받으면 사용할 수 있는 샘플 프로젝트의 클리어샷 씬입니다.

만약에 캐릭터가 왼쪽 벽 뒤로 이동했을 때는 지금 촬영 중인 가상 카메라의 시야에서는 보이지 않을겁니다. 그렇다면 다른 카메라로 전환이나 카메라의 이동이 필요한데, 프로그래밍으로 카메라의 움직임을 커스터마이징 하기가 까다로울 수 있습니다.

시네머신의 가상 카메라는 카메라의 위치에서 촬영 타깃을 향해 일직선으로 빛을 쏴주는 방식의 레이캐스트(Raycast)를 합니다. 이 때 빛이 카메라가 지정한 레이어의 콜라이더(Collider)에 의해 막혔을 경우, 클리어샷 시스템은 아래와 같이 다른 가상 카메라들 중 대상을 더 잘 볼 수 있는 가상 카메라로 자연스럽게 변경해줍니다. 이 기능을 사용하기 위해서는 각 가상카메라에 Cinemachine Collider 컴포넌트가 붙어있어야 합니다. 클리어샷에서 가상 카메라를 생성한다면 자동으로 추가됩니다.

가상 카메라에 있는 시네머신 콜라이더 컴포넌트

여기서 Collider Against 항목에 레이캐스트를 인식할 레이어(Layer)를 지정해줍니다. 가상카메라에서 나온 레이캐스트가 해당 레이어에 막히게 됩니다. 이를 통해 타깃이 카메라의 시야에서 보이는지 클리어샷이 알 수 있습니다.

2번 카메라에서 1번 카메라로 변경되는 과정입니다.

1번 상단 가상 카메라
2번 사이드 가상 카메라 (Dolly Track)

배경 오브젝트 때문에 카메라의 시야가 제한적일 때, 공간에 맞게 캐릭터를 다각도로 촬영해야 할 때 이처럼 클리어샷을 활용할 수 있습니다.

Tip 2 :: 오픈된 공간에서 다각도로 촬영이 필요할 때

축구 경기장 같이 넓은 공간에서 뛰고 있는 캐릭터를 다양한 앵글에서 촬영할 수는 없을까요? 클리어샷을 활용하면 가능합니다. 이번에는 오픈된 공간에서 가상 카메라의 레이캐스트를 활용해 가상 카메라를 변경하는 방법거리를 활용해 가상 카메라를 변경하는 방법 두 가지를 알아보겠습니다.

4개의 클리어샷용 가상 카메라 배치

먼저 오픈된 공간에 4개의 가상 카메라를 배치하였습니다 (가운데는 클리어샷 오브젝트). 이런 상황이라면 어떤 가상 카메라로 촬영을 해야될까요?

카메라가 자동으로 전환되지 않는 모습

별도의 세팅을 진행하지 않는다면 이런 상황에서는 클리어샷이 가상 카메라를 자동으로 변경해주지않습니다. 캐릭터의 위치와 상관없이 현재 활성화된 가상 카메라 위치에서만 촬영되는 문제가 생깁니다.

첫 번째 해결 방법은 레이캐스트를 이용하는 방법입니다. 공간마다 특정한 카메라를 보다 정확히 활성화 하고 싶을 때 사용하면 좋습니다. 더미 오브젝트를 만들어서 콜라이더 컴포넌트를 추가한 후 마치 세트장처럼 구획을 나누어주면 됩니다.

공간을 구분할 수 있는 더미 콜라이더를 배치

캐릭터가 카메라의 시야에서 가려질 수 있도록 충분한 높이의 콜라이더를 만들어 줍니다.

여기서 주의할 점은 콜라이더의 Is Trigger 체크가 되면 카메라가 해당 콜라이더를 인식할 수 없기 때문에 체크를 하면 안됩니다. 하지만 Is Trigger 체크를 하지 않는다면 다른 오브젝트와 충돌이 일어나기 때문에 충돌을 수행할 수 없도록 칸막이들의 Layer를 통일해 준 뒤Project Setting -> Physics으로 가서 다른 레이어와의 충돌 설정을 모두 비활성화합니다.

칸막이 오브젝트 설정
Physics Layer세팅

마지막으로 각 가상카메라에 있는 CinemachineCollider에 상호작용할 콜라이더의 Layer를 추가해줍니다.

충돌을 감지할 Layer 설정

모든 설정이 완료되면 아래와 같이 캐릭터가 벽에 충돌하지도 않으면서 구획마다 자연스럽게 클리어샷이 가상 카메라 위치로 카메라를 이동 시켜주는 것을 확인할 수 있습니다. 축구 경기에서 골을 넣고 세레머니를 하기 위해 선수가 관중석으로 달려가면 관중석 시점의 카메라로 변경되는 모습 등에 활용할 수 있겠네요.

구획을 넘어가면 자동으로 카메라가 전환되는 모습

두 번째 방법은 각 카메라에서 촬영하고 싶은 타깃간의 거리를 지정해 그 거리 안에 타깃이 들어오면 변경해주는 방법이 있습니다. 지정한 거리에 가까워질 수록 해당 가상 카메라의 가중치가 높아지며 가중치가 가장 높은 가상 카메라로 클리어샷이 자동으로 바꿔줍니다.

각 가상 카메라의 Cinemachine Collider에 보면 맨 아래에 Shot Evaluation이 있습니다. 여기 Optimal Target Distance에 가상 카메라가 촬영하기에 최적화된 거리를 입력하면 됩니다. 저는 4개의 카메라에 각각 6을 입력하고 테스트를 진행하였습니다.

캐릭터와 카메라 사이의 거리를 비교했을 때, 첫 번째 가상 카메라가 두 번째 가상 카메라보다 거리가 6에 가까웠기 때문에 가중치가 더 높아져서 처음에는 첫 번째 카메라가 활성화되었습니다. 캐릭터가 이동하면서 두 번째 카메라와의 거리가 6에 가까워지고, 첫 번째 카메라와의 거리는 6보다 더 커지면서, 자연스럽게 두 카메라의 가중치에 변화가 생기고 클리어샷이 카메라를 전환시키는 모습을 확인할 수 있었습니다.

마지막으로 클리어샷에서는 각각의 가상 카메라가 동등한 권한을 가질 수도 있지만 우선 순위 값을 변경하면 더 많이 사용할 카메라를 지정해줄 수도 있습니다. CinemachineClearShot 컴포넌트의 가상 카메라 리스트에서 priority 값을 변경해 어느 카메라를 더 많이 사용할지 가중치를 주면 됩니다.

클리어샷 가상 카메라 리스트와 우선 순위 값들

이 설정을 통해 최적 촬영 거리와 포지션이 비슷한 카메라끼리도 메인과 서브를 구분해줄 수 있습니다.

마치며:

지금까지 유니티 시네머신의 강력한 촬영 기능 중 하나인 클리어샷 기능에 대해 알아보았습니다. 인 게임 영상과 트레일러를 촬영할 때 많은 도움이 되시길 바라며 포스팅을 마치도록 하겠습니다. 시네머신은 유니티에서 튜토리얼 컨텐츠가 잘 되어있습니다. 더 많은 영상을 확인해보시고 시네머신의 기능을 다양하게 사용해보시길 추천드립니다. 읽어주셔서 감사합니다.

레퍼런스

유니티 공식 홈페이지 클리어샷 튜토리얼 :: https://youtu.be/I9w-agFYZ3I

--

--