-
[Unity] 시네머신 (Cinemachine) 기초Code/Unity 2021. 11. 24. 16:20
회사 업무로 사용하게 되면서 공부한 것을 정리한다.
시네머신이란?
시네머신은 영화 촬영을 하는 것처럼 씬을 촬영하여 게임 화면상에 비추어주는 유니티 패키지라고 생각하면 된다.
시네머신 추가하기
에셋 스토어 혹은 패키지 매니저에서 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; }
더 자세한 확인은 하단의 문서를 이용.
Class CinemachineVirtualCamera | Package Manager UI website
Class CinemachineVirtualCamera This behaviour is intended to be attached to an empty Transform GameObject, and it represents a Virtual Camera within the Unity scene. The Virtual Camera will animate its Transform according to the rules contained in its Cine
docs.unity3d.com
참고 사이트
https://docs.unity3d.com/Packages/com.unity.cinemachine@2.1/api/Cinemachine.html
Namespace Cinemachine | Package Manager UI website
Namespace Cinemachine Classes Property applied to AxisState. Used for custom drawing in the inspector. As a part of the Cinemachine Pipeline implementing the Noise stage, this component adds Perlin Noise to the Camera state, in the Correction channel of th
docs.unity3d.com
https://unity.com/kr/unity/features/editor/art-and-design/cinemachine
시네머신
Unity의 시네머신으로 복잡한 카메라의 움직임을 만드는 방법을 알아보세요. 타겟 트래킹, 구성, 블렌딩 및 자르기까지 쉽고 직관적으로 작업할 수 있습니다.
unity.com
https://docs.unity3d.com/Packages/com.unity.cinemachine@2.5/manual/CinemachineUsing.html
Using Cinemachine | Cinemachine | 2.5.0
Using Cinemachine Using Cinemachine requires a new way of thinking about working with cameras. For example, you might have invested heavily in carefully scripted camera behaviors. However, Cinemachine can give the same results, if not better, in less time.
docs.unity3d.com
https://github-wiki-see.page/m/eungyukm/UnityBase/wiki/12.-%EC%8B%9C%EB%84%A4%EB%A8%B8%EC%8B%A0
12. 시네머신 - eungyukm/UnityBase Wiki
Standby Update. Status가 Live 상태가 아닌 Standby 모드에서의 카메라의 업데이트 빈도를 설정합니다. Never는 항상 업데이트, Always는 Live일 때만 업데이트, Round Robine은 정기적으로 업데이트 합니다.
github-wiki-see.page
유니티에서 할 수 있는 에니메이션과 시네머신(Cinemachine) 알아보기
이 내용은 영상으로 공유되고 있습니다. 오늘은 유니티의 에니매이션에 대해 알아보겠습니다. 게임 내에서 캐릭터나 배경을 움직이는 에니매이션 작업을 어떻게 하는지.에니매이션 작업을 위
gamehanalab.com