[Unity] TimeLine, Render Pipeline

Lingtea_luv·2025년 5월 27일
0

Unity

목록 보기
20/30
post-thumbnail

TimeLine


유니티 상에서 카메라 제어와 효과를 사용해 연출 기법을 다뤄봤다면 이를 정해진 시간과 플로우에 원하는 장면을 연출할 수 있도록 하는 것이 타임라인이다.

TimeLine

타임라인은 Window 탭의 Sequencing - Timeline을 통해 신규 탭을 생성할 수 있다. 여기에 타임라인을 생성하기 위해서는 하이어라키 상에서 오브젝트를 선택할 필요가 있기에 먼저 빈 오브젝트를 하나 생성한 뒤, 해당 오브젝트에서 타임라인을 생성한다.

타임라인을 새롭게 생성할 경우 왼쪽에 다양한 track을 추가할 수 있는 tracklist가 있으며, 위 사진은 tracklist에 Cinemachine track과 Animation track, Signal track 추가한 상태이다.

각 track에는 속성에 맞는 오브젝트나 animator등을 드래그로 넣을 수 있고, 이를 원하는 프레임에 위치시켜 자연스러운 연출을 할 수 있다.

Animation Track

애니메이션 트랙은 특정 오브젝트의 애니메이션을 재생시키는 역할을 하는데, 중요한 것은 Track Offsets이다. 해당 옵션을 Apply Scene Offsets으로 설정해야 기존 위치에서 애니메이션을 재생한다.

Signal Track

시그널 트랙은 시그널을 설정하여 해당 시그널에 반응할 메서드를 등록하여 마치 이벤트처럼 활용할 수 있다. 예를 들어 타임라인 맨 앞에 생성한 시그널에는 PlayerController를 비활성화하도록 하여 플레이어가 컷씬 중에 이동할 수 없도록 설정하고, 타임라인 마지막에 생성한 시그널에는 다시 활성화하여 움직일 수 있도록 구현하는 것이 가능하다.

Playable Director

타임라인을 생성한 오브젝트를 선택하면 인스펙터 창에 Playable Director가 추가된 것을 확인할 수 있는데 Timeline에서 생성한 track이 Bindings에 업데이트된 것을 확인할 수 있다.

  • Playable : 재생시킬 타임라인
  • Play On Awake : 생성 시 재생 여부 설정

Render Pipeline


게임 내에서 봤던 3D 환경이 어떤 과정을 거쳐서 평면의 모니터 상으로 나타나게 되는지에 대해 알아보자. 렌더 파이프라인은 컴퓨터가 가상 공간에 놓인 물체를 모니터에 표현하는 과정을 의미하며, 대표적 API로 DirectX와 OpenGL이 있고 5단계 파이프라인을 표준으로 사용하고 있다.

  1. 입력 조립
  2. 정점 셰이더
  3. 레스터라이저
  4. 픽셀 셰이더
  5. 출력 병합

Pipeline Order

Input Assembler

3D 장면의 정보를 cpu가 GPU에게 전달하여 이를 기본 도형으로 조립하는 단계

Vertex Shader

정점 데이터의 공간 변환 수행, 3D 공간 상의 정점의 위치를 클립 공간으로 옮기는 단계

  • Modle transform : 모델 공간(local space)을 월드 공간(world space)으로 변환. 이 과정에서 translate, rotate, scale 변환을 수행
  • view transform : 월드 공간(world space)을 뷰 공간(view space)으로 변환. 뷰 공간은 카메라의 위치가 원점(0,0,0)으로 카메라가 바라보는 방향이 z축인 공간을 의미한다.
  • projection transform : 뷰 공간(view space)을 투영 공간(projection space)으로 변환. 카메라 기준의 정점 위치를 화면에 보이기 위한 정점 위치로 변환하며, 화면에 렌더링하는 영역을 절두체로 정의한다.
    • 직교 투영
    • 원근 투영

Rasterizer

정점 데이터의 프래그먼트를 구성하고 화면에 출력할 픽셀을 구성하는 단계. 프로그래밍이 불가능한 고정 파이프라인 단계로 그래픽 하드웨어의 자체 알고리즘으로 동작한다.

  • clipping : 절두체 영역에 포함되지 않은 기본 도형을 처리하는 단계
  • back-face culling : 기본 도형 중 렌더링이 되지 않은 후면을 찾아내 제거하는 단계. view 벡터와 기본 도형의 normal 벡터의 내적을 계산해 후면을 확인한다.
  • viewport transformation : 3D NDC 공간 상의 좌표를 2D 스크린 좌표로 변환하는 단계
  • scan transformation : 기본 도형을 통해 프래그먼트를 생성하고 이를 채우는 픽셀들을 찾아내는 단계. 각 픽셀마다 정점 데이터(위치, 색상, 법선, UV)들을 보간하여 할당한다.

Pixel Shader

래스터라이저 단계에서 구해진 기본 도형의 픽셀에 투명도, 조명과 그림자, 텍스쳐 색상을 입히는 단계.

  • texture : 기본 도형의 질감을 표현하는 이미지. 텍스쳐가 매핑되어있는 UV좌표를 사용하여 기본 보형의 그려질 픽셀에 색상을 추가한다.
  • normal map : 표면의 법선을 표현하는 방법. UV좌표로 매핑된 값으로 구성된 표면 벡터를 통해 조명, 그림자 표현을 진행하여 표면의 각도를 추가한다.
  • height map : 표면의 돌출부와 윤곽을 더 선명하게 하는데 사용한다.
  • light : 조명은 광원의 위치부터 기본 도형에 반사된 빛이 카메라에 들어오는 비율을 계산해 구현한다.

Output Merger

표시되는 픽셀을 결정하고 최종 픽셀 색을 혼합하기 위한 단계.

  • depth buffer : 픽셀이 다른 픽셀보다 앞에 있는지 판정하기 위해 사용하는 기법(Layer 개념)
  • alpha blending : 픽셀은 투명을 표현할 방법이 없기 때문에 뒤에 표현될 오브젝트의 색상을 섞는 방식으로 투명도를 표현한다.
  • stencil test : 오브젝트의 픽셀을 화면에 그리거나 그리지 않도록 판단하기 위한 마스크 용도로 사용.
profile
뚠뚠뚠뚠

0개의 댓글