[Unity] 시네머신3 알아보기 (2) - ClearShot

MINO·2025년 5월 27일

2025-05-27


Sample Scene - 2.ClearShot

이번 Sample Scene 을 통해서는 여러 개의 자식 카메라 중 가장 뷰가 좋은 카메라를 자동으로 선택하여 활성화하는 Clear Shot 에 대해 알아볼 수 있었다.

Cameron 이 장애물에 가려질 때마다, 자동으로 CM telephoto, CM overhead, CM behind 로 전환하여 최적의 화면을 보여준다.


  • 캐릭터가 장애물 뒤에 가리거나 다른 카메라가 더 나은 시야를 확보하면 자동으로 전환
  • 각 카메라의 가시성(Obstruction) 점수를 기준으로 전환
  • 장애물 사이를 돌아다니느 캐릭터를 따라가는 TPS 등에서 활용된다.

Cinemachine ClearShot

HierarchyCinemachine ClearShotCinemachine Deoccluder

Sample Scene 에 구현된 CM ClearShot 객체에 Cinemachine ClearShot 과 Cinemachine Deoccluder 컴포넌트가 붙어 있었다.

먼저 Deoccluder 의 뜻부터 알아보자.
Occlusion Culling : 3D 장면에서 렌더링될 필요가 없는 객체를 제외시키는 기술,
Occluder : 오클루전 컬링에서, 카메라에 가려져 보이지않는 객체를 렌더링하지 않도록 하는 객체,


따라서 Deoccluder 는 그 반대로, 카메라가 대상을 가리는 장애물 (Occluder) 를 자동으로 피해 잘 보이게 만드는 것이다.


ClearShot

  • Cinemachine ClearShot 프로퍼티

    항목설명
    Default Target부모 ClearShot 카메라에 설정된 Tracking Target을 자식 카메라들이 자동 상속하게 할지 여부.
    체크하면 각 자식 카메라에 따로 Target을 지정하지 않아도 됨.
    Activate After현재 활성 자식 카메라를 최소한 유지해야 하는 시간(초).
    Min Duration한 자식 카메라가 활성화된 최소 지속 시간(초)을 지정.
    Randomize Choice같은 점수를 가진 복수의 자식 카메라 중에서 무작위로 선택할지를 설정.
    자연스러운 변화를 줄지, 우선순위에 따를지를 지정.
    Default BlendClearShot 가 카메라 전환 시 사용하는 기본 Blend 방식.
    Ex) Cut, Ease In Out 등
    Custom Blends자식 카메라 간 전환 시 특정 카메라 조합에 대해 개별적으로 전환 방식을 설정.
    Ex) A → B : Ease In, B → C : Cut 등
    Child CamerasClearShot 하위에 있는 Cinemachine Camera 들의 리스트.
    ClearShot은 이 중에서 시야가 가장 명확한 카메라를 자동으로 선택합니다.
    각 자식 카메라는 자체적으로 Follow, LookAt, Composition 설정을 가질 수 있음.

이 중, Activate After 과 Min Duration 의 설명이 잘 이해가 가지 않아 조금 더 찾아보았다.

항목Activate AfterMin Duration
목적새로운 카메라로 전환을 유예현재 선택된 자식 카메라가 최소한 유지되어야 하는 시간
동작 시점다른 자식 카메라가 더 나은 시야를 제공하더라도,
Activate After 동안 기다려야 함
이미 자식 카메라가 A 로 전환된 경우,
Min Duration 동안은 다른 카메라로 전환되지 않음
요약전환을 보류하는 시간한 번 선택된 카메라를 버티는 시간

카메라 전환이 자연스럽고 안정적으로 보이게 위해서는 해당 프로퍼티를 잘 조절하면 될 것 같다.


Cinemachine Deoccluder

Unity - Cinemachine Deoccluder

자식 카메라 객체가 아닌 ClearShot 객체에 Cinemachine Deoccluder 컴포넌트를 추가해야 한다.
ClearShot 객체에 Deoccluder 컴포넌트를 추가하여, 모든 자식 객체에 적용되며,
각 자식 객체가 해당 Deoccluder 를 별도의 컴포넌트를 가지고 있는 것처럼 동작하기 때문이다.

  • Cinemachine Deoccluder 프로퍼티

    항목설명
    Collide Against충돌 감지할 레이어 설정
    Ignore Tag무시할 태그 지정. 타겟의 태그로 설정하는 것이 좋음
    Transparent Layers해당 레이어의 객체는 대상의 시야를 가리지 않음
    Minimum Distance From Target타겟에 너무 가까워지는 것 방지
    Avoid Obstacles장애물을 회피할지 여부
    Shot Quality Evaluation품질 기반 점수 평가 사용
    └ Optimal Distance이상적인 카메라와 타겟 간의거리.
    0보다 큰 값을 지정하면, 이 거리만큼 떨어져 있을 때 최대 품질
    └ Near/Far Limit거리 제한에 따른 점수 감소
    └ Max Quality Boost고품질 촬영에는 일반 품질 대비 해당 비율만큼 품질 향상 적용

해당 프로퍼티를 통해 Sample Scene 의 Cinemachine Deoccluder 를 분석해보면

  • Ignore Tag - Player : 타겟은 Player Tag 를 가지고 있고,
  • Transparent Layers - TransparentFX : TransparentFX 레이어에 있는 오브젝트는 투명 처리,
  • Minimum Distance From Target - 0.5 : 카메라는 최소 0.5 까지만 접근이 가능
  • Avoid Obstacles - False : 장애물 자체를 피하진 않는다.
  • Optimal Distance - 10 : 타겟으로부터 10 거리일 때, 가장 이상적인 시야
  • Near / Far Limit - 5/30 : 5 이하로 가까워질수록 시야 점수가 감소, 30 초과하면 시야 점수 감소
  • Max Qaulity Boos - 0.2 : 오클루전(가림)이 전혀 없을 경우, 최대 0.2 의 품질 보너스

를 가진다.

이러한 시야 점수를 통해 우선순위를 매겨, Cinemachine ClearShot 이 상황에 맞게
가장 최적의 장면을 유저에게 제공하는 매커니즘이다.


profile
안녕하세요 게임 개발하는 MINO 입니다.

0개의 댓글