오르막길

[Unity] 유니티 시네머신 훑어보기: 다양한 카메라 연출을 위한 필수 기능 본문

문제 해결하기/Unity

[Unity] 유니티 시네머신 훑어보기: 다양한 카메라 연출을 위한 필수 기능

nanalyee 2025. 3. 31. 02:15

공부 배경

관제 시스템 가시화 업무 중, 건물 전체를 자연스럽게 보여주는 연출을 구현하기 위해 유니티 시네머신을 공부했습니다.

시네머신은 기본적으로 정말 유용한 기능도 많고, 스크립트와 함께 활용하면 무궁무진한 연출이 가능합니다.
필요한 상황에 따라 어떤 기능을 써야 할지 고민될 때 참고하기 위해 글을 작성하게 되었습니다.

 

출처

https://www.youtube.com/watch?v=2oOIp22Y11U

 

https://docs.unity3d.com/Packages/com.unity.cinemachine@2.8/manual/index.html

 

About Cinemachine | Cinemachine | 2.8.9

About Cinemachine Cinemachine is a suite of modules for operating the Unity camera. Cinemachine solves the complex mathematics and logic of tracking targets, composing, blending, and cutting between shots. It is designed to significantly reduce the number

docs.unity3d.com

위의 유니티 공식 데브윅스 영상과 유니티 시네머신 공식 문서를 바탕으로
유니티 21.3.16f1, 시네머신 2.8.9 버전에서 적용 가능하도록 수정이 되어있습니다.

 


목차
1. 시네머신
2. 시네머신 설치 및 준비
3. Cinemachine Virtual Camera
4. Free Look Camera
5. Timeline
6. Dolly Track (천장 바닥 등 레일 깔아서 카메라 움직이도록 하는, 그룹으로 타겟팅도 가능)
7. Follow Zoom
8. Noise (흔들기)
9. Impulse (충격 전달)
10. Group Target
11. Clear Shot (벽에 가릴때쯤에 탑뷰가 되고 이런 느낌의 전환)

 

1. 시네머신

카메라를 사용하기 위해 코드를 작성하지 않고도 복잡한 동작을 구현하는데 유용한 스마트 카메라 시스템

시네머신의 특징

  • 시네머신 이전에는 직접 키프레임을 제정하거나 코드 스크립팅 사용하느라 시간 오래 걸렸습니다.
  • 이후 시네머신이 등장하면서 코딩 없이 다양한 카마레 연출 조작 가능해졌습니다.
  • 피사체와 카메라 내 관계 쉽게 설정할 수 있습니다.
  • 렌즈를 통해 살펴보고 카메라 샷의 구도를 잡고 피사체 동작 따라가는 방식으로, 실제 촬영감독과 유사하게 연출됩니다.
  • 영화 같은 모션이나 씬 전환 기능 많습니다.
  • 간편하고, 유연하며, 비파괴적으로 원활한 카메라 성능을 지향합니다.
  • 가상카메라가 메인카메라를 컨트롤하는 방식이기 때문에 비교적 가볍게 돌아갑니다.
  • VR에서는 멀미 때문에 시네머신을 추천하지 않습니다.

다양한 시네머신 기능

  • 2D Free Look (2D 영역 제한)
  • 3D Free Look (3D 자유 시점 카메라, 벽에 통과되지 않는 카메라)
  • Aim Mode (TPS)
  • Clear Shot (벽에 가릴 때쯤에 탑뷰가 되고 이런 느낌의 전환)
  • Dolly Track (천장 바닥 등 레일 깔아서 카메라 움직이도록 하는, 그룹으로 타겟팅도 가능)
  • Noise (흔들기)
  • Impulse (충격 전달)
  • State Driven (애니메이션 상태에 따라서 카메라를 자동으로 노이즈 등의 변환)
  • Mixing Camera (멀리 가면 먼 풍경까지 보일 수 있도록)
  • Follow Zoom (멀리 있어도 가까이 보이도록 화각 조절)
  • 등의 다양한 기능이 있으며, 본문에서는 강의에서 진행된 Free Look, Timeline, Dolly Track, Follow Zoom, Noise, Impulse, Group Target, Clear Shot을 다룹니다.

 


 

2. 시네머신 설치 및 준비

1. 패키지 매니저에서 Cinemachine을 검색해 원하는 버전으로 install 합니다.
(강의에서는 2.6.0 버전으로 사용했고, 저는 2.8.9 버전을 사용했습니다.)

2. Cinemachine 패키지에 포함된 Sample Scene도 함께 다운로드합니다.

3. 연습해 볼 Scene을 세팅합니다.

Sample 폴더에 들어있는 Prefab을 활용합니다.

wasd 상호작용으로 움직일 수 있는 캐릭터
바닥

 


 

3. Cinemachine Virtual Camera

빈 게임 오브젝트에 추가하는 컴포넌트로, Unity 씬에서 가상 카메라

가상 카메라 추가

가상 카메라는 하이어라키에서 우클릭으로 추가합니다.

가상 카메라와 메인 카메라

가상카메라의 인스펙터창을 살펴봅시다.

  • 메인 카메라에는 Cinemachine Brain 컴포넌트가 들어있습니다.
  • 가상 카메라 Cinemachin Virtual Camera는 메인 카메라의 Cinemachine Brain을 컨트롤합니다.
  • 여러 대의 가상카메라를 설치해 메인 카메라(1개 권장)를 조절할 수 있습니다.
  • 실제 카메라가 여러 대 설치되는 것이 아니기 때문에 성능에 큰 영향을 미치지 않습니다.
  • Tip!
    시네머신에서는 Save During Play를 활성화해서 실행 도중에 수정한 것도 저장이 가능합니다.

Game Window Guides

  • 가이드 활성화 시키기

Game Window Guides를 활성화하고 Aim 토글을 눌러서 열면 아래 Zone이 보이는 가이드가 활성화됩니다.

  • Zone

  • 빨간 영역 : 금지 구역
  • 파란 영역 : Soft Zone
  • 아무 색도 없는 영역 : Dead Zone
  • 노란 점 : Tracked Object
  • 노란 점이 Dead Zone을 벗어나게 되면 카메라가 노란 점을 Dead Zone 영역으로 넣기 위해서 움직입니다.
  • 살짝 정도는 Dead Zone을 벗어날 수 있지만 금방 Dead Zone으로 돌아옵니다.
  • 빨간 영역은 노란 점이 절대 들어갈 수 없습니다.

우선순위

가상 카메라의 Priority를 조절해 보여주고 싶은 카메라를 선택할 수 있습니다.
여러 카메라가 있을 때 Priority가 높은 가상카메라를 보여줍니다.

Body의 Transposer과 Aim의 Composer 옵션

  • Body: 카메라가 대상(Tracked Object)을 따라가는 방식을 정의합니다.
    • Transposer: 카메라가 대상과 일정한 상대 위치를 유지하며 따라가는 방식입니다.
      • Damping 값을 조절하면 부드럽게 따라오는 효과 추가 가능합니다.
        • 값이 클수록 목표물의 속도에 따라 카메라가 멀어지고 목표물이 멈췄을 때 카메라의 원래위치로 복귀하는 데 오래 걸립니다.
      • Framing Transposer는 대상이 화면에서 일정한 위치를 유지하도록 합니다.
      • Orbital Transposer는 대상 주위를 회전하며 따라가는 기능을 제공합니다.
  • Aim: 카메라가 대상을 어떤 방식으로 바라볼지를 결정합니다.
    • Composer: 카메라가 대상(Tracked Object)을 따라가면서, 대상이 화면에서 특정 위치(Framing Position)를 유지하도록 조정합니다.
      • Dead Zone & Soft Zone을 활용해 카메라가 부드럽게 움직이도록 조정합니다.

 

기본 기능 활용하기 - 카메라가 캐릭터를 주시하게 만들고 싶어요

⇒ 실행 시 자동적으로 캐릭터를 트래킹 하는 것을 볼 수 있습니다.

 

기본 기능 활용하기 - 게임 캐릭터가 바라보는 방향을 많이 보여주고 싶어요

빈 오브젝트를 캐릭터 오브젝트 안에 생성합니다. (이름을 camTarget로 설정)

cam target 오브젝트를 캐릭터가 바라보는 전방 방향으로 옮깁니다.

가상 카메라의 Look At 대상을 cam target으로 설정합니다.

결과

  캐릭터가 바라보는 방향으로 좀 더 많이 보게 되었습니다.

 


 

4. Free Look Camera

3인칭 카메라를 제공하는 시네머신 컴포넌트

가상 카메라 추가

가상 카메라는 하이어라키에서 우클릭으로 추가합니다.

카메라가 바라볼 캐릭터 선택

Follow에는 따라갈 캐릭터를, Look At에는 바라볼 캐릭터의 상체 오브젝트를 넣습니다.

카메라 설정

  • Top, Middle, Bottom Rig으로 이루어져 있습니다.
  • 시점에 따라서 카메라가 전환됩니다.
    → 위에서 보면 Top Rig를, 아래서 보면 Bottom Rig로 전환됩니다.

  • Top - 가장 상단의 빨간 원 범위로 위에서 아래를 바라보는 시점으로 전환합니다.

  • Middle - 중간의 빨간 원 범위로 비슷한 눈높이에서 바라보는 시점으로 전환됩니다.

  • Bottom - 가장 하단의 빨간 원 범위로 아래에서 위를 바라보는 시점으로 전환됩니다.

  • 각 Rig별로 Body 및 Aim도 설정이 가능합니다.

 


 

5. Timeline

Unity의 편집기에서 사용할 수 있는 시간 기반 편집 도구로 (시네머신과 함께 사용 가능)
애니메이션, 사운드, 이펙트 등 게임 개발에 필요한 다양한 이벤트를 시각적으로 조정하고 편집 가능합니다.

Timeline 추가하기

빈 오브젝트를 추가합니다. (CamCtrl의 이름으로 설정했습니다)

CamCtrl을 선택한 상태에서 Timeline을 추가해 줍니다.
(Window > Sequencing > Timeline 위치에서 별도의 패키지 설치 없이 기본적으로 추가)

그럼 Timeline이라는 새로운 뷰가 생기는데, 가운데의 Create 버튼을 만들어 Timeline을 새로 생성해 줍니다.

Main Camera를 화살표 공간에 드래그해주고 Cinemachine Track을 추가해 줍니다.

 

Timeline에 가상 카메라 추가하기

필요한 가상 카메라 오브젝트를 타임라인에 드래그합니다.

원하는 대로 각 요소의 타임라인을 조절합니다 (마우스 드래그, 길이 조절 등)

실행해 보면 원하는 타이밍에 필요한 카메라로 전환되도록 설정이 가능합니다.

 

Tip!

카메라가 자연스럽게 블렌딩 되는 전환이 싫다면 Default Blend 속성을 수정해 봅시다.

 

Tip!

Custom Blends를 사용하면 카메라 간 전환을 개별적으로 커스텀할 수 있습니다.

 


 

6. Dolly Track

씬의 웨이포인트 배열로 가상 카메라를 배치하거나 애니메이션 화할 고정 코스를 지정할 수 있습니다.

Dolly Camera with Track 생성하기

가상 카메라와 트랙은 하이어라키에서 우클릭으로 추가합니다.

Way points 배열

  • Waypoints 배열로 Track의 경로를 지정할 수 있습니다.
  • 오브젝트를 움직이듯 각 포인트를 Scene에서 움직일 수도 있고, 각 배열값의 좌표값으로 조절도 가능합니다.
  • Looped를 활성화하면 트랙의 양끝을 연결할 수 있습니다.

Dolly Camera 설정하기

가상카메라의 Follow(따라갈 대상)와 Look At(바라볼 대상)을 지정합니다.

Body에서 Auto Dolly 속성을 활성화(Enabled) 해줍니다.

결과

   카메라가 지정된 트랙에서만 움직이며 타깃을 따라다닙니다.

 

Dolly Track with Cart 생성하기

가상 카메라와 카트는 하이어라키에서 우클릭으로 추가합니다.

Cart의 Track 설정하기

  • Dolly Camera Track과 동일하게 Waypoints 배열로 Track의 경로를 지정할 수 있습니다.
  • 안쪽은 Cart의 트랙을, 바깥쪽은 Camera의 트랙으로 설정해 봅니다.

Cart 설정하기

  • Path는 설정한 Dolly Cart의 트랙으로 설정합니다.
  • Speed는 원하는 속도를 설정합니다. ⇒ 설정된 속도만큼 트랙을 따라 움직이게 됩니다.
  • Cart에는 찍고 싶은 대상을 넣어봅니다. (기본 오브젝트인 Capsule을 자식으로 넣었습니다.)

  • Dolly Camera의 설정은 아래와 같이 Cart에 타고 있는 대상으로 변경합니다.

결과

  Capsule은 Dolly Cart Track을 따라서 움직입니다.
  Dolly 가상 카메라는 타깃인 Capsule을 따라가되, Dolly Camera Track을 따라서 움직입니다.

 


 

7. Follow Zoom

카메라와 타겟 포지션에 관계없이 화면에서 타겟 오브젝트를 일정한 크기로 유지하도록 렌즈의 FOV를 조정합니다.

카메라 설정

이번에는 기존에 생성된 가상 카메라로 설정해 봅시다.

Extensions의 Add Extension 옵션에서 Follow Zoom을 선택합니다.

그러면 밑에 Cinemachine Follow Zoom 컴포넌트가 생깁니다.

결과

   타깃이 카메라와 가깝든 멀든 확대되어 있는 상태로 보입니다.

 


 

8. Noise

카메라 흔들림을 시뮬레이션입니다.

Noise 추가하기

Cinemachine Virtual Camera 컴포넌트에서 Noise 속성을 none에서 Basic Multi Channel Perlin으로 변경합니다.

Noise Profile에서 원하는 속성을 선택합니다. (Handheld wideangle strong으로 해봅시다.)

결과

   가만히 있어도 손으로 강하게 흔들리는 카메라처럼 (수전증 느낌..?) 보입니다.

 


 

9. Impulse

충돌에 의한 카메라 흔들림을 시뮬레이션입니다.

Impulse 추가하기

Extensions의 Add Extension 옵션에서 Impulse Listnerer를 추가합니다.

강한 효과를 주고 싶다면 Gain을 더 높게 조절합니다.

 

공을 떨어뜨려서 진동을 주자

진동을 줄 원하는 오브젝트에 Rigidbody 컴포넌트를 추가합니다.

해당 Collider에는 Bounce 되는 Physic Metrial을 추가했습니다.
(Cinemachine 패키지 안에 기본으로 제공되는 Bouncy 1을 사용했습니다.)

Add Component를 통해 Cinemachine Collision Impulse Source를 추가합니다.

결과

    Sphere가 땅에 부딪힐 때마다 카메라가 진동 효과를 얻습니다.

Tip!

만약 카메라뿐만 아니라 주변 오브젝트도 진동 효과를 얻고 싶다면?

원하는 오브젝트에 Cinemachine Independent Impulse Listnerer를 추가합니다.

 


 

10. Group Target

여러 개의 게임 오브젝트를 단일 Look At 타깃으로 사용합니다.

Target Group Camera 생성하기

타깃 그룹은 하이어라키에서 우클릭으로 추가합니다.

Target 설정하기

타겟 배열에 타겟으로 삼을 오브젝트들을 넣습니다.

결과

  • 모든 타깃이 카메라 안에 들어오도록 설정됩니다.
  • Radius나 Weight을 조절해 중요도나 범위 등을 세부 조절 가능합니다.

 

Tip! 자석 카메라

Target Group을 활용한 Camera Magnet 기능으로 활용이 가능합니다. (Sample Scene 중 Camera Magnet 씬 참고)
시네머신에서 스크립트가 추가되면 위와 같이 무궁무진한 효과를 줄 수 있습니다.

 


 

11. Clear Shot

씬을 분석하여 타깃을 가리는 장애물, 최적의 타겟 거리 등을 확인 후 활성화할 최상의 자식을 선택하는 카메라입니다.

Clear Shot 테스트 환경 준비하기

타겟을 충분히 가릴 수 있는 장애물을 설치합니다. (Collider를 가져야 합니다.)

Clear Shot Camera 생성하기

가상 카메라는 하이어라키에서 우클릭으로 추가합니다.

Clear Shot이라는 오브젝트의 자식에 카메라가 생성되어 있습니다. 
+ 버튼으로 자식 카메라를 더 생성할 수 있습니다.

각 자식 카메라를 다양한 각도를 비추도록 설정해 두고 실행해 봅시다.

결과

  타깃이 가려질 때마다 보일 수 있는 카메라로 전환됩니다.

Tip! Clear Shot이 작동이 안 돼요

가장 부모의 Clear Shot에 add Extension으로 Cinemachine Collider를 넣고
자식들의 Cinemachine Collider를 비활성화해보면 정상적으로 작동됩니다!