프로그래밍 농장

유데미 스타터스 유니티 1기 취업 부트캠프 - 15주차 학습 일지 본문

STARTERS

유데미 스타터스 유니티 1기 취업 부트캠프 - 15주차 학습 일지

Tennessee201 2022. 10. 3.
728x90

 

이번주는 쉐이더와 타임라인,시네머신 카메라를 이용한 다양한 연출방식을 직접 구현해보는 시간을 가졌다. 


- 쉐이더 (Shader)

기본적인 공학용어에서의 '쉐이더'는 아래와 같다.   (출처 : https://celestialbody.tistory.com/5 )

쉐이더(Shader)란 3D 컴퓨터 그래픽에서 물체의 3차원 위치를 나타내는 x, y, z 좌표나, 색상, 텍스처, 조명 등 다양한 시각적 효과를 계산하여 최종적으로 화면에 출력할 픽셀의 위치와 색상을 계산하는 함수입니다.

Shader의 언어는 몇 가지의 종류가 존재하는데요,

그중 가장 유명하고 보편적으로 넓게 쓰이는 것이 HLSL (High Level Shading Language)

OpenGL에서 사용하는 언어인 GLSL (OpenGL Shading Language),

엔비디아가 마이크로 소프트와 협력하여 만든 언어인 CG(C for Graphics)가 있습니다.

직관적인 이름이네요 그래픽을 위한 C언어....

이 중 유니티가 사용하는 언어는 CG입니다.

하지만 URP부터는 HLSL을 사용하고 있죠. (언리얼도 HLSL)

뭐야 그럼 언어를 세 개나 배워야 해!?라고 생각하실 수 있지만 걱정하지 마세요.

이 세 가지 언어는 3D MAX 2016 버전과 3D MAX 2019 버전의 차이만큼 굉장히 유사하기 때문에

하나만 배우면 나머지는 쉽게 터득하실 수 있습니다.

 

유니티에서 쓰이는 유니티 쉐이더는 아래와 같은 의미를 가지고있다.   (출처 : https://celestialbody.tistory.com/5 )

 유니티 셰이더는 정통 코드가 아닌 스크립트로 이루어져 있습니다.

유니티에는 셰이더를 짜는 방법이 세 가지가 있는데요,


1. Shader Lab

2. Surface Shader

3. Vertex & Fragment Shader


입니다.
 

Shader Lab으로만 셰이더를 짤 경우 호환성은 짱이지만 할 수 있는 게 없습니다. 텍스쳐가 나오면.. 다행임

Vertex & Fragment Shader은 Surface Shader의 상위 버전으로 CG를 좀 더 디테일하게 다룹니다.

Surface Shader가 오토 모드라면Vertex & Fragment Shader은 수동이라는 느낌.

 

그리고 유니티 쉐이더는 비주얼 스크립팅과 같은 GUI 환경에서의 작업을 지원하는 Shader Graph가 존재한다. 

기존 비주얼 스크립팅을 통해 구현하였던 방식과 같이, 논리적인 설계를 통하여 로직을 완성할수있으며, 기능구현까지 가능하다. 

Shader Graph

이와 같이 유니티에서 제공하는 쉐이더를 통하여 우리가 기존 게임이나 영상에서 접하던 다양한 연출기능들을 구현할수있으며, 나아가 파티클과 결합시키게되면, 다양한 이펙트효과또한 구현할수있는 활용성이 무궁무진한 기능이다. 


 

- 시네머신 카메라 ( Cinemachine Camera ) 

시네머신은 영화 촬영을 하는 것처럼 씬을 촬영하여 게임 화면상에 비추어주는 유니티 패키지이다.

 

시네머신 추가하기

에셋 스토어 혹은 패키지 매니저에서 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 타깃을 바라볼 때의 따라가는 알고리즘 설정을 변경한다.

 


아래는 기존에 진행한 프로젝트에 시네머신의 다양한 기능들을 활용한 연출기능을 구현한 모습이다. 

 


 

 


유데미코리아 바로가기 : https://bit.ly/3b8JGeD

 

Udemy Korea - 실용적인 온라인 강의, 글로벌 전문가에게 배워보세요. | Udemy Korea

유데미코리아 AI, 파이썬, 리엑트, 자바, 노션, 디자인, UI, UIX, 기획 등 전문가의 온라인 강의를 제공하고 있습니다.

www.udemykorea.com

본 포스팅은 유데미-웅진씽크빅 취업 부트캠프 유니티 1기 과정 후기로 작성되었습니다.

 

#유데미, #유데미부트캠프, #취업부트캠프, #개발자부트캠프, #IT부트캠프, #부트캠프후기

728x90