본문 바로가기

UE5

언리얼 2D 에서 Translucent 머티리얼을 사용하는 기초적인 방법

언리얼 2D 를 공부 중이다. 언리얼 게임으로 만들어진 HD2D 게임들을 보면서 언리얼 2D 게임 제작에도 관심이 생겼기 때문이다.

 

공부 중에 Masked 머티리얼을 Translucent 머티리얼로 교체하는 경우가 많다. 이유를 알기 위해 구글 + ai + 기존 나의 그래픽스 지식의 도움을 받았다.

 

아래 이미지 먼저 보면 오늘 할 이야기를 확실히 이해할 수 있다.

 

 

 

 

캐릭터는 정확하게 나무 뒤에 있다. 그렇다고 나무를 통과할수는 없다. 나무를 통과 못하는 것은 콜리전으로 조절한것이고 렌더링 과정에서 내 주 캐릭터인 저 빨간 모자 캐릭터는 왜 나무 뒤 쪽으로 자연스럽게 렌더링될까??

 

언리얼 프로젝트의 기본 셋팅 중에는 반투명 정렬 정책이라는 셋팅이 존재한다.

 

여기에서 Distance 는 기본 3d 게임에 어울리는 카메라와 물체의 거리를 기반으로 렌더링 된다. Pojected Z 는 카메라에 투영된 Z 값에 따라 렌더링 되는 것이다.

 

그럼 Sort Along Axis 는? 축을 기준으로 렌더링 순서가 정렬된다. 위의 이미지는 탑다운 게임의 이미지이고 나는 카메라를 위에서 내려다보도록 만들었다. 카메라의 투영방식도 정투영이다. 그러니까 "나무가 캐릭터보다 앞에 있습니다." 를 표현하려면 y 축을 기준으로 y 값이 더 아래(혹은 위)인 경우 더 앞에 있는 것으로 순서를 조정 시킨것이다. (이것은 y 축을 1로 기준할지 -1 로 할지에 따라 본인의 카메로 회전 값에 따라 당연히 다를 것이다.

 

그러나 다음과 같이 간단한 2d 프로젝트 설정을 하여도 우리의 캐릭터가 z 값이 나무 보다 더 크다면 항상 나무보다 앞에 존재한다. 

왜 그럴까?

나무 앞에 렌더링 되는 캐릭터

 

이것은 그래픽스의 깊이버퍼처럼 사용되는 언리얼의(Z-Buffer) 와 관련 있다.

Z-버퍼는 카메라에 투영되는 픽셀 마다 말 그대로 얼마나 깊이 멀리 떨어져있는지를 파악하기 위한 값이다.

그러니 카메라와 캐릭터가 동일선상에 있을 때 렌더링 파이프라인은 나무와 캐릭터(픽셀)의 z 버퍼를 비교하여 캐릭터가 더 앞에 있다면 순서에 상관없이 앞으로 렌더링 하는 것이다.

 

Masked 와 같은 머티리얼들은  z 버퍼를 변수로 가지기 때문에 이 z 버퍼를 이용한 렌더링이 적용된다. 그래서 언리얼 2d 에서는 이러한 z 버퍼 값이 없고 프로젝트의 정렬 기준에 맞춰져 렌더링하느 머티리얼이 있다. 그것이  Translucent 머티리얼 이다.

반투명 머티리얼들은 겹쳐져 보여져야하기 때문에 피벗을 기준으로 렌더링 되는 것이다.

 

반투명 머티리얼을 적용하자

 

따라서 나무나 빨간 모자 캐릭터의 기본 머티리얼을 반투명 재질로 변경하면 아래와 같이 자연스러운 렌더링이 되어진다.